Verwijzen naar Kubernetes-apps in de Azure-toepassing met behulp van een voorbeeld van een beheerde app

In dit artikel vindt u technische resources en aanbevelingen om te verwijzen naar Kubernetes-apps in de Azure-toepassing met behulp van een voorbeeld van een beheerde app.

Beperkingen

De aanbieding voor beheerde apps werkt niet voor een bestaand cluster. De aanbieding moet een nieuw cluster maken en de toepassing installeren op het cluster, anders kan de aanbieding niet worden geïmplementeerd.

Vereisten

U moet een Kubernetes-aanbieding instellen in Azure Marketplace waarnaar u wilt verwijzen in uw aanbieding voor beheerde apps. U kunt hier verwijzen naar de handleiding Aan de slag om een Kubernetes-aanbieding te maken.

Uw UI-definitie en ARM-sjabloon in deze aanbieding kunnen heel eenvoudig zijn, omdat u dat in uw aanbieding voor beheerde apps gaat uitbreiden.

In dit voorbeeld beginnen we vanuit de map k8s-offer-azure-vote om de CNAB-bundel te maken voor het basis-Kubernetes-aanbod.

Zodra uw aanbieding is gepubliceerd en beschikbaar is in Azure Marketplace in de preview-fase, kunt u beginnen met het maken van uw aanbieding voor beheerde apps.

Screenshot of preview link display to show managed app offer.

Aanbieding voor beheerde apps

Begin met de mainTemplate - en createUIDefinition-bestanden in deze map.

Werk eerst de sectie variabelen bij:

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

Volg deze handleiding om de waarde rechtstreeks op te halen uit de Kubernetes-aanbieding.

MainTemplate.json voorbereiden

In dit voorbeeld mainTemplate hebben we extra onderdelen toegevoegd om te laten zien hoe u meer onderdelen toevoegt aan de aanbieding voor beheerde apps.

Door de gebruiker toegewezen identiteit:

{
    "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
    "name": "[concat(parameters('clusterResourceName'), '-identity')]",
    "apiVersion": "2023-01-31",
    "location": "[resourceGroup().location]"
},
  • Sleutelkluis, toegangsbeleid en geheim:
{
    "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'))]"
    ]
}
  • De identiteit toewijzen aan het knooppunt van het cluster en is afhankelijk van:
"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

In dit voorbeeld createUiDefinition hebben we extra onderdelen verwijderd die niet van toepassing zijn op de aanbieding voor beheerde apps.

De bestanden verpakken

Voeg de twee bestanden mainTemplate.json toe en createUiDefinition.json aan een zip-bestand.

De aanbieding voor beheerde apps maken

Nu u de vereiste artefacten hebt, kunt u deze handleiding volgen om de aanbieding voor beheerde apps te maken.