Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 在头盔中切片未找到匹配项_Kubernetes_Kubernetes Helm - Fatal编程技术网

Kubernetes 在头盔中切片未找到匹配项

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

我在helm中有以下
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元字符