[初学者向け]Helmを学ぼう!~Chartを作成してより実務に役立てよう~

こんにちは。KOUKIです。

とある企業でWebエンジニアをやっています。

前回は、Helmの検証やデバッキングの方法を学びました。

今回は、Chartの作成方法を学びましょう。

検証環境

  • helm v3
  • mac
  • minikube

Kubernetesに関しては、こちらも参考にしてください。

Chartの作成

これまでは、NginxのChartを利用してアプリのデプロイを行なっていましたが、実はこのChartは自分で作成可能です。

というか、これが実運用における本来の使い方、なのかもしれません。

最初に、ワークスペースを作成しましょう。

helm createコマンドを使って、Chartを作成します。

たくさんのファイルが生成されました。

このチャートをhelm installコマンドでデプロイしてみましょうか。

デプロイされてますね。

ポートフォワーディングして、Podにアクセスしましょう。

Nginxのページが表示されました。デフォルトは、Nginxが表示される様ですね。

Chart.yamlの中身

自動生成されたChart.yamlの中身を見てみましょう。尚、コメントは消しています。

上記の設定の詳細は、こちらにあります。

appVersionを「1.16.0」->「1.0.0」に変えておきましょう(この微妙なバージョンはなんなんだろう?)。

templatesフォルダの中身

templatesフォルダの中身を確認しましょう。

ここに、ingressやservice、deploymentが収められてますね。

service.yamlを開いてみます。

{{ include “myapp.fullname” . }}」など見慣れない構文がありますね。Go言語使いならピーンとくるかもしれません。

これは、テンプレート構文です。

以下のようにルールがあります。

  • {{}}で囲む(例: {{lower “Hello”}} => hello)
  • values.yamlから値を参照できる
  • .Valuesの「.」はルートパスを示す
  • .Valuesキーワードでvalues.yamlに設定されたパラメーターの値を取得できる
  • includeキーワードで、他のテンプレートを埋め込むことができる(二番目の引数は変数のスコープで、dot(.)はルートを示す)
  • Helm関数はスペースで区切られた同じ行のパラメータを受け取る

例えば、「{{ .Values.service.port }}」に関しては、values.yamlの以下のパラメータに紐づきます。

Helmのテンプレート構文については、こちらで確認ください。

Helm Chartのパッケージング

もう少し、Chartを掘り下げてみましょう。

一旦、前回作成したmyapp01を削除します。

続いて、variables.yamlに定義されているイメージを変更します。

再び、アプリケーションをインストールします。

このPodにポートフォワーディングをします。

サクッと切り替わりました。

kubectlコマンドを実行する場合、service.yamlやdeployment.yamlなど個別にファイル名を指定したりしていたので、それに比べればインストールが楽だと思います。

作成したチャートは、helm packageコマンドで固められます。

ちなみに、.helmignoreファイルができていたと思うのですが、このファイルに記述されたものは上記のpackageには含まれないようになります。

もちろん、このパッケージからインストール可能です。

完璧ですね。

Clean Up

最後に後片付けをして、終わりにしましょう。

次回

次回は、Helmのテンプレートを深く学んでいきましょう

Helmまとめ

コメントを残す