2 min read | by Jordi Prats
In kubernetes it has become common practice to use objects that are not yet GA, for instance: The Kubernetes team graduated the Ingress API to general availability (GA) in the 1.19 release (September 25th, 2020): it was first introduced in 2015. But there's one drawback that we really need to be aware: Using a alpha or beta API means that the interface might change and, for Ingress, it did change.
Let's take this Ingress yaml using extensions/v1beta1 as an example:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: beta-ingress
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internal
alb.ingress.kubernetes.io/target-type: ip
spec:
rules:
- http:
paths:
- backend:
serviceName: example
servicePort: 8080
path: /*
If we try to apply it on a 1.19+ kubernetes cluster, we will get a warning message like this:
$ kubectl apply -f beta-ingress.yaml
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
ingress.extensions/testingress created
It is using the beta version, if we take a look at the Ingress documentation we can see how we will have to modify the YAMLs from the beta version to use the GA. Unfortunately, for the Ingress it's not going to be just to change the apiVersion, we will have to also change the spec:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: spinnaker
name: spin-gate
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internal
alb.ingress.kubernetes.io/target-type: ip
spec:
rules:
- http:
paths:
- path: /*
pathType: Prefix
backend:
service:
name: spin-gate
port:
number: 8084
The pathType change is one of the changes that we need to be aware of, but there are others.
For a beta API is something that can happen, but be aware that for alpha APIs it is much more likely to happen.
Posted on 25/02/2021