クイック スタート:Helm を使用して Azure Kubernetes Service (AKS) で開発する
Helm は、Kubernetes アプリケーションのライフサイクルをインストールおよび管理するのに役立つオープン ソースのパッケージ化ツールです。 APT や Yum などの Linux パッケージ マネージャーと同様に、Helm を使用すると、構成済みの Kubernetes リソースのパッケージである Kubernetes チャートが管理されます。
このクイックスタートでは、Helm を使用して、AKS でアプリケーションをパッケージ化して実行します。 Helm を使った既存のアプリケーションのインストールについては、AKS での Helm を使用した既存のアプリケーションのインストールに関する記事をご覧ください。
前提条件
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、無料のアカウントを作成できます。
- Azure CLI または Azure PowerShell がインストールされている。
- Helm v3 がインストールされていること。
Azure Container Registry を作成する
Helm を使って AKS クラスターでアプリケーションを実行するには、コンテナー イメージを Azure Container Registry (ACR) に格納する必要があります。 レジストリの名前は Azure 内で一意でなければならず、英数字で 5 から 50 文字にする必要があります。 小文字のみを使用できます。 Basic SKU は、ストレージとスループットのバランスが取れた、開発目的のコスト最適化されたエントリ ポイントです。
az group create コマンドを使って Azure リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。
az group create --name myResourceGroup --location eastus
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
は既にインストールされています。
az aks install-cli コマンドを使って、
kubectl
をローカル環境にインストールします。az aks install-cli
az aks get-credentials コマンドを使用して、Kubernetes クラスターに接続するように
kubectl
を構成します。 次のコマンドは、myResourceGroup 内にある myAKSCluster という名前の AKS クラスターの資格情報を取得します。az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
サンプル アプリケーションのダウンロード
このクイックスタートでは、Azure Vote アプリケーションを使用します。
git clone
コマンドを使って、GitHub からアプリケーションをクローンします。git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
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 グラフを作成する
helm create
コマンドを使用して Helm グラフを生成します。helm create azure-vote-front
次の例で示すように、azure-vote-front/Chart.yaml を更新して、
https://charts.bitnami.com/bitnami
チャート リポジトリの redis チャートに対する依存関係を追加し、appVersion
をv1
に更新します。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
helm dependency update
コマンドを使って、Helm チャートの依存関係を更新します。helm dependency update azure-vote-front
azure-vote-front/values.yaml を次の変更で更新します。
- イメージの詳細、コンテナー ポート、デプロイ名を設定する redis セクションを追加します。
- フロントエンド部分を Redis のデプロイに接続するための backendName を追加します。
- image.repository を
<loginServer>/azure-vote-front
に変更します。 - image.tag を
v1
に変更します。 - service.type を LoadBalancer に変更します。
次に例を示します。
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 ...
azure-vote-front/templates/deployment.yaml に
env
セクションを追加し、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 グラフを実行する
helm install
コマンドを使用して、Helm グラフを使用してアプリケーションをインストールします。helm install azure-vote-front azure-vote-front/
サービスからパブリック 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
ブラウザーで
<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 のドキュメントを参照してください。
Azure Kubernetes Service