Kubernetes 在头盔中切片未找到匹配项
我在helm中有以下Kubernetes 在头盔中切片未找到匹配项,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我在helm中有以下definedefinition: {{- define "svc.envVars" -}} {{- range .Values.envVars.withSecret }} - name: {{ .key }} valueFrom: secretKeyRef: name: {{ .secretName }} key: {{ .secretKey | quote }} {{- end }} {{- range .Value
define
definition:
{{- define "svc.envVars" -}}
{{- range .Values.envVars.withSecret }}
- name: {{ .key }}
valueFrom:
secretKeyRef:
name: {{ .secretName }}
key: {{ .secretKey | quote }}
{{- end }}
{{- range .Values.envVars.withoutSecret }}
- name: {{ .name }}
value: {{ .value | quote }}
{{- end }}
{{- end }}
我将在部署中使用它。yaml
containers:
- name: {{ .Release.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.envVars.enabled }}
env:
{{- include "svc.envVars" . | indent 10 }}
{{- end }}
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /
port: http
resources:
{{- toYaml .Values.resources | nindent 12 }}
在values.yaml
中,定义如下:
envVars:
enabled: false
withSecret: []
withoutSecret: []
然后我试图呈现:
helm template --debug user-svc \
--set image.tag=0.1.0 \
--set image.repository=user-svc \
--set envVars.enabled=true \
--set envVars.withSecret[0].key=POSTGRES_URL,envVars.withSecret[0].secretName=postgres_name,envVars.withSecret[0].secretKey=postgres_pw \
--set envVars.withSecret[1].key=MYSQL_URL,envVars.withSecret[1].secretName=mysql_name,envVars.withSecret[1].secretKey=mysql_pw \
./svc
它告诉我:
zsh: no matches found: envVars.withSecret[0].key=POSTGRES_URL,envVars.withSecret[0].secretName=postgres_name,envVars.withSecret[0].secretKey=postgres_pw
当我在values.yaml中手动设置变量时:
envVars:
enabled: false
withSecret:
- key: POSTGRES_URL
secretName: postgres_name
secretKey: postgres_pw
- key: MYSQL_URL
secretName: mysql_name
secretKey: mysql_pw
withoutSecret:
- name: NOT_SECRET
value: "Value of not serect"
然后使用以下命令渲染它:
helm template --debug user-svc \
--set image.tag=0.1.0 \
--set image.repository=user-svc \
--set envVars.enabled=true \
./svc
然后它就如预期的那样工作了
我做错了什么?我也有同样的问题。由于这一事实,zsh解释了´´[´和´]´。
您可以使用noglob
禁用globales。因此,不解释are´´´和´]´
noglob头盔模板——设置lorem[0]。ipsum=1337
在您的示例中:
noglob-helm模板——调试用户svc\
--设置image.tag=0.1.0\
--set image.repository=user svc\
--设置envVars.enabled=true\
--设置envVars.withSecret[0]。key=POSTGRES\u URL,envVars.withSecret[0]。secretName=POSTGRES\u name,envVars.withSecret[0]。secretKey=POSTGRES\u pw\
--设置envVars.withSecret[1]。key=MYSQL\u URL,envVars.withSecret[1]。secretName=MYSQL\u name,envVars.withSecret[1]。secretKey=MYSQL\u pw\
/svc
资料来源:
- (
正如zsh:
前缀所明确指出的,您看到的是外壳的输出,而不是头盔;您需要引用这些表达式,因为[
和]
是shell元字符