kuberneteskubernetes-ingresstraefikk3straefik-ingress

Defining Ingress for k3s traefik


I am running k3s version 1.25.5 and I would like to define traefik as an ingress for one of the services defined through an external helm chart. I am struggling to find the right ingress definition. I tried with the below yaml file but that gives an error stating

error: resource mapping not found for name: "c8-ingress" namespace: "" from "zeebe-traefik.yaml": no matches for kind "Ingress" in version "extensions/v1beta1"
ensure CRDs are installed first

This seems to be because of the an old apiVersion used in the yaml file. How to do it the right way?

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: c8-ingress
  annotations:
    kubernetes.io/ingress.class: "traefik"
spec:
  rules:
  - http:
      paths:
      - path: "/"
        backend:
          serviceName: dev-zeebe-gateway
          servicePort: 26500

Thanks.


Solution

  • Your example is using an outdated Ingress definition. In v1.25.x you need to use the stable networking.k8s.io/v1 API, as described here.

    It is also recommended to provide the fitting namespace. This is useful for documentation, but also required for resource backends. It will also avoid adding -n YOURNAMESPACE to every kubectl apply.

    In your case, this may look something like:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: c8-ingress
      namespace: YOURNAMESPACE
    spec:
      rules:
        - http:
            paths:
              - pathType: Prefix
                path: /
                backend:
                  service:
                    name: dev-zeebe-gateway
                    port:
                      number: 26500
    

    I hope this helps to solve your issue.

    In many cases, you can run kubectl explain RESOURCE to get useful links and resources for a given api-resource.