Udostępnij za pośrednictwem


Dokumentacja aplikacji Kubernetes w aplikacji platformy Azure przy użyciu przykładu aplikacji zarządzanej

Ten artykuł zawiera zasoby techniczne i zalecenia ułatwiające odwołanie do aplikacji Kubernetes w aplikacji platformy Azure przy użyciu przykładu aplikacji zarządzanej.

Ograniczenia

Oferta aplikacji zarządzanej nie będzie działać w odniesieniu do istniejącego zarządzanego klastra usługi AKS i klastra Kubernetes z obsługą usługi Azure Arc. Oferta musi utworzyć nowy zarządzany klaster usługi AKS i zainstalować aplikację w klastrze. W przeciwnym razie oferta zakończy się niepowodzeniem.

Wymagania wstępne

Musisz skonfigurować ofertę Kubernetes w witrynie Azure Marketplace, do której chcesz się odwołać w ofercie aplikacji zarządzanej. Zapoznaj się z przewodnikiem Wprowadzenie, aby utworzyć ofertę platformy Kubernetes.

Definicja interfejsu użytkownika i szablon usługi ARM w tej ofercie mogą być naprawdę proste, ponieważ rozszerzysz ją w ofercie aplikacji zarządzanej.

W tym przykładzie zaczniemy od folderu k8s-offer-azure-vote , aby utworzyć pakiet CNAB dla podstawowej oferty Kubernetes.

Po opublikowaniu oferty i udostępnieniu jej w witrynie Azure Marketplace w wersji zapoznawczej możesz rozpocząć tworzenie oferty aplikacji zarządzanej.

Zrzut ekranu przedstawiający wyświetlanie linku podglądu w celu wyświetlenia oferty aplikacji zarządzanej.

Oferta aplikacji zarządzanej

Zacznij od pliku mainTemplate i createUIDefinition w tym folderze.

Najpierw zaktualizuj sekcję zmiennych:

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

Aby pobrać wartość bezpośrednio z oferty Kubernetes, postępuj zgodnie z przewodnikiem: Wdrażanie aplikacji Usługi Azure Kubernetes przy użyciu szablonu usługi ARM.

Przygotowywanie mainTemplate.json

W tym przykładzie mainTemplate dodaliśmy dodatkowe składniki, aby pokazać, jak dodać więcej składników do oferty aplikacji zarządzanej.

Tożsamość przypisana przez użytkownika:

{
    "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
    "name": "[concat(parameters('clusterResourceName'), '-identity')]",
    "apiVersion": "2023-01-31",
    "location": "[resourceGroup().location]"
},
  • Usługa Keyvault, zasady dostępu i wpis tajny:
{
    "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'))]"
    ]
}
  • Przypisywanie tożsamości do węzła klastra i zależy od:
"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

W tym przykładzie createUiDefinition usunęliśmy dodatkowe składniki, które nie mają zastosowania do oferty aplikacji zarządzanej.

Pakowanie plików

Dodaj dwa pliki mainTemplate.json i createUiDefinition.json do pliku zip.

Tworzenie oferty aplikacji zarządzanej

Teraz, gdy masz wymagane artefakty, możesz postępować zgodnie z przewodnikiem: Tworzenie oferty aplikacji platformy Azure w witrynie Azure Marketplace w celu utworzenia oferty aplikacji zarządzanej.