Azure Kubernetes Service (AKS) での Helm を使用した既存のアプリケーションのインストールInstall existing applications with Helm in Azure Kubernetes Service (AKS)

Helm は、Kubernetes アプリケーションのライフサイクルをインストールおよび管理するのに役立つオープン ソースのパッケージ化ツールです。Helm is an open-source packaging tool that helps you install and manage the lifecycle of Kubernetes applications. APTYum などの Linux パッケージ マネージャーと同様に、Helm は、構成済みの Kubernetes リソースのパッケージである Kubernetes チャートの管理に使用されます。Similar to Linux package managers such as APT and Yum, Helm is used to manage Kubernetes charts, which are packages of preconfigured Kubernetes resources.

この記事では、AKS 上の Kubernetes クラスターに Helm を構成して使用する方法を説明します。This article shows you how to configure and use Helm in a Kubernetes cluster on AKS.

開始する前にBefore you begin

この記事は、AKS クラスターがすでに存在していることを前提としています。This article assumes that you have an existing AKS cluster. AKS クラスターが必要な場合は、Azure CLI を使用した場合または Azure portal を使用した場合の AKS のクイックスタートを参照してください。If you need an AKS cluster, see the AKS quickstart using the Azure CLI or using the Azure portal.

Helm CLI もインストールする必要があります。これは、開発システムで実行されるクライアントです。You also need the Helm CLI installed, which is the client that runs on your development system. Helm を使用してアプリケーションを起動、停止、管理することができます。It allows you to start, stop, and manage applications with Helm. Azure Cloud Shell を使用している場合、Helm CLI は既にインストールされています。If you use the Azure Cloud Shell, the Helm CLI is already installed. ローカル プラットフォームでのインストール手順については、Helm のインストールに関するページを参照してください。For installation instructions on your local platform, see Installing Helm.

重要

Helm は Linux ノードで実行するものです。Helm is intended to run on Linux nodes. クラスター内に Windows Server ノードがある場合、Helm ポッドが確実に Linux ノードでのみ実行されるようにスケジュールする必要があります。If you have Windows Server nodes in your cluster, you must ensure that Helm pods are only scheduled to run on Linux nodes. また、インストールする Helm チャートが確実に正しいノードで実行されるようにスケジュールする必要もあります。You also need to ensure that any Helm charts you install are also scheduled to run on the correct nodes. この記事のコマンドでは、[node-selectors][k8s-node-selector] を使用し、ポッドが正しいノードにスケジュールされるが、一部の Helm チャートではノード セレクターが公開されないようにします。The commands in this article use [node-selectors][k8s-node-selector] to make sure pods are scheduled to the correct nodes, but not all Helm charts may expose a node selector. taints などの、他のオプションをクラスターで使用することを検討することもできます。You can also consider using other options on your cluster, such as taints.

Helm のバージョンを確認するVerify your version of Helm

helm version コマンドを使用して、Helm 3 がインストールされていることを確認します。Use the helm version command to verify you have Helm 3 installed:

helm version

次の例は、Helm バージョン 3.0.0 がインストールされていることを示しています。The following example shows Helm version 3.0.0 installed:

$ helm version

version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}

Helm v3 を使用してアプリケーションをインストールするInstall an application with Helm v3

公式の Helm の安定したチャート リポジトリを追加するAdd the official Helm stable charts repository

公式の Helm の安定したチャート リポジトリを追加するには helm repo コマンドを使用します。Use the helm repo command to add the official Helm stable charts repository.

helm repo add stable https://kubernetes-charts.storage.googleapis.com/

Helm チャートの検索Find Helm charts

Helm チャートは、Kubernetes クラスターにアプリケーションをデプロイするために使用されます。Helm charts are used to deploy applications into a Kubernetes cluster. 事前に作成されている Helm チャートを検索するには、helm search コマンドを使用します。To search for pre-created Helm charts, use the helm search command:

helm search repo stable

次の出力例の抜粋は、使用できる一部の Helm チャートを示しています。The following condensed example output shows some of the Helm charts available for use:

$ helm search repo stable

NAME                                    CHART VERSION   APP VERSION                     DESCRIPTION                                       
stable/acs-engine-autoscaler            2.2.2           2.1.1                           DEPRECATED Scales worker nodes within agent pools 
stable/aerospike                        0.3.1           v4.5.0.5                        A Helm chart for Aerospike in Kubernetes          
stable/airflow                          4.10.0          1.10.4                          Airflow is a platform to programmatically autho...
stable/ambassador                       4.4.7           0.85.0                          A Helm chart for Datawire Ambassador              
stable/anchore-engine                   1.3.7           0.5.2                           Anchore container analysis and policy evaluatio...
stable/apm-server                       2.1.5           7.0.0                           The server receives data from the Elastic APM a...
stable/ark                              4.2.2           0.10.2                          DEPRECATED A Helm chart for ark                   
stable/artifactory                      7.3.1           6.1.0                           DEPRECATED Universal Repository Manager support...
stable/artifactory-ha                   0.4.1           6.2.0                           DEPRECATED Universal Repository Manager support...
stable/atlantis                         3.8.4           v0.8.2                          A Helm chart for Atlantis https://www.runatlant...
stable/auditbeat                        1.1.0           6.7.0                           A lightweight shipper to audit the activities o...
stable/aws-cluster-autoscaler           0.3.3                                           Scales worker nodes within autoscaling groups.    
stable/aws-iam-authenticator            0.1.1           1.0                             A Helm chart for aws-iam-authenticator            
stable/bitcoind                         0.2.2           0.17.1                          Bitcoin is an innovative payment network and a ...
stable/bookstack                        1.1.2           0.27.4-1                        BookStack is a simple, self-hosted, easy-to-use...
stable/buildkite                        0.2.4           3                               DEPRECATED Agent for Buildkite                    
stable/burrow                           1.5.2           0.29.0                          Burrow is a permissionable smart contract machine 
stable/centrifugo                       3.1.0           2.1.0                           Centrifugo is a real-time messaging server.       
stable/cerebro                          1.3.1           0.8.5                           A Helm chart for Cerebro - a web admin tool tha...
stable/cert-manager                     v0.6.7          v0.6.2                          A Helm chart for cert-manager                     
stable/chaoskube                        3.1.2           0.14.0                          Chaoskube periodically kills random pods in you...
stable/chartmuseum                      2.4.0           0.8.2                           Host your own Helm Chart Repository               
stable/chronograf                       1.1.0           1.7.12                          Open-source web application written in Go and R...
stable/clamav                           1.0.4           1.6                             An Open-Source antivirus engine for detecting t...
stable/cloudserver                      1.0.3           8.1.5                           An open-source Node.js implementation of the Am...
stable/cluster-autoscaler               6.2.0           1.14.6                          Scales worker nodes within autoscaling groups.    
stable/cluster-overprovisioner          0.2.6           1.0                             Installs the a deployment that overprovisions t...
stable/cockroachdb                      2.1.16          19.1.5                          CockroachDB is a scalable, survivable, strongly...
stable/collabora-code                   1.0.5           4.0.3.1                         A Helm chart for Collabora Office - CODE-Edition  
stable/concourse                        8.2.7           5.6.0                           Concourse is a simple and scalable CI system.     
stable/consul                           3.9.2           1.5.3                           Highly available and distributed service discov...
stable/contour                          0.1.0           v0.15.0                         Contour Ingress controller for Kubernetes         
stable/coredns                          1.7.4           1.6.4                           CoreDNS is a DNS server that chains plugins and...
stable/cosbench                         1.0.1           0.0.6                           A benchmark tool for cloud object storage services
stable/coscale                          1.0.0           3.16.0                          CoScale Agent                                     
stable/couchbase-operator               1.0.1           1.2.1                           A Helm chart to deploy the Couchbase Autonomous...
stable/couchdb                          2.3.0           2.3.1                           DEPRECATED A database featuring seamless multi-...
stable/dask                             3.1.0           1.1.5                           Distributed computation in Python with task sch...
stable/dask-distributed                 2.0.2                                           DEPRECATED: Distributed computation in Python     
stable/datadog                          1.38.3          6.14.0                          DataDog Agent 
...

チャートの一覧を更新するには、helm repo update コマンドを使用します。To update the list of charts, use the helm repo update command.

helm repo update

リポジトリ更新の成功例を次に示します。The following example shows a successful repo update:

$ helm repo update

Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈ Happy Helming!⎈

Helm チャートの実行Run Helm charts

Helm を使用してチャートをインストールするには、helm install コマンドを使用し、リリース名とインストールするチャートの名前を指定します。To install charts with Helm, use the helm install command and specify a release name and the name of the chart to install. Helm チャートのインストールを実際に確かめるために、Helm チャートを使用して基本的な nginx デプロイをインストールしてみましょう。To see installing a Helm chart in action, let's install a basic nginx deployment using a Helm chart.

helm install my-nginx-ingress stable/nginx-ingress \
    --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
    --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux

次の出力例の抜粋は、Helm チャートによって作成された Kubernetes リソースのデプロイ状態を示します。The following condensed example output shows the deployment status of the Kubernetes resources created by the Helm chart:

$ helm install my-nginx-ingress stable/nginx-ingress \
>     --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
>     --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux

NAME: my-nginx-ingress
LAST DEPLOYED: Fri Nov 22 10:08:06 2019
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-controller'
...

サービスの EXTERNAL-IP を取得するには、kubectl get services コマンドを使用します。Use the kubectl get services command to get the EXTERNAL-IP of your service.

kubectl --namespace default get services -o wide -w my-nginx-ingress-controller

たとえば、次のコマンドは my-nginx-ingress-controller サービスの EXTERNAL-IP を示しています。For example, the below command shows the EXTERNAL-IP for the my-nginx-ingress-controller service:

$ kubectl --namespace default get services -o wide -w my-nginx-ingress-controller

NAME                          TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE   SELECTOR
my-nginx-ingress-controller   LoadBalancer   10.0.123.1     <EXTERNAL-IP>   80:31301/TCP,443:31623/TCP   96s   app=nginx-ingress,component=controller,release=my-nginx-ingress

リリースを一覧表示するList releases

クラスターにインストールされているリリースの一覧を表示するには、helm list コマンドを使用します。To see a list of releases installed on your cluster, use the helm list command.

helm list

次の例は、前の手順でデプロイされた my-nginx-ingress リリースを示しています。The following example shows the my-nginx-ingress release deployed in the previous step:

$ helm list

NAME                NAMESPACE   REVISION    UPDATED                                 STATUS      CHART                   APP VERSION
my-nginx-ingress    default     1           2019-11-22 10:08:06.048477 -0600 CST    deployed    nginx-ingress-1.25.0    0.26.1 

リソースをクリーンアップするClean up resources

Helm グラフをデプロイすると、多数の Kubernetes リソースが作成されます。When you deploy a Helm chart, a number of Kubernetes resources are created. これらのリソースには、ポッド、デプロイ、およびサービスが含まれます。These resources include pods, deployments, and services. これらのリソースをクリーンアップするには、helm uninstall コマンドを使用し、前の helm list コマンドで見つかったリリース名を指定します。To clean up these resources, use the helm uninstall command and specify your release name, as found in the previous helm list command.

helm uninstall my-nginx-ingress

次の例は、my-nginx-ingress という名前のリリースがアンインストールされたことを示しています。The following example shows the release named my-nginx-ingress has been uninstalled:

$ helm uninstall my-nginx-ingress

release "my-nginx-ingress" uninstalled

次のステップNext steps

Kubernetes アプリケーションのデプロイの管理について詳しくは、Helm のドキュメントを参照してください。For more information about managing Kubernetes application deployments with Helm, see the Helm documentation.