Search code examples
kubernetestraefik

How to find the correct api version in Kubernetes?


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?


Solution

  • 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