How to find the correct api version in Kubernetes?

5/9/2020

I have a question about the usage of apiVersion in Kuberntes.

For example I am trying to deploy traefik 2.2.1 into my kubernetes cluster. I have a traefik middleware deployment definition like this:

---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: https-redirect
spec:
  redirectScheme:
    scheme: https
    permanent: true
    port: 443

When I try to deploy my objects with

$ kubectl apply -f middleware.yaml

I got the following error message:

unable to recognize "middleware.yaml": no matches for kind "Middleware" in version "traefik.containo.us/v1alpha1"

The same object works fine with Traefik version 2.2.0 but not with version 2.2.1.

On the traefik documentation there is no example other the ones using the version "traefik.containo.us/v1alpha1"

I dont't hink that my deployment issue is specific to traefik. It is a general problem with conflicting versions. Is there any way how I can figure out which apiVersions are supported in my cluster environment?

There are so many outdated examples posted around using deprecated apiVersions that I wonder if there is some kind of official apiVersion directory for kubernetes? Or maybe there is some kubectl command which I can ask for apiversions?

-- Ralph
kubernetes
traefik

1 Answer

5/9/2020

Most probably crds for traefik v2 are not installed. You could use below command which lists the API versions that are available on the Kubernetes cluster.

kubectl api-versions | grep traefik
traefik.containo.us/v1alpha1

Use below command to check crds installed on the Kubernetes cluster.

kubectl get crds
NAME                                   CREATED AT
ingressroutes.traefik.containo.us      2020-05-09T13:58:09Z
ingressroutetcps.traefik.containo.us   2020-05-09T13:58:09Z
ingressrouteudps.traefik.containo.us   2020-05-09T13:58:09Z
middlewares.traefik.containo.us        2020-05-09T13:58:09Z
tlsoptions.traefik.containo.us         2020-05-09T13:58:09Z
tlsstores.traefik.containo.us          2020-05-09T13:58:09Z
traefikservices.traefik.containo.us    2020-05-09T13:58:09Z

Check traefik v1 vs v2 here

-- Arghya Sadhu
Source: StackOverflow