How to pass entire JSON string to Helm chart value? How to pass entire JSON string to Helm chart value? kubernetes kubernetes

How to pass entire JSON string to Helm chart value?


If .Values.config contains json then you can use it in your templated secret with

{{ .Values.config | toJson | b64enc | quote }}

It may seem strange to use toJson to convert JSON to JSON but helm doesn't natively treat it as JSON until you tell it to. See the SO question How do I use json variables in a yaml file (Helm) for an example of doing this.


Here is another suggestion if you want to avoid encoding :

env:  - name: MYCONFIG  value: {{ .Files.Get "config.json" | toPrettyJson }}

According to the helm docs, helm uses template functions such as toPrettyJson which are supplied by the built-in Go text/template package and the Sprig template function library.


when passing something to --set or --set-string and you don't want helm to interpret it you want to escape every single of=

{[,.]}

with backslash. Remember about your shell that might interpret \ so sometimes you might want to \ or use value in single quotas instead.Something like this works for me in bash:

--set airflow.config.AIRFLOW__SECRETS__BACKEND_KWARGS='\{\\\"variables_prefix\\\": \\\"/here-is-my-prefix/'${bamboo_deploy_environment}'/airflow/variables\\\"\, \\\"connections_prefix\\\": \\\"/here-is-my-prefix/'${bamboo_deploy_environment}'/airflow/connections\\\"\}'