はじめに
kubenetes を使う状況において、デプロイには Helm を使うことが多いのではないでしょうか。
また、公式のHelm Chartにはお世話になる方も多いのではないでしょうか。
ただ、この Chart の使い方、初見では分かり辛くないですか?
Helm 初心者だった私は見方が分からず色々と遠回りをしました。。。
ということで、私の理解した repository (主に Configuration) の見方の知見を記載します。
書くこと
Github の repository の個人的見方
書かないこと
Helm のコマンドなどの使い方
repository の見方
nginx-ingressをサンプルに記載します。
Configuration とは
Helm に与える設定値のことが記載されています(が、与え方とか記載があったりなかったりなんですよね。。。)。
なので、どのように与えるかを記載します。
何がどのような設定なのかは各 Chart の Description をご参照のこと。
引数として値を与える方法
nginx-ingress には以下記載がありました。
helm install stable/nginx-ingress --name my-release \
--set controller.metrics.enabled=true
上記のように、 --set key=value
として与える方法があります。
ただ、個人的にはどのように値を与えたか把握できるように、次のファイルから値を与える方法が良いと思います。
ファイルから値を与える方法
値を yaml ファイルで与える方法があります。
サンプルとなる yaml ファイルは、values.yamlにあります。
このvalues.yaml
をベースに、対応するkey
に対して値を設定し、values.yaml
を作り、以下コマンドで与えることができます。
helm install stable/nginx-ingress --name my-release \
-f values.yaml
記載されている Configuration に関して
templates との関係
Helm を作ったことのある方はご承知だと思いますが。。。
values.yaml
は、templates内のファイルで使われる形になります。
例えば、
controller:
name: controller
であれば、以下ファイルの {{ .Values.controller.name }}
で参照されています。
https://github.com/helm/charts/blob/master/stable/nginx-ingress/templates/controller-deployment.yaml#L66
未定義部分
Configuration に記載はないが、templates 内のファイルでは使用するように定義されていることもあります。
なので 「該当する設定 key がないなー」と思われた方は templates 内の該当しそうなファイルを確認することをお勧めします。
参考
https://helm.sh/docs/topics/chart_repository/
https://github.com/helm/charts/tree/master/stable/nginx-ingress