gpt4 book ai didi

kubernetes - 如何通过 Helm 图表从 json 中读取值

转载 作者:行者123 更新时间:2023-12-02 12:18:21 27 4
gpt4 key购买 nike

我在 json 文件中定义了值。

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

该值必须传递给 yaml 文件,如下所示
-config-file={{ tpl (.Files.Get "encrypt.json") . | b64enc }}  \

下面是 Helm chart 片段
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=="}'

最佳答案

你用 {{ tpl (.Files.Get "encrypt.json") . | b64enc }} 注入(inject)的东西是 json 的内容,即 {"encrypt": "cg8StVXbQJ0gPvMd9o7yrg=="} .但我认为这不是该参数所期望的。似乎期望 Pod 中应该可用的文件的文件名,这可以通过挂载 configmap 来完成。即how the consul helm chart in the official kubernetes charts handles it :

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

lets the user set a gossip key in the values filesets that in a secret这是 mounted into pod as a volume .如果可以的话,我建议遵循该图表的方法。

我猜你正在做的是建立在 the consul helm chart that Hashicorp provides 之上因为您包含的代码与此类似。因此,大概您不能使用 kubernetes 存储库中的那个,但您应该能够遵循该图表为此配置文件采取的方法。

关于kubernetes - 如何通过 Helm 图表从 json 中读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53867650/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com