Fazer referência a aplicativos Kubernetes no aplicativo do Azure usando um exemplo de aplicativo gerenciado
Este artigo fornece recursos técnicos e recomendações para ajudá-lo a fazer referência a aplicativos Kubernetes no aplicativo do Azure usando um exemplo de aplicativo gerenciado.
Limitações
A oferta de aplicativo gerenciado não funcionará em um cluster AKS gerenciado existente e cluster Kubernetes habilitado para Azure Arc. A oferta precisa criar um novo cluster AKS gerenciado e instalar o aplicativo no cluster, caso contrário, a oferta não será implantada.
Pré-requisitos
Você precisa configurar uma oferta do Kubernetes no Azure Marketplace que você gostaria de referenciar em sua oferta de aplicativo gerenciado. Você pode consultar o guia de Introdução para criar uma oferta do Kubernetes.
Sua definição de interface do usuário e modelo ARM nesta oferta podem ser muito simples, pois você estenderá isso em sua oferta de aplicativo gerenciado.
Neste exemplo, começamos a partir da pasta k8s-offer-azure-vote para criar o pacote CNAB para a oferta base do Kubernetes.
Depois que sua oferta for publicada e estiver disponível no Azure Marketplace no estágio de visualização, você poderá começar a criar sua oferta de aplicativo gerenciado.
Oferta de aplicativos gerenciados
Comece com os arquivos mainTemplate e createUIDefinition nesta pasta.
Primeiro, atualize a seção de variáveis:
"variables": {
"plan-name": "DONOTMODIFY",
"plan-publisher": "DONOTMODIFY",
"plan-offerID": "DONOTMODIFY",
"releaseTrain": "DONOTMODIFY",
"clusterExtensionTypeName": "DONOTMODIFY"
},
Para recuperar o valor diretamente da oferta do Kubernetes, siga o guia: Implantar um aplicativo Kubernetes do Azure usando um modelo ARM.
Prepare-mainTemplate.json
Neste exemplo mainTemplate, adicionamos componentes extras para demonstrar como adicionar mais componentes à oferta de aplicativo gerenciado.
Identidade atribuída pelo utilizador:
{
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"name": "[concat(parameters('clusterResourceName'), '-identity')]",
"apiVersion": "2023-01-31",
"location": "[resourceGroup().location]"
},
- Keyvault, política de acesso e segredo:
{
"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'))]"
]
}
- A atribuição da identidade ao nó do cluster 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
Neste exemplo createUiDefinition, removemos componentes extras que não são aplicáveis à oferta de aplicativo gerenciado.
Empacote os ficheiros
Adicione os dois arquivos mainTemplate.json
e createUiDefinition.json
a um arquivo zip.
Criar a oferta de aplicativo gerenciado
Agora que você tem os artefatos necessários, você pode seguir o guia: Criar uma oferta de aplicativo do Azure no Azure Marketplace para criar a oferta de aplicativo gerenciado.