skip to Main Content

I want to set wildcard subdomain for my project, using k8s, nginx ingress controller, helm chart:

In ingress.yaml file:

...
rules:
  - host: {{ .Values.ingress.host }}
...

In values.yaml file, I change host example.local to *.example.local:

...
ingress:
  enabled: true
  host: "*.example.local"
...

Then, when I install chart using helm chart:

Error: YAML parse error on example/templates/ingress.yaml: error converting YAML to JSON: yaml: line 15: did not find expected alphabetic or numeric character

How can I fix it?

Thank for your support.

3

Answers


  1. In your ingress.yaml put quotes around the host key.

    host: "{{ .Values.ingress.host }}"
    
    Login or Signup to reply.

  2. ingress:
    enabled: true
    host: "*.example.local"

    you may need to use "—" instead of

    Login or Signup to reply.
  3. YAML treats strings starting with asterisk in a special way – that’s why the hostname with wildcards like *.example.local breaks the ingress on helm install.
    In order to be recognized as strings, the values in ingress.yaml file should be quoted with " " characters:

    ...
    rules:
      - host: "{{ .Values.ingress.host }}"
    ...
    

    One more option here – adding | quote :

    ...
    rules:
      - host: {{ .Values.ingress.host | quote }}
    ...
    

    I’ve reproduced your issue, both these options worked correctly. More information on quoting special characters for YAML is here.

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