<p>I am trying to deploy a service using helm. The cluster is Azure AKS &amp; I have one DNS zone associated with a cluster that can be used for ingress.</p>
<p>But the issue is that the DNS zone is in k8s secret &amp; I want to use it in ingress as host. like below</p>
<pre class="lang-yaml prettyprint-override"><code>spec:
  tls:
  - hosts:
    - {{ .Chart.Name }}.{{ .Values.tls.host }}
  rules:
  - host: {{ .Chart.Name }}.{{ .Values.tls.host }}
    http:
      paths:
        -
          pathType: Prefix
          backend:
            service:
              name: {{ .Chart.Name }}
              port:
                number: 80
          path: &quot;/&quot;
</code></pre>
<p>I want <code>.Values.tls.host</code> value from secret. Currently, it is hardcoded in <code>values.yaml</code> file.</p>

<p><em>This is a community wiki answer posted for better visibility. Feel free to expand it.</em></p>
<p>For the current version of Helm (3.8.0), it seems not possible to use values right from Secret <strong>with standard approach</strong>.
Based on the information from <a href="https://helm.sh/" rel="nofollow noreferrer">Helm website</a>:</p>
<blockquote>
<p>A template directive is enclosed in <code>{{</code> and <code>}}</code> blocks.
The values that are passed into a template can be thought of as <em>namespaced
objects</em>, where a dot (<code>.</code>) separates each namespaced element.</p>
</blockquote>
<p><a href="https://helm.sh/docs/chart_template_guide/builtin_objects/" rel="nofollow noreferrer">Objects are passed into a template from the template engine</a> and can be:</p>
<ul>
<li>Release</li>
<li>Values</li>
<li>Chart</li>
<li>Files</li>
<li>Capabilities</li>
<li>Template</li>
</ul>
<p><a href="https://helm.sh/docs/chart_template_guide/values_files/" rel="nofollow noreferrer">Contents for Values objects can come from multiple sources</a>:</p>
<blockquote>
<ul>
<li>The  <code>values.yaml</code>  file in the chart</li>
<li>If this is a subchart, the  <code>values.yaml</code>  file of a parent chart</li>
<li>A values file if passed into  <code>helm install</code>  or  <code>helm upgrade</code>  with the  <code>-f</code>  flag (<code>helm install -f myvals.yaml ./mychart</code>)</li>
<li>Individual parameters passed with  <code>--set</code>  (such as  <code>helm install --set foo=bar ./mychart</code>)</li>
</ul>
</blockquote>
