次の方法で共有


マネージド アプリ サンプルを使用して Azure アプリケーションで Kubernetes アプリを参照する

この記事では、マネージド アプリ サンプルを使用して Azure アプリケーションで Kubernetes アプリを参照するのに役立つ技術リソースと推奨事項について説明します。

制限事項

マネージド アプリ オファーは、既存のクラスターに対して機能しません。 オファーは新しいクラスターを作成し、クラスターにアプリケーションをインストールする必要があります。そうしないと、オファーはデプロイに失敗します。

前提条件

マネージド アプリ オファーで参照する Kubernetes オファリングを Azure Marketplace で設定する必要があります。 Kubernetes オファリングを 作成するには、作業の開始ガイド を参照してください。

このオファーの UI 定義と ARM テンプレートは、マネージド アプリ オファーで拡張するので、本当に簡単です。

この例では、k8s-offer-azure-vote フォルダーから始めて、ベース Kubernetes オファリングの CNAB バンドルを作成します。

プレビュー 段階でオファーが発行され、Azure Marketplace で利用できるようになったら、マネージド アプリ オファーの作成を開始できます。

マネージド アプリ オファーを表示するプレビュー リンクの表示のスクリーンショット。

マネージド アプリ オファー

このフォルダー内の mainTemplate ファイルと createUIDefinition ファイルから始めます。

まず、variables セクションを更新します。

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

Kubernetes オファリングから値を直接取得するには、「ガイド: ARM テンプレートを使用して Azure Kubernetes アプリケーションをデプロイする」に従います。

mainTemplate.jsonの準備

このサンプル mainTemplate では、マネージド アプリ オファーにコンポーネントを追加する方法を示す追加のコンポーネントを追加しました。

ユーザー割り当て ID:

{
    "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
    "name": "[concat(parameters('clusterResourceName'), '-identity')]",
    "apiVersion": "2023-01-31",
    "location": "[resourceGroup().location]"
},
  • Keyvault、アクセス ポリシー、シークレット:
{
    "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'))]"
    ]
}
  • クラスターのノードに ID を割り当てる方法は次のとおりです。
"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

このサンプル の createUiDefinition では、マネージド アプリ オファーに適用できない追加のコンポーネントを削除しました。

ファイルのパッケージ化

2 つのファイル mainTemplate.jsoncreateUiDefinition.json zip ファイルに追加します。

マネージド アプリ オファーを作成する

必要な成果物が用意できたので、「Azure Marketplace で Azure アプリケーション オファーを作成する」のガイドに従って、マネージド アプリ オファーを作成できます。