Helm と Kustomize のサポート

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 リリースがデプロイされた状態に移行するまで待機します
  • デプロイされたリソース内で定義されている関連するサービスとイングレスを一覧表示します

Helm デプロイ出力のスクリーンショット。

Kustomize のサポートを有効にする

Kustomize のサポートを有効にするには、Kustomize CLI がインストールされていることを確認します。 azd コマンドを使用して、azd config Kustomize 機能フラグを有効にします。

azd config set alpha.aks.kustomize on

Kustomize の構成とデプロイ

Kustomize 機能を使用すると、Kubernetes デプロイの一部として Kustomize を使用でき、次の機能が提供されます。

  • basevariantの構成をサポートします
  • edits デプロイの前に実行できる
  • configMapGeneratorazd環境

次の 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

異なるバリエーションにデプロイするためにオーバーレイを使用する

このユース ケースは、通常、 devtestprodなど、さまざまなステージまたは環境にデプロイするためのカスタム構成を使用します。 次の例では、ユーザーは 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