<p>I'm adding an Ingress as follows:</p>
<pre><code>apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cheddar
spec:
  rules:
  - host: cheddar.213.215.191.78.nip.io
    http:
      paths:
      - backend:
          service:
            name: cheddar
            port:
              number: 80
        path: /
        pathType: ImplementationSpecific
</code></pre>
<p>but the logs complain:</p>
<pre><code>W0205 15:14:07.482439       1 warnings.go:67] extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
time=&quot;2021-02-05T15:14:07Z&quot; level=info msg=&quot;Updated ingress status&quot; namespace=default ingress=cheddar
W0205 15:18:19.104225       1 warnings.go:67] networking.k8s.io/v1beta1 IngressClass is deprecated in v1.19+, unavailable in v1.22+; use networking.k8s.io/v1 IngressClassList
</code></pre>
<p>Why? What's the correct yaml to use?
I'm currently on microk8s 1.20</p>

Alessandro Dentella
<p>I have analyzed you issue and came to the following conclusions:</p>
<ol>
<li>The Ingress will work and these Warnings you see are just to inform you about the available api versioning. You don't have to worry about this. I've seen the same Warnings:</li>
</ol>
<hr />
<pre><code>@microk8s:~$ kubectl describe ing
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
</code></pre>
<ol start="2">
<li>As for the &quot;why&quot; this is happening even when you use <code>apiVersion: networking.k8s.io/v1</code>, I have found the <a href="https://github.com/kubernetes/kubernetes/issues/94761#issuecomment-691982480" rel="noreferrer">following explanation</a>:</li>
</ol>
<blockquote>
<p>This is working as expected. When you create an ingress object, it can
be read via any version (the server handles converting into the
requested version). <code>kubectl get ingress</code> is an ambiguous request,
since it does not indicate what version is desired to be read.</p>
<p>When an ambiguous request is made, kubectl searches the discovery docs
returned by the server to find the first group/version that contains
the specified resource.</p>
<p>For compatibility reasons, <code>extensions/v1beta1</code> has historically been
preferred over all other api versions. Now that ingress is the only
resource remaining in that group, and is deprecated and has a GA
replacement, 1.20 will drop it in priority so that <code>kubectl get ingress</code> would read from <code>networking.k8s.io/v1</code>, but a 1.19 server
will still follow the historical priority.</p>
<p>If you want to read a specific version, you can qualify the get
request (like <code>kubectl get ingresses.v1.networking.k8s.io</code> ...) or can
pass in a manifest file to request the same version specified in the
file (<code>kubectl get -f ing.yaml -o yaml</code>)</p>
</blockquote>
<p>Long story short: despite the fact of using the proper <code>apiVersion</code>, the deprecated one is still being seen as the the default one and thus generating the Warning you experience.</p>
<p>I also see that <a href="https://github.com/concourse/concourse-chart/issues/204" rel="noreferrer">changes are still being made</a> recently so I assume that it is still being worked on.</p>
