<h2>Context</h2>
<p>I have a <strong>k3s</strong> (v1.19.3+k3s3) cluster and I am using the '<em>out of the box</em>' <a href="https://rancher.com/docs/k3s/latest/en/networking/" rel="nofollow noreferrer">traefik ingress controler</a></p>
<pre class="lang-sh prettyprint-override"><code>kubectl  get svc -n kube-system 
NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
kube-dns             ClusterIP      10.43.0.10      &lt;none&gt;          53/UDP,53/TCP,9153/TCP       5d16h
metrics-server       ClusterIP      10.43.127.152   &lt;none&gt;          443/TCP                      5d16h
traefik-prometheus   ClusterIP      10.43.73.131    &lt;none&gt;          9100/TCP                     5d16h
traefik              LoadBalancer   10.43.121.125   111.11.11.111   80:32492/TCP,443:31586/TCP   5d16h
</code></pre>
<pre class="lang-sh prettyprint-override"><code>kubectl   -n kube-system describe svc traefik
Name:                     traefik
Namespace:                kube-system
Labels:                   app=traefik
                          app.kubernetes.io/managed-by=Helm
                          chart=traefik-1.81.0
                          heritage=Helm
                          release=traefik
Annotations:              meta.helm.sh/release-name: traefik
                          meta.helm.sh/release-namespace: kube-system
Selector:                 app=traefik,release=traefik
Type:                     LoadBalancer
IP:                       10.43.121.125
LoadBalancer Ingress:     111.11.11.111
Port:                     http  80/TCP
TargetPort:               http/TCP
NodePort:                 http  32492/TCP
Endpoints:                10.42.0.6:80
Port:                     https  443/TCP
TargetPort:               https/TCP
NodePort:                 https  31586/TCP
Endpoints:                10.42.0.6:443
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   &lt;none&gt;

</code></pre>
<h2>The issue</h2>
<p>I do not find how to use this ingress controller using a helm chart (say, this <a href="https://github.com/groundhog2k/helm-charts/tree/master/charts/ghost" rel="nofollow noreferrer">ghost chart</a>). In my  understanding of how Helm charts work and the purpose they fulfill, <code>Ingress</code> templating allow to use different ingress controllers. Here is the chart's <code>ingress.yaml</code></p>
<pre class="lang-yaml prettyprint-override"><code>...
kind: Ingress
metadata:
  name: {{ $fullName }}
  labels:
    {{- include &quot;ghost.labels&quot; . | nindent 4 }}
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: {{ $maxSize }}
  {{- with .Values.ingress.annotations }}
    {{- toYaml . | nindent 4 }}
  {{- end }}
...
</code></pre>
<p>Based on this, I would say that I need to edit the <code>annotations</code> section of <code>values.yaml</code> to <strong>use traefik</strong> instead of default <code>kubernetes.io/ingress.class: nginx</code></p>
<pre class="lang-yaml prettyprint-override"><code>ingress:
  enabled: true
  annotations: 
    kubernetes.io/ingress.class: traefik  # what should I use?
  hosts:
    - host: some.domain.io
      paths:
        - /
  tls:
    - secretName: chart-example-tls
      hosts:
        - some.domain.io
</code></pre>
<p>However, no matter what I try in <code>annotations</code>, <code>helm install</code> keep getting</p>
<pre><code>Error: UPGRADE FAILED: failed to create resource: Internal error occurred: failed calling webhook &quot;validate.nginx.ingress.kubernetes.io&quot;: Post &quot;https://ingress-nginx-controller-admission.ingress-nginx.svc:443/networking/v1beta1/ingresses?timeout=10s&quot;: service &quot;ingress-nginx-controller-admission&quot; not found
</code></pre>
<p>as if helm were looking for an <strong>Nginx ingress controler</strong>, no matter what. Is this a possible limitation of charts (like this one) or am I misconceiving how Helm charts work? How can I use the default <code>traefik ingress</code> on this chart's deployment?</p>

zar3bski
<p>No, as per I know - you are not able to chose exact ingress controller for these chart. Both Nginx and Traefik use same ports, so you have to define proper ingress controller in advance.</p>
<p>From <a href="https://artifacthub.io/packages/helm/bitnami/ghost" rel="nofollow noreferrer">chart documentation</a> i see that :</p>
<blockquote>
<p>This chart has been tested to work with NGINX Ingress, cert-manager,
bla bla</p>
</blockquote>
<p>And the helm options you have are:
<a href="https://i.stack.imgur.com/mVva1.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/mVva1.png" alt="enter image description here" /></a></p>
<p>From all the above written I have a question|proposition: Dont you want to <a href="https://dev.to/sr229/how-to-use-nginx-ingress-controller-in-k3s-2ck2" rel="nofollow noreferrer">switch to NGINX ingress controller in K3s</a>?</p>
<p><strong>Getting your cluster ready</strong>
First order of business is that you need to get your cluster have no other ingress controllers as this would conflict with your current ingress controllers. This is because <strong><strong>NGINX and Traefik both listens to 80 and 443</strong>, <strong>which causes conflicts</strong> <strong>with each other</strong>, so make sure your K3s cluster only has one kind of the other.</strong></p>
<p>For the best results, your K3s cluster must be installed with the <code>--no-deploy-traefik</code> argument, which will cause the K3s cluster to deploy only with the bare container orchestrator without the default HTTP backend, which is Traefik.</p>
<p>To make sure you don't have a Traefik controller installed, run <code>kubectl get deployments -n kube-system</code> to see if Traefik is gone.</p>
<p>If you have verified Traefik is not there, then you may proceed with the next part.</p>
<p><strong>Installing NGINX</strong>
There's two ways to install NGINX, either from a Helm chart or a direct kubectl apply -f </p>
<p><strong>Using a Helm chart</strong>
The NGINX ingress is available in the Helm Stable Charts, and if you have the stable registry already installed in your Helm CLI, simply run helm install stable/nginx-ingress.</p>
<p>You may also modify the installation using the following configurations stated here.</p>
