skip to Main Content

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


  1. Try removing the colon after server_name.

    server_name {{ print "kiftb." .Values.global.host | quote }}
    

    Login or Signup to reply.
  2. 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.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search