Helmを使うと気になるあれこれ


tl; dr

私がHelmを使って学んだけどあまり見つからない情報をまとめます。

はじめに

Helmをこれから使う、などの方はほかの記事をご参照ください。

この記事はv3を前提にしています。

Releaseについて

ReleaseとはChartをhelmコマンドでインストールしたインスタンスを指しています。helmコマンドなどのアプリケーションを公開することではありません。

インストールした時に出力された内容をまた見たい

できます。

helm -n <namespace> get notes <release>

このほかにも、インストールした時のvaluesの設定値やインストールしたmanifestも見ることができます。

helm get

Releaseの情報はどこにある?

ReleaseをインストールしたnamespaceのSecretに格納されています。

dataの中に格納されているのですが、gzip圧縮されているので、直接見るのは結構面倒です。

Chartに関して

Chartファイルはリポジトリからどう取得する?

以下のコマンドでtgzファイルとして取得できます。

helm pull <repo>/<chart> --version <version>

取得したchartファイルは helm install / helm upgrade コマンドにおいて <repo>/<chart> と書く代わりにchartファイルをパスで指定することができます。オフライン環境にインストールする際などに利用できます。

values.yamlってどう書いたらいいの?/どんなパラメータが使えるの?

どんなパラメータを受け付けるかはChartの作成者次第なので一概には言えません。

ただ調べ方としては

  • ArtifactHubなどの配布サイトの説明をよく読む
    • 開発元のページなどがリンクされている場合はそちらも
  • Chartに埋め込みのvalues.yamlを読む
    • 裏技的ですが、Chartに含まれているvalues.yamlを読むとコメントで役割や効果などが書かれている場合もあります。特に、第三者に対して公開されているもの、複数人で開発されているものはコメントが書かれていることが多いです。

Chart repositoryに関して

Chart repositoryってどういうものなの?

端的にいうと、以下の条件を満たすWebサーバです

  • repositoryにあるChartのメタデータを格納したinde.yamlを公開する
    • repositoryのURLに /index.yaml をつけてリクエストすると取得できます。
  • Chartファイルであるtgzファイルを公開する
    • index.yamlに格納先URLを記述する

Chart repositoryをセルフホストするには?

いくつか方法があります。

  • GitHub Pagesを使う方法
    • OSSプロジェクトではよく使われる方法です。
    • 詳しいやり方は上の条件を満たせるようにファイルを配置するだけのはずなので書きません。(ググると出てくると思います)
  • ChartMuseumを使う方法
    • ChartMuseumのHelm Chartがあります。
    • ホストするRepositoryの操作がHTTP APIで行えます。
    • ChartのストレージとしてPVのほかにS3/GCS/Azure Blob Storageなどのオブジェクトストレージを利用できます。