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 de AKS administrado existente y en un clúster de Kubernetes habilitado para Azure Arc. La oferta debe crear un nuevo clúster de AKS administrado 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.
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.