Шлем требует значения, не используя его - PullRequest
0 голосов
/ 12 февраля 2020

Возможно ли иметь требуемый .Value без использования его в шаблоне.

Например, в моем случае я хочу потребовать написать пароль для подкарты mongodb, но я не буду использовать это на моих шаблонах, так что я могу иметь что-то вроде ниже в шаблоне:

{{- required 'You must set a mongodb password' .Values.mongodb.mongodbPassword | noPrint -}}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "cloud.fullname" . }}
  labels:
    {{- include "cloud.labels" . | nindent 4 }}
    app.kubernetes.io/component: cloud
spec:
  replicas: {{ .Values.cloud.minReplicaCount }}
  selector:
....

И результат будет что-то вроде:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: blablablabla
...

Ответы [ 2 ]

2 голосов
/ 13 февраля 2020

Возможно, самый прямой способ - использовать функцию fail sprig.

{{- if not .Values.mongodb.mongodbPassword -}}
{{- fail "You must set a mongodb password" -}}
{{- end -}}

Присвоение переменной required переменной (которую вы никогда не используете), вероятно, также иметь желаемый эффект.

{{- $unused := required "You must set a mongodb password" .Values.mongodb.mongodbPassword -}}
0 голосов
/ 12 февраля 2020

Да, это возможно. Давайте рассмотрим следующий Values.yaml файл:

Values.yaml:

mongodb:
  mongodbPassword: "AbDEX***"

Итак, вы хотите сгенерировать файл развертывания, только если установлен пароль. Вы можете сделать это, используя if-block из go. Если длина поля пароля больше нуля, будет сгенерирован yaml развертывания, иначе нет.

{{- if  .Values.mongodb.mongodbPassword}}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "cloud.fullname" . }}
  labels:
    {{- include "cloud.labels" . | nindent 4 }}
    app.kubernetes.io/component: cloud
spec:
  replicas: {{ .Values.cloud.minReplicaCount }}
  selector:
....
{{- end }}

Ссылка:

{{if pipeline}} T1 {{end}}
    If the value of the pipeline is empty, no output is generated;
    otherwise, T1 is executed. The empty values are false, 0, any nil pointer or
    interface value, and any array, slice, map, or string of length zero.
    Dot is unaffected.
...