Шаблон Helm не может прочитать IP-адрес - не может оценить поле ipAddress в строке типа

Я пытаюсь создать шаблон helm для ServiceEntry Istio, в котором есть список адресов для статических IP-адресов. В values.yaml у меня есть

- name: test-se
  namespace: test-se-ns
  egressUrls: 
  - mydbhost.com
  port: 32306
  protocol: TCP
  ipAddress: 10.2.2.2

В файле .tpl я пытаюсь добавить значение ipAddress в список.

  {{- with .ipAddress }}
  addresses: 
  - {{ .ipAddress | quote }}
  {{- end }}

Всегда терпит неудачу с исключением

templates/_service_entry.tpl:18:13: выполнение «common.serviceentry.tpl» в <.ipAddress>: невозможно оценить поле ipAddress в строке типа

Любая идея, что я делаю неправильно?

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
0
0
43
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если вы используете with, вы делаете то, что вы использовали в качестве with, контекстом внутри этого блока.

Итак, используйте точку, чтобы обратиться к нему.

{{- with .ipAddress }}
addresses: 
  - {{ . | quote }}
{{- end }}

Из документы:

{{with pipeline}} T1 {{end}}
    If the value of the pipeline is empty, no output is generated;
    otherwise, dot is set to the value of the pipeline and T1 is
    executed.

В этом случае if также кажется уместным, так как вы не так много делаете с новым контекстом.

{{- if .ipAddress }}
addresses: 
  - {{ .ipAddress | quote }}
{{- end }}

когда вы используете with в Helm, вы изменяете область действия ., поэтому Helm ищет объект, а не строку, вы можете прочитать об этом больше в документы.

но в любом случае, я думаю, что в вашем случае нужно использовать range вместо with, можете посмотреть пример здесь

Другие вопросы по теме