Référencer des applications Kubernetes dans l’application Azure à l’aide d’un exemple d’application managée
Cet article fournit des ressources techniques et des recommandations pour vous aider à référencer des applications Kubernetes dans l’application Azure à l’aide d’un exemple d’application managée.
Limites
L’offre d’application managée ne fonctionnera pas sur un cluster AKS managé existant et un cluster Kubernetes avec Azure Arc. L’offre doit créer un cluster AKS managé et installer l’application sur le cluster ; sinon, l’offre ne peut pas être déployée.
Prérequis
Vous devez configurer une offre Kubernetes dans Place de marché Azure que vous souhaitez référencer dans votre offre d’application managée. Vous pouvez consulter le guide de prise en main pour créer une offre Kubernetes.
Votre définition d’interface utilisateur et votre modèle ARM dans cette offre peuvent être très simples, car vous allez l’étendre dans votre offre d’application managée.
Dans cet exemple, nous commençons à partir du dossier k8s-offer-azure-vote pour créer le bundle CNAB pour l’offre Kubernetes de base.
Une fois votre offre publiée et disponible dans Place de marché Azure en préversion, vous pouvez commencer à créer votre offre d’application managée.
Offre d’application managée
Commencez par les fichiers mainTemplate et createUIDefinition dans ce dossier.
Tout d’abord, mettez à jour la section variables :
"variables": {
"plan-name": "DONOTMODIFY",
"plan-publisher": "DONOTMODIFY",
"plan-offerID": "DONOTMODIFY",
"releaseTrain": "DONOTMODIFY",
"clusterExtensionTypeName": "DONOTMODIFY"
},
Pour récupérer la valeur directement à partir de l’offre Kubernetes, suivez le guide : Déployer une application Azure Kubernetes à l’aide d’un modèle ARM.
Préparer mainTemplate.json
Dans cet exemple mainTemplate, nous avons ajouté des composants supplémentaires pour montrer comment ajouter d’autres composants à l’offre d’application managée.
Identité affectée par l’utilisateur :
{
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"name": "[concat(parameters('clusterResourceName'), '-identity')]",
"apiVersion": "2023-01-31",
"location": "[resourceGroup().location]"
},
- Coffre de clés, stratégie d’accès et secret :
{
"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'))]"
]
}
- L’attribution de l’identité au nœud du cluster dépend des éléments suivants :
"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
Dans cet exemple createUiDefinition, nous avons supprimé des composants supplémentaires qui ne sont pas applicables à l’offre d’application managée.
Empaqueter les fichiers
Ajoutez les deux fichiers mainTemplate.json
et createUiDefinition.json
à un fichier zip.
Créer l’offre d’application managée
Maintenant que vous avez les artefacts requis, vous pouvez suivre le guide : Créer une offre d’application Azure dans Place de marché Azure pour créer l’offre d’application managée.