マネージド アプリ サンプルを使用して 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.json
を createUiDefinition.json
zip ファイルに追加します。
マネージド アプリ オファーを作成する
必要な成果物が用意できたので、「Azure Marketplace で Azure アプリケーション オファーを作成する」のガイドに従って、マネージド アプリ オファーを作成できます。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示