helmとhelm templateについての気づき 第一回 helmについておさらい
今更な話題ですが、Kubernetesにはhelmという便利なアプリケーションインストーラーがあります。 例えばこのように実行すると、Kubernetesにあらかじめ決められた設定でアプリケーションを展開できます。
$ helm install
例えば次のようにNamespaceを指定してアプリケーションをデプロイできますし、2行目のようにイメージタグを指定してデプロイしたり、設定する項目が多ければファイルに書いた内容でデプロイなんてことができます。Kubernetesでhelmは普通に使われていると思います。
$ helm install test stable/prometheus –namespace helm-test $ helm install –name my-release –namespace helm-test my-chart –set image.tag=v1.0.0 $ helm install -f myvalues.yaml myredis ./redis
便利なHelmですが、Helmにはhelm template
というコマンドがあって、Helm templateでカスタマイズした状態のマニフェストをファイルに出力することができるという機能があります。 言葉では伝わりにくいので実行例を見ながら解説します。 次のコマンドは./myapp-helm
というディレクトリーにあるHelm chartにmyapp/values.yaml
に書かれている設定に上書きしています。これをリダイレクトしてhogehuga-myapp-manifests.yaml
という名前のファイルに書き込んでいます。
$ helm template myapp-helm ./myapp-helm -f myapp/values.yaml > hogehuga-myapp-manifests.yaml
ちょっと実践してみましょう。これでwordpressのHelm chartをリポジトリーからダウンロードできます。ファイルはtar.gz形式のアーカイブがダウンロードされます。
$ helm repo add bitnami https://charts.bitnami.com/bitnami $ helm update $ helm pull bitnami/wordpress
展開すると、いくつかのファイルが見つかると思います。 values.yaml
がこのchartのデフォルトが書かれているファイルで、これをコピーしてカスタマイズして任意の設定でアプリケーションをデプロイできるのですが、今回はちょっとだけ書き換えてhelm template
コマンドを実行してみましょう。
$ tar -xzvf wordpress-24.2.2.tgz $ ls wordpress Chart.lock Chart.yaml charts README.md templates values.schema.json values.yaml
実際デプロイする訳ではないので、適当です。
$ vi values.yaml … wordpressUsername: hogehogeuser
では、次のように実行してみましょう。values.yaml
を書き換えた設定が反映されたマニフェストがファイルとして出力されたのが確認できました。
$ helm template mywordpress ./wordpress -f ./values.yaml > mywp-manifests.yaml $ cat mywp-manifests.yaml |grep hogehogeuser value: “hogehogeuser”
helm template、便利ですね。 長くなったので、次回に続きます。
第2回に続く