Compartir vía


Referencia a aplicaciones de Kubernetes en la aplicación de Azure mediante un ejemplo de aplicación administrada

En este artículo se proporcionan recursos técnicos y recomendaciones para ayudarle a hacer referencia a aplicaciones de Kubernetes en la aplicación de Azure mediante un ejemplo de aplicación administrada.

Limitaciones

La oferta de aplicación administrada no funcionará en un clúster existente. La oferta debe crear un nuevo clúster e instalar la aplicación en el clúster; de lo contrario, la oferta no se podrá implementar.

Requisitos previos

Debe configurar una oferta de Kubernetes en Azure Marketplace a la que le gustaría hacer referencia en la oferta de aplicación administrada. Puede consultar la guía de introducción para crear una oferta de Kubernetes.

La definición de la interfaz de usuario y la plantilla de ARM de esta oferta pueden ser realmente sencillas, ya que lo ampliará en la oferta de aplicación administrada.

En este ejemplo, empezamos desde la carpeta k8s-offer-azure-vote para crear la agrupación CNAB para la oferta base de Kubernetes.

Una vez publicada y disponible la oferta en Azure Marketplace en la fase de versión preliminar, puede empezar a crear la oferta de aplicación administrada.

Captura de pantalla de la visualización del vínculo de vista previa para mostrar la oferta de aplicaciones administradas.

Oferta de aplicación administrada

Comience con los archivos mainTemplate y createUIDefinition de esta carpeta.

En primer lugar, actualice la sección variables:

"variables": {
    "plan-name": "DONOTMODIFY",
    "plan-publisher": "DONOTMODIFY",
    "plan-offerID": "DONOTMODIFY",
    "releaseTrain": "DONOTMODIFY",
    "clusterExtensionTypeName": "DONOTMODIFY"
},

Para recuperar el valor directamente de la oferta de Kubernetes, siga la guía: Implementación de una aplicación de Azure Kubernetes mediante una plantilla de ARM.

Preparar mainTemplate.json

En este ejemplo mainTemplate, hemos agregado componentes adicionales para demostrar cómo agregar más componentes a la oferta de aplicación administrada.

Identidad asignada por el usuario:

{
    "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
    "name": "[concat(parameters('clusterResourceName'), '-identity')]",
    "apiVersion": "2023-01-31",
    "location": "[resourceGroup().location]"
},
  • Keyvault, directiva de acceso y secreto:
{
    "name": "[uniqueString(resourceGroup().id, resourceGroup().location, 'keyvault')]",
    "type": "Microsoft.KeyVault/vaults",
    "apiVersion": "2019-09-01",
    "location": "[resourceGroup().location]",
    "tags": {
        "displayName": "keyVault1"
    },
    "properties": {
        "enabledForDeployment": true,
        "enabledForTemplateDeployment": true,
        "enabledForDiskEncryption": true,
        "tenantId": "[subscription().tenantId]",
        "accessPolicies": [
            {
                "tenantId": "[subscription().tenantId]",
                "objectId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', concat(parameters('clusterResourceName'), '-identity')), '2023-01-31').principalId]",
                "permissions": {
                    "keys": [
                        "Get"
                    ],
                    "secrets": [
                        "List",
                        "Get",
                        "Set"
                    ]
                }
            }
        ],
        "sku": {
            "name": "standard",
            "family": "A"
        }
    },
    "resources": [
        {
            "type": "secrets",
            "name": "secretExample1",
            "apiVersion": "2016-10-01",
            "dependsOn": [
                "[resourceId('Microsoft.KeyVault/vaults', uniqueString(resourceGroup().id, resourceGroup().location, 'keyvault'))]"
            ],
            "properties": {
                "value": "secretValue"
            }
        }
    ],
    "dependsOn": [
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', concat(parameters('clusterResourceName'), '-identity'))]"
    ]
}
  • Asignar la identidad al nodo del clúster y depende de:
"type": "Microsoft.ContainerService/managedClusters",
"apiVersion": "2022-11-01",
"name": "[parameters('clusterResourceName')]",
"location": "[parameters('location')]",
"dependsOn": [
    "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', concat(parameters('clusterResourceName'), '-identity'))]"
],
"tags": {},
"sku": {
    "name": "Basic",
    "tier": "Free"
},
"identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', concat(parameters('clusterResourceName'), '-identity'))]": {}
    }
},

UIDefinition

En este ejemplo createUiDefinition, hemos quitado componentes adicionales que no son aplicables a la oferta de aplicación administrada.

Empaquetado de los archivos

Agregue los dos archivos mainTemplate.json y createUiDefinition.json a un archivo ZIP.

Creación de la oferta de aplicación administrada

Ahora que tiene los artefactos necesarios, puede seguir la guía: Creación de una oferta de aplicación de Azure en Azure Marketplace para crear la oferta de aplicación administrada.