Variables
15249 ワード
公式ドキュメントショートカット->Variables
関数、パイプライン、および制御構造を確認しました.プログラミング言語の基本的な考え方の一つである変数を見てみましょう.変数はテンプレートではあまり使用されません.しかし、変数を使用してコードを簡略化し、
前の例では、次のコードの実行に失敗しました.
Helmテンプレートでは、変数は他のオブジェクトを参照するために命名されます.
上記の例を実行して、次の内容を作成します.
ただし、グローバル変数は常に存在します.
これは例です.
関数、パイプライン、および制御構造を確認しました.プログラミング言語の基本的な考え方の一つである変数を見てみましょう.変数はテンプレートではあまり使用されません.しかし、変数を使用してコードを簡略化し、
with
とrange
をよりよく利用する方法を見てみましょう.前の例では、次のコードの実行に失敗しました.
{{- with .Values.favorite }}
drink: {{ .drink | default "tea" | quote }}
food: {{ .food | upper | quote }}
release: {{ .Release.Name }}
{{- end }}
Release.Name
with
ブロックの限られた範囲内ではありません(スキャン).スキャン問題の解決策の1つは、現在のスキャンを考慮せずにアクセス可能な変数を割り当てることです.Helmテンプレートでは、変数は他のオブジェクトを参照するために命名されます.
$name
として作成され、特定の演算子(:=
)を使用して割り当てられます.変数を使用して上記の例を書き換え、Release.Name
にアクセスします.apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
{{- $relname := .Release.Name -}}
{{- with .Values.favorite }}
drink: {{ .drink | default "tea" | quote }}
food: {{ .food | upper | quote }}
release: {{ $relname }}
{{- end }}
with
ブロックに入る前に、$relname := .Release.Name
が割り当てられていることに注意してください.with
ブロック内では現在$relname
変数はバージョン名を示します.上記の例を実行して、次の内容を作成します.
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: viable-badger-configmap
data:
myvalue: "Hello World"
drink: "coffee"
food: "PIZZA"
release: viable-badger
特にそれらの変数. range
リングでとても役に立ちます.変数は、リストなどのオブジェクトからインデックスと値をインポートするために使用されます.toppings: |-
{{- range $index, $topping := .Values.pizzaToppings }}
{{ $index }}: {{ $topping }}
{{- end }}
range
を参照してください.まず、変数、割当て演算子、およびリストの順序でリストされます.次に、整数インデックス(0から)は$index
に割り当てられ、値は$topping
である.実行してみようtoppings: |-
0: mushrooms
1: cheese
2: peppers
3: onions
データ構造に鍵と値(value)が同時にある場合は、range
を使用して両方の値を同時に取得できます.例: .Values.favorite
の値を繰り返すことができます.apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
{{- range $key, $val := .Values.favorite }}
{{ $key }}: {{ $val | quote }}
{{- end }}
最初の繰り返しで $key
drink
になります. $val
coffee
になります.そして次の反復では$key
food
街 $val
pizza
実行すると、次のように作成されます.# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: eager-rabbit-configmap
data:
myvalue: "Hello World"
drink: "coffee"
food: "pizza"
変数は通常、グローバル値ではありません.宣言されたブロックに限定されます.以前に割り当てられた$relname
はテンプレートの最上位レベルで割り当てられているため、テンプレート全体が利用可能になります.しかし、最後の例では、 $key
わあ. $val
{{ range... }}{{ end }}
ブロックに限定されます.ただし、グローバル変数は常に存在します.
$
- この変数は常にルートコンテキストを指します.グラフがrange内でループするときのバージョン名を知りたい場合は、これを使用します.これは例です.
{{- range .Values.tlsSecrets }}
apiVersion: v1
kind: Secret
metadata:
name: {{ .name }}
labels:
# Many helm templates would use `.` below, but that will not work,
# however `$` will work here
app.kubernetes.io/name: {{ template "fullname" $ }}
# I cannot reference .Chart.Name, but I can do $.Chart.Name
helm.sh/chart: "{{ $.Chart.Name }}-{{ $.Chart.Version }}"
app.kubernetes.io/instance: "{{ $.Release.Name }}"
# Value from appVersion in Chart.yaml
app.kubernetes.io/version: "{{ $.Chart.AppVersion }}"
app.kubernetes.io/managed-by: "{{ $.Release.Service }}"
type: kubernetes.io/tls
data:
tls.crt: {{ .certificate }}
tls.key: {{ .key }}
---
{{- end }}
これまで、1つのファイルに宣言されたテンプレートしか見られませんでした.しかし、Helmテンプレート言語の強力な特性の一つは、複数のテンプレートを宣言し、同時に使用できることです.次の章を見てみましょう.Reference
この問題について(Variables), 我々は、より多くの情報をここで見つけました https://velog.io/@nueah/Variablesテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol