Предложение If в диаграмме управления - PullRequest
0 голосов
/ 10 июля 2020

Как я могу проверить, является ли переменная логическим значением «истина» в диаграмме управления? У меня в Values.yaml параметр установлен как:

myParameter: true

Я не очень понимаю разницу между:

{{- if .Values.service.myParameter }}

и

{{- if eq .Values.service.myParameter "true" }}

Я хочу этот поток входит в предложение if, если для параметра задано логическое значение "истина"

Ответы [ 2 ]

2 голосов
/ 10 июля 2020

Документация для Go text/template пакета объясняет, что оператор if считает «истинным»:

Пустые значения [«false»] являются ложными, 0, любым указателем nil или значением интерфейса, а также любым массивом, фрагментом, картой или строкой нулевой длины.

Значения YAML вводятся, и обычные правила таковы, что true и false - это логические значения:

boolean: true
string: other text, but not "true", "false", or "null"
also a string: 'true'

В ваших примерах:

{{- if .Values.service.myParameter }}...{{ end }}

будет оценивать значение true всякий раз, когда существует myParameter (не Go nil) и isn 't ноль, литерал false или пустая строка.

{{- if eq .Values.service.myParameter "true" }}...{{ end }}

будет оцениваться как истина, если myParameter в точности соответствует строке "true", но не логическому true. (Я думаю, что вы получите ошибку типа от механизма шаблонов, если на самом деле это логическое значение.)

1 голос
/ 10 июля 2020

Вы можете использовать следующий фрагмент для проверки логического значения

      {{if (default .Values.seLinux true)}}
      securityContext:
        seLinuxOptions:
          user: system_u
      {{ end }}

Тогда файл значений будет иметь следующий фрагмент

seLinux: true

Пожалуйста, дайте мне знать, если это поможет.

...