[初学者向け]Helmを学ぼう!~Helm Chartの依存/ライブラリ化/レポジトリ~

こんにちは。KOUKIです。

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

前回は、HelmのTemplateについて学習をしました。

今回は、 Helm Chartの依存関係やライブラリ化、レポジトリについて深く学びましょう!

検証環境

  • helm v3
  • mac
  • minikube

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

Dependencies

helm Chartをインストールする前に、使用できるチャートを検索する必要があるかと思います。

例えば、こんな感じにです。

通常は、下記のコマンドでアプリをデプロイします。

しかし、Dependencies(依存)という形で、Chart.yamlに記載することができます。

以前作成したmyapp ChartのChart.yamlに下記を記載しましょう。

下記のようにupdateします。

このコマンドが無事に実行されたら今まで空だったchartsディレクトリに下記のファイルができていることが確認できます。

更に、Chart.lockというファイルもできてます。

これがあれば、勝手にバージョンアップされるといったことも無くなりそうですね。

chartsフォルダの中身を消してしまっても、buildで再作成できます。

また、Artifact HubのRedisに、「Redis™ master configuration parameters」というものがあります。

これは、コンテナに割り当てられているパラメーターの一覧のようです。

ここから知りたいパラメータを表示させることもできそうですね。

Library Charts

Helmには、Library Chartsというものがあります。

既に纏められたChartを他のChartで流用したいなど、再利用性が求められる場面で活躍します。

それでは、Libraryを自作しましょう。

libpolicy Libraryを作成しました。これをmyApp Chartから利用します。

ちなみに今のフォルダ構成はこんな感じになっているので、myappに移動しておいて下さい。

Chart.yamlを開いて、libpolicyを追加して下さい。

依存関係をアップデートします。

おお、すごいですね。Chartごとにモジュールっぽくするのもありかもですね。

Helmレポジトリを作成する

ローカルに自分専用のHelm レポジトリを作成しましょう。

myappフォルダに移動して、helm packageコマンドを実行します。

myapp Chartがパッケージングされました。

続いて、以下のコマンドを実行します。

index.yamlが生成されました。これは一体何なのでしょうか?

中身を見てみましょう。

myapp Chartの詳細が載ってますね。特に「repository」の箇所が重要で、どこにChartが存在しているか記述されています。これによりダウンロードができる様ですね。

ちなみに、「https://charts.bitnami.com/bitnami」をブラウザからアクセスするとAccessDeniedの画面になります。

しかし、https://charts.bitnami.com/bitnami/index.yaml」をブラウザに打つこむと、myappのindex.yamlと同様にレポジトリ情報が記されたyamlファイルをダウンロードすることが可能です。

続いて、以下のコマンドを実行して下さい。

apacheを立てました。ブラウザから「http://localhost/」にアクセスしましょう。

これがレポジトリになるのです。

Greatですね。こいつは。

現在、myapp01が動いているので、一旦削除します。

続いて、myrepoからmyappをデプロイしましょう。

大丈夫そうですね。Warningが出てますが、何か設定が漏れてるのかも。。

次に、バージョンアップを試してみましょう。

myappのChart.yamlの下記のバージョンをあげて下さい。

パッケージングします。

index.yamlを見ると「0.2.0」が追加されていることがわかります。

レポジトリをアップデートします。

バージョンアップできましたね!

CI/CDパイプラインに組み込みたい

先ほど作成したパッケージをCI/CDパイプライン組み込みたいときの簡単な手順です。

こんな感じで、index.yamlを作ってやると組み込めそうですね。

AWS S3をレポジトリ化する(補足)

AWS S3のようなストレージをレポジトリ化したい場合、以下のように行います。
※動作検証はしてません

おわりに

初学者向けの記事は、本記事で終わりになります。

HELMのだいたいの機能は理解できたのではないでしょうか。

後は学習した知識を実務に応用していくだけです。お互い、頑張りましょうね^^

それでは、また!

Helmまとめ

コメントを残す