クイック スタート:Helm を使用して Azure Kubernetes Service (AKS) で開発する

Helm は、Kubernetes アプリケーションのライフサイクルをインストールおよび管理するのに役立つオープン ソースのパッケージ化ツールです。 APTYum などの Linux パッケージ マネージャーと同様に、Helm を使用すると、構成済みの Kubernetes リソースのパッケージである Kubernetes チャートが管理されます。

このクイックスタートでは、Helm を使用して、AKS でアプリケーションをパッケージ化して実行します。 Helm を使った既存のアプリケーションのインストールについては、AKS での Helm を使用した既存のアプリケーションのインストールに関する記事をご覧ください。

前提条件

Azure Container Registry を作成する

Helm を使って AKS クラスターでアプリケーションを実行するには、コンテナー イメージを Azure Container Registry (ACR) に格納する必要があります。 レジストリの名前は Azure 内で一意でなければならず、英数字で 5 から 50 文字にする必要があります。 小文字のみを使用できます。 Basic SKU は、ストレージとスループットのバランスが取れた、開発目的のコスト最適化されたエントリ ポイントです。

  1. az group create コマンドを使って Azure リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。

    az group create --name myResourceGroup --location eastus
    
  2. az acr create コマンドを呼び出して、一意の名前の Azure Container Registry を作成します。 次の例では、Basic SKU を使って myhelmacr という名前の ACR を作成します。

    az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic
    

    出力は、次の要約された出力例のようになります。 後の手順で使うため、ACR に対する loginServer の値を記録しておきます。

    {
      "adminUserEnabled": false,
      "creationDate": "2023-12-26T22:36:23.998425+00:00",
      "id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myhelmacr",
      "location": "eastus",
      "loginServer": "myhelmacr.azurecr.io",
      "name": "myhelmacr",
      "networkRuleSet": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sku": {
        "name": "Basic",
        "tier": "Basic"
      },
      "status": null,
      "storageAccount": null,
      "tags": {},
      "type": "Microsoft.ContainerRegistry/registries"
    }
    

AKS クラスターを作成する

新しい AKS クラスターでは、お使いの ACR にアクセスしてコンテナー イメージをプルして実行する必要があります。

  • az aks create コマンドと --attach-acr パラメーターを使って AKS クラスターを作成し、クラスターに ACR へのアクセスを許可します。 次の例では、myAKSCluster という名前の AKS クラスターを作成し、myhelmacr ACR へのアクセスを許可します。 myhelmacr はお使いの ACR インスタンスの名前に置き換えてください。

    az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
    

ご利用の AKS クラスターに接続する

ローカル環境の Kubernetes クラスターに接続するには、Kubernetes のコマンド ライン クライアントである kubectl を使います。 Azure Cloud Shell を使用している場合、kubectl は既にインストールされています。

  1. az aks install-cli コマンドを使って、kubectl をローカル環境にインストールします。

    az aks install-cli
    
  2. az aks get-credentials コマンドを使用して、Kubernetes クラスターに接続するように kubectl を構成します。 次のコマンドは、myResourceGroup 内にある myAKSCluster という名前の AKS クラスターの資格情報を取得します。

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

サンプル アプリケーションのダウンロード

このクイックスタートでは、Azure Vote アプリケーションを使用します。

  1. git clone コマンドを使って、GitHub からアプリケーションをクローンします。

    git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
    
  2. cd コマンドを使って、azure-vote ディレクトリに移動します。

    cd azure-voting-app-redis/azure-vote/
    

サンプル アプリケーションをビルドして ACR にプッシュする

  • az acr build コマンドを使って、イメージをビルドして ACR にプッシュします。 次の例では、azure-vote-front:v1 という名前のイメージをビルドし、それを myhelmacr ACR にプッシュします。 myhelmacr はお使いの ACR インスタンスの名前に置き換えてください。

    az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
    

Note

また、Helm chart を ACR にインポートすることもできます。 詳細については、「Azure コンテナー レジストリに対する Helm グラフのプッシュおよびプル」を参照してください。

Helm グラフを作成する

  1. helm create コマンドを使用して Helm グラフを生成します。

    helm create azure-vote-front
    
  2. 次の例で示すように、azure-vote-front/Chart.yaml を更新して、https://charts.bitnami.com/bitnami チャート リポジトリの redis チャートに対する依存関係を追加し、appVersionv1 に更新します。

    Note

    このガイドに示されているコンテナー イメージのバージョンは、この例で動作するようにテストされていますが、利用可能な最新バージョンではない場合があります。

    apiVersion: v2
    name: azure-vote-front
    description: A Helm chart for Kubernetes
    
    dependencies:
      - name: redis
        version: 17.3.17
        repository: https://charts.bitnami.com/bitnami
    
    ...
    # This is the version number of the application being deployed. This version number should be
    # incremented each time you make changes to the application.
    appVersion: v1
    
  3. helm dependency update コマンドを使って、Helm チャートの依存関係を更新します。

    helm dependency update azure-vote-front
    
  4. azure-vote-front/values.yaml を次の変更で更新します。

    • イメージの詳細、コンテナー ポート、デプロイ名を設定する redis セクションを追加します。
    • フロントエンド部分を Redis のデプロイに接続するための backendName を追加します。
    • image.repository<loginServer>/azure-vote-front に変更します。
    • image.tagv1 に変更します。
    • service.typeLoadBalancer に変更します。

    次に例を示します。

    replicaCount: 1
    backendName: azure-vote-backend-master
    redis:
      image:
        registry: mcr.microsoft.com
        repository: oss/bitnami/redis
        tag: 6.0.8
      fullnameOverride: azure-vote-backend
      auth:
        enabled: false
    
    image:
      repository: myhelmacr.azurecr.io/azure-vote-front
      pullPolicy: IfNotPresent
      tag: "v1"
    ...
    service:
      type: LoadBalancer
      port: 80
    ...
    
  5. azure-vote-front/templates/deployment.yamlenv セクションを追加し、redis のデプロイの名前を渡します。

    ...
          containers:
            - name: {{ .Chart.Name }}
              securityContext:
                {{- toYaml .Values.securityContext | nindent 12 }}
              image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
              imagePullPolicy: {{ .Values.image.pullPolicy }}
              env:
              - name: REDIS
                value: {{ .Values.backendName }}
    ...
    

Helm グラフを実行する

  1. helm install コマンドを使用して、Helm グラフを使用してアプリケーションをインストールします。

    helm install azure-vote-front azure-vote-front/
    
  2. サービスからパブリック IP アドレスが返されるまで数分かかります。 kubectl get service コマンドと --watch 引数を使用して、進行状況を監視します。

    kubectl get service azure-vote-front --watch
    

    サービスの準備ができると、EXTERNAL-IP の値が <pending> から IP アドレスに変わります。 CTRL+C キーを押して、kubectl ウォッチ プロセスを停止します。

      NAME               TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)        AGE
      azure-vote-front   LoadBalancer   10.0.18.228   <pending>       80:32021/TCP   6s
      ...
      azure-vote-front   LoadBalancer   10.0.18.228   52.188.140.81   80:32021/TCP   2m6s
    
  3. ブラウザーで <EXTERNAL-IP> を使用して自分のアプリケーションのロード バランサーに移動して、サンプル アプリケーションを確認します。

クラスターを削除する

  • az group delete コマンドを使って、リソース グループ、AKS クラスター、Azure コンテナー レジストリ、ACR に格納されているコンテナー イメージ、関連するすべてのリソースを削除します。--yes パラメーターを指定して削除を確認し、--no-wait パラメーターを指定して操作の完了を待たずにコマンド プロンプトに戻ります。

    az group delete --name myResourceGroup --yes --no-wait
    

Note

システム割り当てマネージド ID (このクイックスタートでの既定の ID オプション) を使って AKS クラスターを作成した場合、ID はプラットフォームによって管理されるので、削除する必要はありません。

サービス プリンシパルを使って AKS クラスターを作成した場合は、クラスターを削除してもサービス プリンシパルは削除されません。 サービス プリンシパルの削除については、AKS のサービス プリンシパルの考慮事項と削除に関する記事をご覧ください。

次のステップ

Helm の使用方法の詳細については、Helm のドキュメントを参照してください。