helm range 获取循环外的值

jjb*_*kir 3 kubernetes kubernetes-helm

我正在查看他们文档中的 helm range 示例。

yaml

favorite:
  drink: coffee
  food: pizza
pizzaToppings:
  - mushrooms
  - cheese
  - peppers
  - onions
Run Code Online (Sandbox Code Playgroud)

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  myvalue: "Hello World"
  {{- with .Values.favorite }}
  drink: {{ .drink | default "tea" | quote }}
  food: {{ .food | upper | quote }}
  {{- end }}
  toppings: |-
    {{- range .Values.pizzaToppings }}
    - {{ . | title | quote }}
    - {{ .Values.favorite.drink }}
    {{- end }}
Run Code Online (Sandbox Code Playgroud)

我更新了它以包含这一行- {{ .Values.favorite.drink }},但是当我运行时helm template出现错误

can't evaluate field Values 
Run Code Online (Sandbox Code Playgroud)

.Values是否有办法从函数内部访问顶层range并退出循环?

Yur*_* G. 12

$您还可以使用指向根上下文的全局变量

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  myvalue: "Hello World"
  {{- with .Values.favorite }}
  drink: {{ .drink | default "tea" | quote }}
  food: {{ .food | upper | quote }}
  {{- end }}
  toppings: |-
    {{- range $.Values.pizzaToppings }}
    - {{ . | title | quote }}
    - {{ $.Values.favorite.drink }}
    {{- end }}
Run Code Online (Sandbox Code Playgroud)


Maf*_*for 6

您可以使用变量:

  toppings: |-
    {{- $drink := .Values.favorite.drink }}
    {{- range .Values.pizzaToppings }}
    - {{ . | title | quote }}
    - {{ $drink }}
    {{- end }}
Run Code Online (Sandbox Code Playgroud)

如果您愿意,也可以分配Values给变量。

  toppings: |-
    {{- $val := .Values }}
    {{- range .Values.pizzaToppings }}
    - {{ . | title | quote }}
    - {{ $val.favorite.drink }}
    {{- end }}
Run Code Online (Sandbox Code Playgroud)