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 ?
2
Answers
Try removing the colon after
server_name
.…
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 parseops/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
, useops/config/nginx.conf
would be fine, and you even do not need change anything in your configmap script, it will work.