序章
Helm は、Kubernetesのパッケージマネージャーであり、開発者とオペレーターがKubernetesクラスターでアプリケーションをより簡単に構成およびデプロイできるようにします。
このチュートリアルでは、Helmをセットアップし、それを使用して Kubernetesダッシュボードアプリケーションのインスタンスをインストール、再構成、ロールバック、削除します。 ダッシュボードは、公式のWebベースのKubernetesGUIです。
Helmとそのパッケージングエコシステムの概念的な概要については、記事Helmの概要をお読みください。
注:このチュートリアルでは、バージョン2のHelmパッケージマネージャーを使用してKubernetesクラスターにソフトウェアをインストールするためのワークフローについて説明します。これにはTillerが必要です。 Helmのバージョン3を使用している場合は、チュートリアルHelm3パッケージマネージャーを使用してKubernetesクラスターにソフトウェアをインストールする方法に従ってください。
前提条件
このチュートリアルでは、次のものが必要になります。
-
ロールベースのアクセス制御(RBAC)が有効になっているKubernetes1.8以降のクラスター。
-
The
kubectl
ローカルマシンにインストールされ、クラスターに接続するように構成されたコマンドラインツール。 インストールについてもっと読むことができますkubectl
公式ドキュメント。次のコマンドを使用して、接続をテストできます。
- kubectl cluster-info
エラーが表示されない場合は、クラスターに接続しています。 で複数のクラスターにアクセスする場合
kubectl
、正しいクラスターコンテキストを選択したことを確認してください。- kubectl config get-contexts
OutputCURRENT NAME CLUSTER AUTHINFO NAMESPACE * do-nyc1-k8s-example do-nyc1-k8s-example do-nyc1-k8s-example-admin docker-for-desktop docker-for-desktop-cluster docker-for-desktopこの例では、アスタリスク(
*
)は、に接続されていることを示しますdo-nyc1-k8s-example
集まる。 クラスタを切り替えるには、次のコマンドを実行します。- kubectl config use-context context-name
正しいクラスターに接続したら、ステップ1に進んでHelmのインストールを開始します。
ステップ1—ヘルムのインストール
まず、をインストールします helm
ローカルマシンのコマンドラインユーティリティ。 Helmは、MacOS、Windows、またはLinuxでのインストールプロセスを処理するスクリプトを提供します。
書き込み可能なディレクトリに移動し、HelmのGitHubリポジトリからスクリプトをダウンロードします。
- cd /tmp
- curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > install-helm.sh
スクリプトを実行可能にする chmod
:
- chmod u+x install-helm.sh
この時点で、お気に入りのテキストエディタを使用してスクリプトを開き、安全であることを確認するためにスクリプトを検査できます。 満足したら、それを実行します。
- ./install-helm.sh
パスワードの入力を求められる場合があります。 それを提供し、を押します ENTER
.
Outputhelm installed into /usr/local/bin/helm
Run 'helm init' to configure helm.
次に、いくつかのHelmコンポーネントをクラスターにインストールして、インストールを完了します。
ステップ2—Tillerのインストール
耕うん機は helm
クラスタで実行され、からコマンドを受信するコマンド helm
Kubernetes APIと直接通信して、リソースの作成と削除の実際の作業を行います。 Tillerにクラスターで実行するために必要なアクセス許可を与えるために、Kubernetesを作成します serviceaccount
資源。
注:これをバインドします serviceaccount
cluster-adminクラスターの役割に。 これは tiller
クラスターへのスーパーユーザーアクセスを提供し、すべての名前空間にすべてのリソースタイプをインストールできるようにします。 これはHelmの探索には問題ありませんが、本番Kubernetesクラスターにはよりロックダウンされた構成が必要になる場合があります。
TillerのさまざまなRBACシナリオの設定の詳細については、公式のHelmRBACドキュメントを参照してください。
耕うん機を作成します serviceaccount
:
- kubectl -n kube-system create serviceaccount tiller
次に、耕うん機をバインドします serviceaccount
cluster-admin ロールへ:
- kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
これで実行できます helm init
、 stable リポジトリの詳細のダウンロードなど、いくつかのローカルハウスキーピングタスクとともに、Tillerをクラスターにインストールします。
- helm init --service-account tiller
Output. . .
Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
Happy Helming!
Tillerが実行されていることを確認するには、kube-system名前空間にポッドをリストします。
- kubectl get pods --namespace kube-system
OutputNAME READY STATUS RESTARTS AGE
. . .
kube-dns-64f766c69c-rm9tz 3/3 Running 0 22m
kube-proxy-worker-5884 1/1 Running 1 21m
kube-proxy-worker-5885 1/1 Running 1 21m
kubernetes-dashboard-7dd4fc69c8-c4gwk 1/1 Running 0 22m
tiller-deploy-5c688d5f9b-lccsk 1/1 Running 0 40s
Tillerポッド名は接頭辞で始まります tiller-deploy-
.
両方のHelmコンポーネントをインストールしたので、使用する準備が整いました helm
最初のアプリケーションをインストールします。
ステップ3—ヘルムチャートのインストール
Helmソフトウェアパッケージはチャートと呼ばれます。 Helmには、stableと呼ばれる厳選されたチャートリポジトリが事前構成されています。 利用可能なチャートは、GitHubリポジトリで閲覧できます。 例として、 KubernetesDashboardをインストールします。
使用する helm
インストールするには kubernetes-dashboard
からのパッケージ stable
レポ:
- helm install stable/kubernetes-dashboard --name dashboard-demo
OutputNAME: dashboard-demo
LAST DEPLOYED: Wed Aug 8 20:11:07 2018
NAMESPACE: default
STATUS: DEPLOYED
. . .
に注意してください NAME
上記の出力例で強調表示されている行。 この場合、名前を指定しました dashboard-demo
. これは私たちのリリースの名前です。 Helm release は、特定の構成を持つ1つのチャートの単一の展開です。 同じチャートの複数のリリースを、それぞれ独自の構成で展開できます。
を使用して独自のリリース名を指定しない場合 --name
、Helmがランダムな名前を作成します。
このクラスターのリリースのリストをHelmに依頼できます。
- helm list
OutputNAME REVISION UPDATED STATUS CHART NAMESPACE
dashboard-demo 1 Wed Aug 8 20:11:11 2018 DEPLOYED kubernetes-dashboard-0.7.1 default
これで使用できます kubectl
新しいサービスがクラスターにデプロイされていることを確認するには、次のようにします。
- kubectl get services
OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-demo-kubernetes-dashboard ClusterIP 10.32.104.73 <none> 443/TCP 51s
kubernetes ClusterIP 10.32.0.1 <none> 443/TCP 34m
デフォルトでは、リリースに対応するサービス名は、Helmリリース名とチャート名の組み合わせであることに注意してください。
アプリケーションをデプロイしたので、Helmを使用して構成を変更し、デプロイメントを更新しましょう。
ステップ4—リリースの更新
The helm upgrade
コマンドを使用して、新しいチャートまたは更新されたチャートでリリースをアップグレードしたり、その構成オプションを更新したりできます。
簡単な変更を加えます dashboard-demo
更新とロールバックのプロセスを示すためにリリースします。ダッシュボードサービスの名前を次のように更新します。 dashboard
、 それ以外の dashboard-demo-kubernetes-dashboard
.
The kubernetes-dashboard
チャートは fullnameOverride
サービス名を制御するための構成オプション。 走りましょう helm upgrade
このオプションを設定すると:
- helm upgrade dashboard-demo stable/kubernetes-dashboard --set fullnameOverride="dashboard"
最初のような出力が表示されます helm install
ステップ。
Kubernetesサービスが更新された値を反映しているかどうかを確認します。
- kubectl get services
OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.32.0.1 <none> 443/TCP 36m
dashboard ClusterIP 10.32.198.148 <none> 443/TCP 40s
サービス名が新しい値に更新されました。
注:この時点で、実際にブラウザにKubernetesダッシュボードを読み込んでチェックアウトすることをお勧めします。 これを行うには、最初に次のコマンドを実行します。
- kubectl proxy
これにより、ローカルコンピューターからリモートクラスターリソースにアクセスできるプロキシが作成されます。 前の手順に基づいて、ダッシュボードサービスの名前が付けられます kubernetes-dashboard
そしてそれはで実行されています default
名前空間。 これで、次のURLでダッシュボードにアクセスできます。
http://localhost:8001/api/v1/namespaces/default/services/https:dashboard:/proxy/
必要に応じて、強調表示された部分を独自のサービス名と名前空間に置き換えます。 ダッシュボードを実際に使用する手順はこのチュートリアルの範囲外ですが、詳細については公式のKubernetesダッシュボードドキュメントをお読みください。
次に、リリースをロールバックするHelmの機能を見ていきます。
ステップ5—リリースのロールバック
更新したとき dashboard-demo
前のステップのリリースでは、リリースの2番目のリビジョンを作成しました。 以前の構成またはチャートにロールバックする必要がある場合に備えて、Helmは以前のリリースのすべての詳細を保持します。
使用する helm list
リリースを再度検査するには:
- helm list
OutputNAME REVISION UPDATED STATUS CHART NAMESPACE
dashboard-demo 2 Wed Aug 8 20:13:15 2018 DEPLOYED kubernetes-dashboard-0.7.1 default
The REVISION
列は、これが2番目のリビジョンであることを示しています。
使用する helm rollback
最初のリビジョンにロールバックするには:
- helm rollback dashboard-demo 1
ロールバックが成功したことを示す次の出力が表示されます。
OutputRollback was a success! Happy Helming!
この時点で、 kubectl get services
ここでも、サービス名が以前の値に戻っていることがわかります。 Helmは、リビジョン1の構成でアプリケーションを再デプロイしました。
次に、Helmを使用してリリースを削除する方法を検討します。
ステップ6—リリースを削除する
ヘルムリリースは、 helm delete
指図:
- helm delete dashboard-demo
Outputrelease "dashboard-demo" deleted
リリースが削除され、ダッシュボードアプリケーションは実行されなくなりましたが、リリースを再デプロイする場合に備えて、Helmはすべてのリビジョン情報を保存します。 あなたがしようとした場合 helm install
新しい dashboard-demo
今すぐリリースすると、エラーが発生します。
Error: a release named dashboard-demo already exists.
を使用する場合 --deleted
削除されたリリースを一覧表示するフラグを立てると、リリースがまだ存在していることがわかります。
- helm list --deleted
OutputNAME REVISION UPDATED STATUS CHART NAMESPACE
dashboard-demo 3 Wed Aug 8 20:15:21 2018 DELETED kubernetes-dashboard-0.7.1 default
本当にリリースを削除し、すべての古いリビジョンを削除するには、 --purge
フラグ helm delete
指図:
- helm delete dashboard-demo --purge
これでリリースは完全に削除され、リリース名を再利用できます。
結論
このチュートリアルでは、 helm
コマンドラインツールとその tiller
コンパニオンサービス。 また、Helmチャートとリリースのインストール、アップグレード、ロールバック、および削除についても検討しました。
HelmおよびHelmチャートの詳細については、公式Helmドキュメントを参照してください。