Helm upgrade fails with error: expects " or n, but found t

12/16/2019

I'm trying to add a new pod to my helm chart, it passes validation (helm lint) but fails at last stage of deployment:

Mon Dec 16 10:01:58 2019 INFO Running helm install/upgrade for xyz-stg
UPGRADE FAILED Error: "" is invalid: patch: Invalid value: "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\"
(...)
ReadString: expects " or n, but found t, error found in #10 byte of ...|,"value":true},{"nam|..., bigger context ...|"value":"stg"}, (...)
Error: UPGRADE FAILED: "" is invalid: patch: Invalid value: "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\": (...)
ReadString: expects " or n, but found t, error found in #10 byte of ...|,"value":true},{"nam|..., bigger context ...|"value":"stg"}, (...) Mon Dec 16 10:02:09 2019 ERROR Upgrade/Installation of xyz-stg failed

I have no idea what this error means or how to even debug it. It sounds like some syntax indentation error, but all I did was: copy-pasted the pod configuration from other working pod and changed all names.

-- van_folmert
kubernetes-helm

2 Answers

4/8/2020

Add double quotes and update the deployment.yaml with following changes

In deploymeny.yaml file

        value: {{ .Values.environment.TEMP }}
        value: {{ quote .Values.environment.TEMP }}

In Values.yaml file

Envrionment: TEMP: "true"

-- vikas ray
Source: StackOverflow

5/4/2020

I ran into a similar problem and apparently it turns out Kubernetes's Pod specification requires environment variable values to be coerced as strings, so integers need to be passed through quote.So, in your deploymeny.yaml file wherever you are using the numeric values try to pass them as below.

value: {{ .Values.environment.TEMP | quote}}

It will work just fine after that. Hope it helps

-- Mohammad Faraz
Source: StackOverflow