[Action required] Final call - Deprecated API removal, upgrade your Ingresses etc.

We are preparing to upgrade our platforms to Kubernetes 1.22, which drops support for many deprecated API versions! This is the final call to make sure you’ve updated your manifests, Helm charts (*), etc. to make use of the newest APIs (mainly Ingress, but some others too). Make sure to check out the deprecated API migration guide for more info. Below you will find more details on some of the most common deprecated resources used by our customers.

To try and pinpoint which specific resources are affecteed, we will also perform some scans. Keep an eye out on your GitHub repo in the coming days with the scan results.

Important: We’re setting a deadline of Monday 30th of May. After this date we will start with the upgrade process.

(*) Watch out, this also incluses 3rd party Helm charts you might be using!

Deprecated API removal for Ingress

You need to migrate your Ingress resources to the GA apiVersion of networking.k8s.io/v1!

Notable changes between extensions/v1beta1, networking.k8s.io/v1beta1 and networking.k8s.io/v1:

  • spec.backend is renamed to spec.defaultBackend
  • The backend serviceName field is renamed to service.name
  • Numeric backend servicePort fields are renamed to service.port.number
  • String backend servicePort fields are renamed to service.port.name
  • pathType is now required for each specified path. Options are Prefix, Exact, and ImplementationSpecific. Usually it’s Prefix you want, however to match the undefined v1beta1 behavior, use ImplementationSpecific

The networking.k8s.io/v1 spec also comes with an ingressClassName field as replacement for the deprecated kubernetes.io/ingress.class annotation. By default, on our platform you should set ingressClassName: nginx or ingressClassName: nginx-internal respectively.

For example, a simple Ingress resource would look like this:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/tls-acme: "true"
  name: marketing-website
  namespace: production
spec:
  ingressClassName: nginx
  rules:
    - host: www.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  name: http
  tls:
    - secretName: www-example-com-tls
      hosts:
        - www.example.com

Check out the upstream Ingress page for more examples.

Deprecated API removal for RBAC

Similar to Ingress, Kubernetes 1.22 will drop support for the rbac.authorization.k8s.io/v1beta1 API version. This impacts the resources: ClusterRole, ClusterRoleBinding, Role, and RoleBinding.

Please make sure to update the apiVersion of these resources to rbac.authorization.k8s.io/v1.