循环不带引号的配置值

问题描述 投票:0回答:1

我正在尝试通过执行以下操作从值列表中创建配置映射

{{- if index .Values "environmentVariables" }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "some-env.fullname" . }}
data:
{{- range $key, $value := .Values.environmentVariables }}
  {{ $key }}: {{ $value }}
{{- end }}
{{- end }}

具有以下值

environmentVariables:
  SERVER_CONTEXT_PATH: /some/where/v2
  SERVER_PORT: 8080

但这会导致以下错误消息

Error: release my-chart-env-v2-some-env-test failed: ConfigMap in version "v1" cannot be handled as a ConfigMap: v1.ConfigMap: Data: ReadString: expects " or n, parsing 106 ...ER_PORT":8... at {"apiVersion":"v1","data":{"SERVER_CONTEXT_PATH":"/dokument-redskaber/my-chart-app/v2","SERVER_PORT":8080},"kind":"ConfigMap","metadata":{"labels":{"app.kubernetes.io/instance":"my-chart-env-v2-some-env-test","app.kubernetes.io/managed-by":"Tiller","app.kubernetes.io/name":"some-env","helm.sh/chart":"some-env-0.1.0"},"name":"my-chart-env-v2","namespace":"some-env-test"}}

如果我做

  {{ $key }}: {{ $value | quote }}

有用。但我(我想)并不想引用我所有的价值观。简单地引用我的输入值不起作用。有什么建议?

kubernetes yaml kubernetes-helm go-templates
1个回答
1
投票

所有值都是字符串所需的ConfigMap对象qazxsw poi字段。当我们有像data这样的值时,它读作int。

我们可以在这里建立8080对象:

1.使用ConfigMap函数将所有值定义为字符串:

quote

values.yaml

environmentVariables: SERVER_CONTEXT_PATH: /some/where/v2 SERVER_PORT: 8080 的一部分:

templates/configmap.yaml

2.使用双引号将所有值定义为字符串:

data: {{- range $key, $value := .Values.environmentVariables }} {{ $key }}: {{ $value | quote }} {{- end }}

values.yaml

environmentVariables: SERVER_CONTEXT_PATH: /some/where/v2 SERVER_PORT: 8080 的一部分:

templates/configmap.yaml

3.在data: {{- range $key, $value := .Values.environmentVariables }} {{ $key }}: "{{ $value }}" {{- end }} 中将所有int值定义为字符串值:

values.yaml

values.yaml

environmentVariables: SERVER_CONTEXT_PATH: /some/where/v2 SERVER_PORT: '"8080"' 的一部分:

templates/configmap.yaml

这里有一些技巧:当获取值时,它基本上被视为data: {{- range $key, $value := .Values.environmentVariables }} {{ $key }}: {{ $value }} {{- end }} ,可以将其设置为字符串值。

© www.soinside.com 2019 - 2024. All rights reserved.