適用対象: Windows Server 上の AKS
この記事では、Helm を構成して使用して、Windows Server 上の AKS の Kubernetes クラスターに Kubernetes アプリケーションをインストールおよび管理する方法について説明します。
Helm は、Kubernetes アプリケーションのライフサイクルをインストールおよび管理するのに役立つオープン ソースのパッケージ化ツールです。 APT や Sum などの Linux パッケージ マネージャーと同様に、Helm は、事前構成済みの Kubernetes リソースのパッケージである Kubernetes グラフを管理します。
開始する前に
次の要件が設定されていることを確認します。
- Kubernetes クラスター少なくとも 1 つの Linux ワーカー ノードが稼働しています。
- クラスターを指すローカル
kubectl
環境を構成しました。 Get-AksHciCredential PowerShell コマンドを使用すると、kubectl
を使用してご自身のクラスターにアクセスできます。 - Helm v3 コマンド ラインと前提条件がインストールされています。
- Azure CLI を使用してコマンドを実行できます (PowerShell を使用する場合)。
重要
Helm は Linux ノードで実行するものです。 クラスターに Windows Server ノードがある場合は、Helm ポッドが Linux ノードでのみ実行されるようにスケジュールされていることを確認する必要があります。 また、インストールする Helm グラフが正しいノードで実行されるようにスケジュールされていることも確認する必要があります。 この記事のコマンドでは、 ノード セレクターを使用して ポッドが適切なノードにスケジュールされていることを確認しますが、すべての Helm グラフでノード セレクターが公開されるわけではありません。 クラスターでは、 taints などの他のオプションを使用することもできます。
Helm のバージョンを確認する
helm version
コマンドを使用して、Helm 3 がインストールされていることを確認します。
helm version
次の例は、Helm バージョン 3.5.4 がインストールされていることを示しています。
version.BuildInfo{Version:"v3.5.4", GitCommit:"1b5edb69df3d3a08df77c9902dc17af864ff05d1", GitTreeState:"clean", GoVersion:"go1.15.11"}
Helm v3 を使用してアプリケーションをインストールする
Helm リポジトリの追加
helm repo コマンドを使用して、ingress-nginx リポジトリを追加します。
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Helm チャートの検索
Helm チャートは、Kubernetes クラスターにアプリケーションをデプロイするために使用されます。 事前に作成されている Helm チャートを検索するには、helm search コマンドを使用します。
helm search repo ingress-nginx
次の出力例の抜粋は、使用できる一部の Helm チャートを示しています。
NAME CHART VERSION APP VERSION DESCRIPTION
ingress-nginx/ingress-nginx 3.30.0 0.46.0 Ingress controller for Kubernetes using NGINX a...
チャートの一覧を更新するには、helm repo update コマンドを使用します。
helm repo update
リポジトリ更新の成功例を次に示します。
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "ingress-nginx" chart repository
Update Complete. Happy Helming!
Helm チャートの実行
Helm を使用してグラフをインストールするには、 helm install コマンドを使用し、リリース名とインストールするグラフの名前を指定します。 Helm チャートのインストールの動作を確認するには、Helm チャートを使用して基本的な nginx デプロイをインストールします。
次のコマンドは 2 回提供されます。1 つは Azure CLI で使用し、1 つは PowerShell コンソールで使用します。
helm install my-nginx-ingress ingress-nginx/ingress-nginx \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux
helm install my-nginx-ingress ingress-nginx/ingress-nginx `
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux `
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux
次の出力例の抜粋は、Helm チャートによって作成された Kubernetes リソースのデプロイ状態を示します。
> --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
> --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux
NAME: my-nginx-ingress
LAST DEPLOYED: Fri May 14 17:43:27 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The nginx-ingress controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace default get services -o wide -w my-nginx-ingress-ingress-nginx-controller'
...
kubectl get services
コマンドを使用してサービスの EXTERNAL-IP を取得します。
kubectl --namespace default get services -o wide -w my-nginx-ingress-ingress-nginx-controller
たとえば、次のコマンドは、my-nginx-ingress-ingress-nginx-controller サービスのEXTERNAL-IPを示しています。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
my-nginx-ingress-ingress-nginx-controller LoadBalancer 10.98.53.215 <EXTERNAL-IP> 80:31553/TCP,443:30784/TCP 72s app.kubernetes.io/component=controller,app.kubernetes.io/instance=my-nginx-ingress,app.kubernetes.io/name=ingress-nginx
リリースを一覧表示する
クラスターにインストールされているリリースの一覧を表示するには、helm list
コマンドを使用します。
helm list
次の例は、前の手順でデプロイされた my-nginx-ingress リリースを示しています。
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
my-nginx-ingress default 1 2021-05-14 17:43:27.1670709 +0000 UTC deployed nginx-ingress-3.30.0 0.46.0
リソースをクリーンアップする
Helm グラフをデプロイすると、多数の Kubernetes リソースが作成されます。 これらのリソースには、ポッド、デプロイ、およびサービスが含まれます。 これらのリソースをクリーンアップするには、 helm uninstall コマンドを使用し、前の helm list
コマンドで見つかったリリース名を指定します。
helm uninstall my-nginx-ingress
次の出力例は、リリース my-nginx-ingress がアンインストールされたことを示しています。
release "my-nginx-ingress" uninstalled
次のステップ
Kubernetes アプリケーションのデプロイの管理について詳しくは、Helm のドキュメントを参照してください。