valuesファイル
前のセクションでは、Helmテンプレートが提供する組み込みオブジェクトについて説明しました。組み込みオブジェクトの1つはValues
です。このオブジェクトは、チャートに渡された値へのアクセスを提供します。その内容は、複数のソースから取得されます。
- チャート内の
values.yaml
ファイル - これがサブチャートの場合、親チャートの
values.yaml
ファイル -f
フラグを使用して、valuesファイルがhelm install
またはhelm upgrade
に渡されます(例:helm install -f myvals.yaml ./mychart
)。- 個々のパラメータは
--set
を使用して渡されます(例:helm install --set foo=bar ./mychart
)。
上記のリストは、特異性の順序です。values.yaml
がデフォルトであり、親チャートのvalues.yaml
で上書きでき、さらにユーザーが提供したvaluesファイルで上書きでき、最後に--set
パラメータで上書きできます。
valuesファイルはプレーンなYAMLファイルです。mychart/values.yaml
を編集し、次にConfigMapテンプレートを編集しましょう。
values.yaml
のデフォルトを削除し、1つのパラメータだけを設定します。
favoriteDrink: coffee
これで、テンプレート内でこれを使用できます。
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favoriteDrink }}
最後の行で、Values
の属性としてfavoriteDrink
にアクセスしていることに注意してください:{{ .Values.favoriteDrink }}
。
これがどのようにレンダリングされるか見てみましょう。
$ helm install geared-marsupi ./mychart --dry-run --debug
install.go:158: [debug] Original chart version: ""
install.go:175: [debug] CHART PATH: /home/bagratte/src/playground/mychart
NAME: geared-marsupi
LAST DEPLOYED: Wed Feb 19 23:21:13 2020
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{}
COMPUTED VALUES:
favoriteDrink: coffee
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: geared-marsupi-configmap
data:
myvalue: "Hello World"
drink: coffee
favoriteDrink
がデフォルトのvalues.yaml
ファイルでcoffee
に設定されているため、テンプレートに表示される値はそれです。helm install
への呼び出しで--set
フラグを追加することで、簡単に上書きできます。
$ helm install solid-vulture ./mychart --dry-run --debug --set favoriteDrink=slurm
install.go:158: [debug] Original chart version: ""
install.go:175: [debug] CHART PATH: /home/bagratte/src/playground/mychart
NAME: solid-vulture
LAST DEPLOYED: Wed Feb 19 23:25:54 2020
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
favoriteDrink: slurm
COMPUTED VALUES:
favoriteDrink: slurm
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: solid-vulture-configmap
data:
myvalue: "Hello World"
drink: slurm
--set
はデフォルトのvalues.yaml
ファイルよりも優先順位が高いため、テンプレートはdrink: slurm
を生成します。
valuesファイルには、より構造化されたコンテンツを含めることもできます。たとえば、values.yaml
ファイルにfavorite
セクションを作成し、そこにいくつかのキーを追加できます。
favorite:
drink: coffee
food: pizza
テンプレートを少し変更する必要があります。
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favorite.drink }}
food: {{ .Values.favorite.food }}
このようにデータを構造化することは可能ですが、値のツリーを浅く保ち、フラットさを優先することをお勧めします。サブチャートに値を割り当てる方法を見ると、ツリー構造を使用して値に名前を付ける方法がわかります。
デフォルトキーの削除
デフォルト値からキーを削除する必要がある場合は、キーの値をnull
に上書きできます。その場合、Helmは上書きされた値のマージからキーを削除します。
たとえば、安定版のDrupalチャートでは、カスタムイメージを構成する場合に、ライブネスプローブを構成できます。デフォルト値を以下に示します。
livenessProbe:
httpGet:
path: /user/login
port: http
initialDelaySeconds: 120
--set livenessProbe.exec.command=[cat,docroot/CHANGELOG.txt]
を使用して、livenessProbeハンドラーをhttpGet
ではなくexec
に上書きしようとすると、Helmはデフォルトキーと上書きされたキーをまとめて結合し、次のYAMLになります。
livenessProbe:
httpGet:
path: /user/login
port: http
exec:
command:
- cat
- docroot/CHANGELOG.txt
initialDelaySeconds: 120
しかし、複数のlivenessProbeハンドラーを宣言することはできないため、Kubernetesは失敗します。これを克服するには、null
に設定することで、livenessProbe.httpGet
を削除するようにHelmに指示できます。
helm install stable/drupal --set image=my-registry/drupal:0.1.0 --set livenessProbe.exec.command=[cat,docroot/CHANGELOG.txt] --set livenessProbe.httpGet=null
この時点で、いくつかの組み込みオブジェクトを見て、それらを使用してテンプレートに情報を挿入しました。次に、テンプレートエンジンの別の側面である関数とパイプラインを見ていきます。