Цикл по значениям конфигурации без кавычек - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь создать карту конфигурации из списка значений, выполнив следующее

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

, это сработает.Но я (думаю, я) не хочу цитировать все свои ценности.И просто цитирование моего входного значения не работает.Есть предложения?

1 Ответ

1 голос
/ 05 апреля 2019

Объект ConfigMap data feild требует, чтобы все значения были строками.Когда у нас есть значение типа 8080, оно читается как int.

Что мы можем сделать для создания ConfigMap объекта здесь:

1. Определить все значения как строкииспользуя quote функцию:

values.yaml:

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

часть templates/configmap.yaml:

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

2. Определить всезначения в виде строк с использованием двойных кавычек:

values.yaml:

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

часть templates/configmap.yaml:

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

3. Определитьвсе значения типа 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 }}

Вот несколько хитростей:когда берется значение, оно в основном принимается как "8080", которое может быть точно установлено как строковое значение.

...