mongodb Helm需要值而不使用它

lf5gs5x2  于 2023-10-16  发布在  Go
关注(0)|答案(3)|浏览(87)

是否可以有一个必需的.Value而不使用它在模板中。
例如,在我的例子中,我想要求为mongodb的子图写一个密码,但我不会在我的模板上使用它,所以我可以在模板中有类似bellow的东西:

{{- 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
...
cvxl0en2

cvxl0en21#

可能最直接的方法是使用sprig的fail函数。

{{- 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 -}}
wfypjpf4

wfypjpf42#

是的,有可能。让我们考虑下面的Values.yaml文件:
Values.yaml:

mongodb:
  mongodbPassword: "AbDEX***"

因此,您希望仅在设置了密码的情况下才生成部署文件。你可以使用if-block的go-templating。如果密码字段的长度大于零,将生成部署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.
klr1opcd

klr1opcd3#

只是分配给一个未使用的变量

{{- $ := .Values.foo | required "foo is required" }}
{{- $ := coalesce .Values.bar .Values.baz | required "bar or baz is required" }}

相关问题