Helm 3.0 - 12 / Chart information and Subchart

Page content

Helm3について その12

というわけで、今日は続きでCharts

チャートに含めるテキストファイル3種

インストール・設定/使い方/ライセンスについてはテキストファイルで含める事が出来る

LICENSE

チャートのライセンス情報。チャートそのものと、インストールされるアプリケーションのライセンス等。

README.md

通常は 以下の情報をマークダウンとして書いておく

  • アプリケーション/サービスについての詳細
  • インストール要件等
  • values.yamlの詳細と デフォルト値
  • その他

templates/NOTES.txt

インストレーション後に表示される情報で、テンプレートを使ってレンダリング出来るところが大きく違う点。

  • 使い方
  • 設定された情報
  • 次にすべき事
  • その他

例としては データベースへの接続の仕方、Web UIへのアクセスURL等。

チャートの依存関係/subchart

チャートは他のチャートを利用して、ダイナミックにリンクする形で作る事が出来る。

dependenciesフィールド(Chart.yaml)

Chart.yamlの dependenciesフィールドに 依存関係を羅列する

チャートのapiVersionが v1の場合には Chart.yaml ではなく requirements.yaml に書く

chartsフォルダ

直接 charts/ の下にチャートを直接置く事も可能。

helm dependency updateコマンドを実行すると、dependenciesフィールドに書かれた チャートが レポジトリからダウンロードされる。

サブチャートのvaluesを設定する

サブチャートのvaluesを変更したい場合にはサブチャート名のフィールドを作れば良い

mychart:
  data: hogehoge

subchart:
  data: hehehehe

global:
  data: foobar

これで subchartというチャートの valuesは 親チャートの subchart配下が渡される事になる。

親チャートの情報にアクセスしたい場合、global というキーで定義しておくと全てのサブチャートから同じ.Values.globalで参照する事が出来る。

サブチャートの別名定義/alias

例えば複数のデータベースを利用したい場合、同じチャートから複数のリリースを作り出す必要がある。 この場合、サブチャートにaliasを設定する事で複数のリリースを個別のalias名で管理する事が出来る

aliasを chartsフォルダに直書きしたチャートで実現したい場合、単純に別フォルダでコピーして実現する。

サブチャートの読み込み条件

通常全てのチャートが読み込まれるが、tagsか conditionが定義されていると 読み込みを制御する事が出来る。

conditionによる制御

conditionには YAMLのPATHを定義する。もし、そのパスが存在して booleanの値が設定されていた場合、そのサブチャートは trueであれば 読み込まれ、falseであれば読み込まれなくなる。

パスは,セパレートで複数書く事も出来るが、最初に有効なパスが見つけられた場合、そのパスだけが評価される。もしも有効なパスが見つけられなかった場合にはconditionは何も効果を持たない。

tagsによる制御

タグは 同じタグを持つチャートを まとめて制御するのに使える。

dependencies:
      - name: subchart
        repository: "http://localhost:10191"
        version: "0.1.0"
        tags:
          - front-end

このサブチャートはfront-endタグで制御する事が出来る。

values側では以下のように定義しておく。

tags:
  front-end: false

これで front-endタグを持つサブチャートは全て無効に設定される。

conditionとtagsの優先順位

conditionとtagsの両方が存在した場合、有効なcondition設定はtagsよりも優先される。

明日はサブチャートの値を、その親チャートから参照する方法。import-valuesの使い方