Как прочитать значение из json через диаграммы Хелма - PullRequest
0 голосов
/ 20 декабря 2018

Я определил значение в файле json.

cat templates/encrypt.json
{"encrypt": "cg8StVXbQJ0gPvMd9o7yrg=="}

Значение должно быть передано в файл yaml, как показано ниже

-config-file={{ tpl (.Files.Get "encrypt.json") . | b64enc }}  \

Ниже приведен фрагмент диаграммы руля

exec /bin/consul agent \
            -node="${NODE}" \
            -advertise="${POD_IP}" \
            -bind=0.0.0.0 \
            -client=0.0.0.0 \
            {{- if .Values.client.grpc }}
            -hcl="ports { grpc = 8502 }" \
            {{- end }}
            -config-dir=/consul/config \
            {{- range .Values.client.extraVolumes }}
            {{- if .load }}
            -config-dir=/consul/userconfig/{{ .name }} \
            {{- end }}
            {{- end }}
            -datacenter={{ .Values.global.datacenter }} \
            -data-dir=/consul/data \
            -config-file={{ tpl (.Files.Get "encrypt.json") . | b64enc }}  \
            {{- if (.Values.client.join) and (gt (len .Values.client.join) 0) }}

Когда я запускаю свои диаграммы здоровья, я получаю ошибку ниже.

Error: unable to decode "": Object 'Kind' is missing in '{"encrypt":"cg8StVXbQJ0gPvMd9o7yrg=="}'

1 Ответ

0 голосов
/ 20 декабря 2018

То, что вы вводите с {{ tpl (.Files.Get "encrypt.json") . | b64enc }}, - это содержимое json, т.е. {"encrypt": "cg8StVXbQJ0gPvMd9o7yrg=="}.Но я не думаю, что этого ожидает этот параметр.Кажется, ожидается имя файла для файла, который должен быть доступен в модуле Pod, что можно сделать, смонтировав configmap.Вот как как обрабатывает диаграмма консула в официальных таблицах kubernetes :

            {{- if .Values.Gossip.Encrypt }}
            if [ -e /etc/consul/secrets/gossip-key ]; then
              echo "{\"encrypt\": \"$(base64 /etc/consul/secrets/gossip-key)\"}" > /etc/consul/encrypt.json
              GOSSIP_KEY="-config-file /etc/consul/encrypt.json"
            fi
            {{- end }}

Это позволяет пользователю установить ключ сплетни в файле значений и устанавливает это в секретном , который монтируется в Бочках как том .Я бы посоветовал следовать подходу этой схемы, если вы можете.

Я думаю, что вы делаете, опираясь на таблицу консула, которую Hashicorp предоставляет , поскольку код, который вы включаете,похоже на это.Итак, предположительно, вы не можете использовать тот из репозитория kubernetes, но вы должны быть в состоянии следовать подходу, принятому этой диаграммой для этого файла конфигурации.

...