Как использовать .Values ​​в других переменных циклах - PullRequest
0 голосов
/ 15 сентября 2018

Ниже мой случай:

{{- $v := (.Files.Get "values-productpage.yaml") | fromYaml }}.   
   spec:
     {{- range $key, $value := $v.containers }}
     containers:
     - name: {{ $value.name }}
       image: {{.Values.productpage_image}}:latest

Здесь, при использовании .Values.productpage_image, он сообщает: невозможно оценить поле productpage_image в интерфейсе типа {}. Есть ли здесь какая-либо ошибка использования? Почему нельзя использовать .Values.xxx в этом цикле? Если я переместу .Values ​​на первую строку, ошибки не будет.

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Как правильно объяснил @abinet о причине, я поделюсь своим решением для этого (которое мне очень помогло, и я надеюсь, что это сэкономит вам время):

Сначала я сохранил область действия:
{{- $root := . -}}

и после этого я вызвал .Value внутри контекста цикла следующим образом:
{{ $root.Values.data }}

, поэтому в основном ваш код должен выглядеть следующим образом:

{{- $root := . -}}

{{- $v := (.Files.Get "values-productpage.yaml") | fromYaml }}.   
  spec:
   {{- range $key, $value := $v.containers }}
   containers:
   - name: {{ $value.name }}
     image: {{$root.Values.productpage_image}}:latest
0 голосов
/ 18 сентября 2018

Это потому, что диапазон меняет область действия (см. Подробное описание здесь https://github.com/helm/helm/blob/master/docs/chart_template_guide/control_structures.md#looping-with-the-range-action).

. Вы можете присвоить .Values.productpage_image переменной вне диапазона и использовать внутри.

...