次の方法で共有


既存のアプリケーションを Helm でインストールする

適用対象: Windows Server 上の AKS

この記事では、Helm を構成して使用して、Windows Server 上の AKS の Kubernetes クラスターに Kubernetes アプリケーションをインストールおよび管理する方法について説明します。

Helm は、Kubernetes アプリケーションのライフサイクルをインストールおよび管理するのに役立つオープン ソースのパッケージ化ツールです。 APTSum などの 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 のドキュメントを参照してください。