Im using the following file by helm
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-cfg
data:
default.conf: |-
{{ .Files.Get "config/nginx.conf" | nindent 4 }}
and I got the following error:
Error: YAML parse error on ops/templates/config/nginx.conf: error converting YAML to JSON: yaml: line 4: mapping values are not allowed in this context
The nginx file looks like following
nginx.conf
server {
listen 80;
listen [::]:80;
server_name: {{ print "kiftb." .Values.global.host | quote }} // this is the error line
...
The line with the sever_name create the error.
Any idea how to solve it?
update
As suggested by @Evan I've tried to remove the colon,
server_name {{ print "kiftb." .Values.global.host | quote }}
And I got an error:
error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type releaseutil.SimpleHead
helm.go:81: [debug] error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type releaseutil.SimpleHead
Any Idea how to overcome this? is there any workaround ?
Try removing the colon after server_name.
server_name {{ print "kiftb." .Values.global.host | quote }}
...
Sounds like you put the conf file in a wrong path. Helm deals with all the files inside ${chart_path}/templates/ as template or tpl files, which should be composed in YAML file. So basically you are facing the issue that helm are trying to parse ops/templates/config/nginx.conf as a template file, and definitely it will fail.
The solution would be: move your conf file out of the path ops/templates, use ops/config/nginx.conf would be fine, and you even do not need change anything in your configmap script, it will work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With