概要
HelmはKubernetesのパッケージマネージャーです。
Helmは2019年5月現在でv2系が主流ですが、アルファ版としてv3.0.0が公開されました。
同日の2019/05/16にはHelm v2.14.0もリリースされています
v2 → v3.0.0-alphaへの変更点は次のリンクにまとまっています。
※よく見れば分かりますが、あくまでアルファ版のため、ほとんどのページがv2の内容のままです。
v3自体の構想が次のページにまとまっており、合わせてブログでのv3シリーズに関する投稿もあります。
Proposal: https://github.com/helm/community/blob/master/helm-v3/000-helm-v3.md
Blog(全7本): https://helm.sh/blog/helm-3-preview-pt1/
※リンクは7本のうちの1本目
ProposalとBlogを読むと、v2→v3の変更がなかなかの破壊的変更に思えます。
ただし、今回のアルファ版では全てが実現されているわけではないので注意しましょう。
最大の変更点はHelmのサーバーであるTillerがなくなったことですが、それ以外は大きな違いはそれほどないように感じます(個人の感想です)。
もちろん細かい変更点がいくつもありますが、本記事はそれらを全ては取り扱わずに、Helm v3を試したいという方向けの情報だけをまとめています。
実施した環境
・Mac Pro(2018) OS Mojave 10.14.1
・Docker for Mac(Docker Engine 18.09)
・Helm v2.13(※インストール済だが今回は使わない)
・Kubernetesクラスタ(Docker for Macの機能)
v3のインストール方法
Releaseページにも書かれていますが、既存のv2環境を壊さないように/tmp/helm3といった一時ディレクトリにインストールした方が良いでしょう。
次のスクリプトを使うとMacOS向けに/tmpにHelm v3をインストールできます
当たり前のことですが、実施前にスクリプトを見て問題がないか確認しましょう
$ curl https://gist.githubusercontent.com/jdolitsky/0ec804b09f24a24b05acb681f01903c9/raw/install_helm3alpha1_mac.sh | bash
環境変数として「HELM_HOME」と「PATH」を設定しなさい、という表示が出ますが、PATHを設定しても私の環境ではHelm v2の方のバイナリが実行されていました。
そのため、多少不恰好ですがPATHは通さずに毎回「/tmp/helm3/bin/helm」でコマンドを打っていきます。
$ export HELM_HOME=/tmp/helm3
環境変数を設定し、バージョンを確認します。
$ /tmp/helm3/bin/helm version
version.BuildInfo{Version:"v3.0.0-alpha.1", GitCommit:"b9a54967f838723fe241172a6b94d18caf8bcdca", GitTreeState:"clean"}
Chartのインストール
Charts Repositoryを確認するとstableのみでlocalは削除されていました。
これはhelm serveコマンドがなくなったためでしょう(Releaseページに書いてないので推測)。
$ /tmp/helm3/bin/helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
インストールが完了したので、試しにMySQLのChartを実行してます。
まずはChartをローカルにダウンロードします。
v2では「helm fetch」でChartをダウンロードしていましたが、v3ではDockerライクにpullが使えます。
※helm fetchも依然として利用できます
# Chartのダウンロード
$ /tmp/helm3/bin/helm pull stable/mysql
# tarボールを解凍
$ tar -zxf mysql-1.1.1.tgz
# Chartの中身を確認
$ cd mysql
$ tree mysql
mysql
├── Chart.yaml
├── README.md
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── configurationFiles-configmap.yaml
│ ├── deployment.yaml
│ ├── initializationFiles-configmap.yaml
│ ├── pvc.yaml
│ ├── secrets.yaml
│ ├── servicemonitor.yaml
│ ├── svc.yaml
│ └── tests
│ ├── test-configmap.yaml
│ └── test.yaml
└── values.yaml
v2のChartをそのまま使っているようです。
Kubernetesクラスタにインストールしてみます。
$ /tmp/helm3/bin/helm install mysql
Error: must either provide a name or specify --generate-name
v2では「--name」を指定しない限り、ランダムな名前が生成されていましたが、
v3では「--name-template」で名前を指定するか、「--generate-name」で従来の動きを指定する必要があります。
せっかくなので「--name-template」で名前を指定しました。
$ /tmp/helm3/bin/helm install mysql --name-template mysql
インストールするとNOTESでMySQLへのアクセス方法が表示されます(本記事では省略)。
ここはv2と変わりありません。
$ /tmp/helm3/bin/helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART
mysql default 1 2019-05-18 23:28:47.300221 +0900 JST deployed mysql-1.1.1
「helm list」でReleaseが生成されたことが確認できます。
Releaseの削除
Releaseが生成されているのが確認できたので、Clean Upします。
v2では「helm delete」でReleaseを削除していましたが、v3ではuninstallを使います。
※helm deleteも依然として利用できます
$ /tmp/helm3/bin/helm uninstall mysql
release "mysql" uninstalled
終わりに
変更点はまだまだありますが、今回はHelm v3の試し方を紹介しました。
Helm v3はアルファバージョンです。
IssueやPRも絶賛受付中のようなので、使ってみてどんどんコントリビュートしていきましょう。
以上