Azure Developer CLI では、Helm と Kustomize のサポートが提供され、Azure Kubernetes Service (AKS) へのプロビジョニングとデプロイ プロセスが改善されます。 Helm と Kustomize は、Kubernetes アプリケーションの構成と管理に役立つツールです。 前のセクションでは、 azd テンプレートでこれらのツールのサポートを有効にしてカスタマイズする方法について説明します。
Helm のサポートを有効にする
Helm のサポートを有効にするには、Helm CLI がインストールされていることを確認します。
azd コマンドを実行して、azd config helm 機能フラグを有効にします。
azd config set alpha.aks.helm on
Helm の構成とデプロイ
azd Helm サポートを使用すると、 azd サービスごとにインストールする Helm チャートの一覧を定義できます。
helm ファイルの k8s 構成セクションと azure.yaml 構成セクションを使用して、インストールする Helm リポジトリまたはリリースの一覧を定義します。
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
argocd:
host: aks
k8s:
namespace: argo
service:
name: argocd-server
helm:
repositories:
- name: argo
url: https://argoproj.github.io/argo-helm
releases:
- name: argocd
chart: argo/argo-cd
version: 5.51.4
jupyterhub:
host: aks
k8s:
namespace: jupyterhub
service:
name: proxy-public
helm:
repositories:
- name: jupyterhub
url: https://hub.jupyter.org/helm-chart/
releases:
- name: jupyterhub
chart: jupyterhub/jupyterhub
version: 3.1.0
azd deploy コマンドは、helm セクションを使用して次のタスクを処理します。
- 参照されている Helm リポジトリを追加したり、それらを更新したりします
- 参照されている Helm グラフをインストールします
- Helm リリースがデプロイされた状態に移行するまで待機します
- デプロイされたリソース内で定義されている関連するサービスとイングレスを一覧表示します
Kustomize のサポートを有効にする
Kustomize のサポートを有効にするには、Kustomize CLI がインストールされていることを確認します。
azd コマンドを使用して、azd config Kustomize 機能フラグを有効にします。
azd config set alpha.aks.kustomize on
Kustomize の構成とデプロイ
Kustomize 機能を使用すると、Kubernetes デプロイの一部として Kustomize を使用でき、次の機能が提供されます。
-
baseとvariantの構成をサポートします -
editsデプロイの前に実行できる -
configMapGeneratorとazd環境
次の azure.yaml セクションを使用して Kustomize 機能を構成します。
-
dir: サービスから、kustomization.yamlファイルを含む Kustomize ディレクトリへの相対パス。- 環境変数の置換をサポートします。
-
edits: デプロイ前に適用される編集式の配列- 環境変数の置換をサポート
-
env: デプロイ前に生成されたキーと値のペアのマップ- マップ値は環境変数の置換をサポートします
活用事例
azd では、次の Kustomize ユース ケースがサポートされています。
K8s マニフェストをデプロイする
次の構成では、kubectl apply -k <dir>を含むマニフェスト フォルダーを指すkustomization.yaml コマンドを実行します。
# azure.yaml
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: aks
k8s:
kustomize:
dir: ./kustomize/base
異なるバリエーションにデプロイするためにオーバーレイを使用する
このユース ケースは、通常、 dev、 test 、 prodなど、さまざまなステージまたは環境にデプロイするためのカスタム構成を使用します。 次の例では、ユーザーは kustomize ディレクトリ内の ${AZURE_ENV_NAME} 環境変数を指定して、既定のオーバーレイ規則として azd 環境を自動的に使用できます。
# azure.yaml
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: aks
k8s:
kustomize:
dir: ./kustomize/overlays/${AZURE_ENV_NAME}
デプロイ前に kustomization.yaml を変更する
kustomization.yamlを変更する一般的なユース ケースは、デプロイの一部として使用されるコンテナー イメージの名前/バージョンを変更することです。
次の例では、 edits 構成を指定し、有効な kustomize edit ... コマンドを設定します。
azd は、 edit コマンド内で参照されるすべての環境変数を自動的に補間します。
# azure.yaml
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: aks
k8s:
kustomize:
dir: ./kustomize/overlays/${AZURE_ENV_NAME}
edits:
- set image todo-api=${SERVICE_API_IMAGE_NAME}
構成マップ内 azd 環境変数を使用する
構成マップまたはシークレットは、K8s クラスターを構成する上で重要です。
kustomize では環境変数の直接置換がサポートされていないため、configMapGenerator ファイルで kustomize .envを使用できます。
kustomize構成セクションでは、1 つまたは複数のキーと値のペアを定義できるenv セクションがサポートされています。 この構成により、.envで使用できる一時configMapGenerator ファイルが kustomization ディレクトリ内に自動的に生成されます。
次の構成では、指定したキーと値のペアを持つ .env が作成されます。
# azure.yaml
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: aks
k8s:
kustomize:
dir: ./kustomize/overlays/${AZURE_ENV_NAME}
edits:
- set image todo-api=${SERVICE_API_IMAGE_NAME}
env:
AZURE_AKS_IDENTITY_CLIENT_ID: ${AZURE_AKS_IDENTITY_CLIENT_ID}
AZURE_KEY_VAULT_ENDPOINT: ${AZURE_KEY_VAULT_ENDPOINT}
APPLICATIONINSIGHTS_CONNECTION_STRING: ${APPLICATIONINSIGHTS_CONNECTION_STRING}
configMapGeneratorは、指定された名前を持つ K8s 構成マップを生成し、.env ファイル内で参照されるすべてのキーと値のペアを含みます。
# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
- ingress.yaml
configMapGenerator:
- name: todo-web-config
envs:
- .env