マネージド アプリ サンプルを使用して 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 アプリケーション オファーを作成 マネージド アプリ オファーを作成できます。