Kos*_*ahb 3 json kubernetes kubernetes-helm
如何将整个JSON字符串传递给Helm图表值?
我在values.yml哪里config值应包含带有应用程序配置的整个JSON
...
config: some JSON here
...
Run Code Online (Sandbox Code Playgroud)
我需要将此值传递给秘密模板,然后将其作为卷安装到Kubernetes容器中。
{{- $env := default "integration" .Values.env}}
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-{{ $env }}
type: Opaque
data:
config.json: {{ .Values.config | b64enc | quote }}
Run Code Online (Sandbox Code Playgroud)
但是,像这样传递单引号字符串的明显方法'{"redis": "localhost:6379"}'失败了,因为Helm出于某种原因删除了字符串中的所有双引号(即使我转义了双引号),因此我最终{redis: localhost:6379}得到的不是有效的JSON。
还有其他任何可能性如何一次将配置全部传递到Pod,而不用加载具有tpl功能的模板文件并使所有需要的字段分别访问values.yml吗?
如果您想避免编码,这是另一个建议:
env:
- name: MYCONFIG
value: {{ .Files.Get "config.json" | toPrettyJson }}
Run Code Online (Sandbox Code Playgroud)
根据helm 文档,helm 使用模板函数,例如toPrettyJson内置的 Go text/template 包和Sprig 模板函数库提供的函数。
如果.Values.config包含json,则可以在模板化Secret中使用{{ .Values.config | toJson | b64enc | quote }}。toJson用来将json转换为json 似乎很奇怪,但是helm在您告诉您之前不会将其本机视为json。有关执行此操作的示例,请参见SO问题如何在yaml文件(Helm)中使用json变量。
| 归档时间: |
|
| 查看次数: |
4345 次 |
| 最近记录: |