Share via


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 existant. L’offre doit créer un cluster 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.

Screenshot of preview link display to show managed app offer.

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.