Issue
When you create a new controller, you encounter the error:
Error Failure executing: POST at: .../apis/networking.k8s.io/v1/namespaces/ci/ingresses. Message: Ingress.extensions "controller" is invalid: annotations.kubernetes.io/ingress.class: Invalid value: "external": can not be set when the class field is also set.
Environment
-
CloudBees CI (CloudBees Core) on modern cloud platforms - Managed Master
-
CloudBees CI (CloudBees Core) on modern cloud platforms - Operations Center
-
Version 2.319.2.5 or later
-
Ingress nginx installed separately from CloudBees CI helm chart
Resolution
Starting in CloudBees CI 2.319.2.5, we use Ingress v1 and an IngressClass
is required. We mention this in the release notes: CloudBees CI on modern cloud platforms 2.319.2.5.
If you installed nginx yourself, you will need to upgrade the Ingress Nginx Controller deployment to 1.x so that it supports Ingress v1 and adds an IngressClass
.
If you installed nginx using the CloudBees CI helm chart (via helm value ingress-nginx.Enabled: true
), you wouldn’t have encountered this issue, since ingress-nginx v1.1.0 (or newer) would have been deployed via https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx.
Workaround
There is no workaround available, because if you don’t upgrade Ingress Nginx V1 or later, there is no IngressClass and therefore CloudBees CI controller Ingresses will not be considered by the Ingress Controller. Additionally, annotations cannot be added because the Master Provisioning Kubernetes uses Ingress V1 to create the Ingress object and it is now forbidden under V1 to have both an ingress.class
annotation at the same time as ingressClassName
: https://kubernetes.io/docs/concepts/services-networking/ingress/#deprecated-annotation