Referera till Kubernetes-appar i Azure-programmet med hjälp av ett exempel på hanterad app

Den här artikeln innehåller tekniska resurser och rekommendationer som hjälper dig att referera till Kubernetes-appar i Azure-programmet med hjälp av ett exempel på en hanterad app.

Begränsningar

Erbjudandet för hanterade appar fungerar inte mot ett befintligt hanterat AKS-kluster och Azure Arc-aktiverade Kubernetes-kluster. Erbjudandet måste skapa ett nytt hanterat AKS-kluster och installera programmet i klustret, annars kan erbjudandet inte distribueras.

Förutsättningar

Du måste konfigurera ett Kubernetes-erbjudande på Azure Marketplace som du vill referera till i ditt erbjudande för hanterade appar. Du kan läsa Komma igång guide för att skapa ett Kubernetes-erbjudande.

Din användargränssnittsdefinition och ARM-mall i det här erbjudandet kan vara väldigt enkel, eftersom du utökar den i ditt erbjudande för hanterade appar.

I det här exemplet börjar vi från mappen k8s-offer-azure-vote för att skapa CNAB-paketet för kubernetes-baserbjudandet.

När ditt erbjudande har publicerats och är tillgängligt på Azure Marketplace i förhandsversionsfasen kan du börja skapa ditt erbjudande för hanterade appar.

Skärmbild av visning av förhandsgranskningslänk för att visa erbjudande för hanterad app.

Erbjudande för hanterad app

Börja med filerna mainTemplate och createUIDefinition i den här mappen.

Uppdatera först avsnittet variabler:

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

Om du vill hämta värdet direkt från Kubernetes-erbjudandet följer du guiden: Distribuera ett Azure Kubernetes-program med hjälp av en ARM-mall.

Förbered mainTemplate.json

I det här exemplet mainTemplate har vi lagt till extra komponenter för att visa hur du lägger till fler komponenter i erbjudandet för den hanterade appen.

Användartilldelad identitet:

{
    "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
    "name": "[concat(parameters('clusterResourceName'), '-identity')]",
    "apiVersion": "2023-01-31",
    "location": "[resourceGroup().location]"
},
  • Keyvault, åtkomstprincip och hemlighet:
{
    "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'))]"
    ]
}
  • Tilldela identiteten till klustrets nod och beror på:
"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

I det här exemplet createUiDefinition har vi tagit bort extra komponenter som inte är tillämpliga för erbjudandet för den hanterade appen.

Paketera filerna

Lägg till de två filerna mainTemplate.json och createUiDefinition.json till en zip-fil.

Skapa erbjudandet för hanterad app

Nu när du har de artefakter som krävs kan du följa guiden: Skapa ett Azure-programerbjudande på Azure Marketplace för att skapa erbjudandet för hanterade appar.