<p>I am very new to using helm charts and not sure why I get this error when I try to install my helm chart. I am using --set with helm install command to set the hostname at ingress.hosts[0].host.I do not understand why it says missing paths where as &quot;paths&quot; is already present.</p>
<p>ingress.yaml</p>
<pre><code>{{- if .Values.ingress.enabled -}}
{{- $fullName := include &quot;project.fullname&quot; . -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: {{ $fullName }}
  labels:
    app.kubernetes.io/name: {{ include &quot;project.name&quot; . }}
    helm.sh/chart: {{ include &quot;project.chart&quot; . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
    app.kubernetes.io/managed-by: {{ .Release.Service }}
  {{- with .Values.ingress.annotations }}
  annotations:
    {{- toYaml . | nindent 4 }}
  {{- end }}
spec:
{{- if .Values.ingress.tls }}
  tls:
  {{- range .Values.ingress.tls }}
    - hosts:
      {{- range .hosts }}
        - {{ . | quote }}
      {{- end }}
      secretName: {{ .secretName }}
  {{- end }}
{{- end }}
  rules:
  {{- range .Values.ingress.hosts }}
    - host: {{ .host | quote }}
      http:
        paths:
        {{- range .paths }}
          - path: {{ . }}
            backend:
              serviceName: {{ $fullName }}
              servicePort: http
        {{- end }}
  {{- end }}
{{- end }}
</code></pre>
<p>values.yaml</p>
<pre><code>...
...
...
ingress:
  enabled: true
  hostname: some_hostname
  annotations:
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: &quot;true&quot;
    nginx.ingress.kubernetes.io/proxy-connect-timeout: &quot;180&quot;
    nginx.ingress.kubernetes.io/proxy-send-timeout: &quot;180&quot;
    nginx.ingress.kubernetes.io/proxy-read-timeout: &quot;180&quot;
  hosts:
    - host: some_hostname
      paths: [/]

  tls:
    - secretName: some_secretname
      hosts: 
        - some_hostname

resources: {}

...
...
...
</code></pre>
<p>command to install helm</p>
<pre><code>helm upgrade --install $(PROJECT_NAME) --set ingress.hosts[0].host=&quot;${HOST_NAME} --set ingress.tls[0].hosts=&quot;{${HOST_NAME}}&quot;&quot; 
</code></pre>
<p>error:</p>
<pre><code>Error: UPGRADE FAILED: error validating &quot;&quot;: error validating data: ValidationError(Ingress.spec.rules[0].http): missing required field &quot;paths&quot; in io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue
</code></pre>

<p>I had the same issue, for some reason if you define the host in the <code>--set</code> you also have to define the path in the set (even though it matches the yaml). Like so,</p>
<pre><code>helm upgrade --install $(PROJECT_NAME) --set ingress.hosts[0].host=${HOST_NAME}  --set ingress.hosts[0].paths[0]=/
</code></pre>
<p>I haven't done tls yet so I am not sure if that has the same issue.</p>
