次の方法で共有


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

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

制限事項

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

前提条件

マネージド アプリ オファーで参照する 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.json を追加し、zip ファイルに createUiDefinition.json します。

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

アーティファクトが必要になったので、ガイドに従って、 Azure Marketplace で Azure アプリケーション オファーを作成 マネージド アプリ オファーを作成できます。