Freigeben über


Verweisen auf Kubernetes-Apps in der Azure-Anwendung mithilfe eines Beispiels für verwaltete Apps

Dieser Artikel enthält technische Ressourcen und Empfehlungen, die Ihnen dabei helfen, Kubernetes-Apps in der Azure-Anwendung mithilfe eines Beispiels für verwaltete Apps zu referenzieren.

Begrenzungen

Das Angebot der verwalteten App funktioniert nicht für einen vorhandenen Cluster. Das Angebot muss einen neuen Cluster erstellen und die Anwendung auf dem Cluster installieren, andernfalls schlägt das Angebot nicht bereit.

Voraussetzungen

Sie müssen ein Kubernetes-Angebot in Azure Marketplace einrichten, auf das Sie in Ihrem verwalteten App-Angebot verweisen möchten. Sie können sich auf den Leitfaden für erste Schritte beziehen, um ein Kubernetes-Angebot zu erstellen.

Ihre UI-Definition und ARM-Vorlage in diesem Angebot kann sehr einfach sein, da Sie dies in Ihrem verwalteten App-Angebot erweitern.

In diesem Beispiel beginnen wir mit dem Ordner "k8s-offer-azure-vote ", um das CNAB-Bündel für das Kubernetes-Basisangebot zu erstellen.

Sobald Ihr Angebot in der Vorschauphase in Azure Marketplace veröffentlicht und verfügbar ist, können Sie mit dem Erstellen Ihres angebots verwalteter Apps beginnen.

Screenshot des Vorschaulinks zum Anzeigen des Angebots für verwaltete Apps.

Verwaltetes App-Angebot

Beginnen Sie mit der mainTemplate und createUIDefinition-Dateien in diesem Ordner.

Aktualisieren Sie zunächst den Abschnitt "Variablen":

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

Um den Wert direkt aus dem Kubernetes-Angebot abzurufen, befolgen Sie den Leitfaden: Bereitstellen einer Azure Kubernetes-Anwendung mithilfe einer ARM-Vorlage.

Vorbereiten mainTemplate.json

In diesem Beispiel "mainTemplate" haben wir zusätzliche Komponenten hinzugefügt, um zu veranschaulichen, wie weitere Komponenten zum Angebot der verwalteten App hinzugefügt werden.

Benutzerseitig zugewiesene Identität:

{
    "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
    "name": "[concat(parameters('clusterResourceName'), '-identity')]",
    "apiVersion": "2023-01-31",
    "location": "[resourceGroup().location]"
},
  • Keyvault, Zugriffsrichtlinie und geheimer Schlüssel:
{
    "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'))]"
    ]
}
  • Zuweisen der Identität zum Knoten des Clusters und hängt von folgenden Faktoren ab:
"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 diesem Beispiel "createUiDefinition" wurden zusätzliche Komponenten entfernt, die nicht für das Angebot der verwalteten App gelten.

Erstellen eines Pakets aus den Dateien

Fügen Sie die beiden Dateien mainTemplate.json und createUiDefinition.json einer ZIP-Datei hinzu.

Erstellen des Angebots für verwaltete Apps

Nachdem Sie nun über die erforderlichen Artefakte verfügen, können Sie dem Leitfaden folgen: Erstellen Sie ein Azure-Anwendungsangebot in Azure Marketplace , um das Angebot der verwalteten App zu erstellen.