Enhance Helm with an option to not generate a new IngressClass object #4209
Labels
backlog
Pull requests/issues that are backlog items
enhancement
Pull requests for new features/feature enhancements
Milestone
Discussed in #4179
Originally posted by brianehlert August 3, 2023
One upgrade pattern for services in Kubernetes is a blue/green. We tend to focus on this pattern for backend services behind the ingress controller. However, this is a valid upgrade pattern for the ingress controller itself.
This is currently not possible using the Helm chart provided with this project.
What the Helm chart enforces is that each ingress controller deployment has a unique IngressClass.
While this is true to the IngressClass intention of being a unique management construct, it blocks the possibility of using the blue/green pattern to upgrade the ingress controller service itself.
The additional impact of this behavior is that the customer is not able to generate an IngressClass out of band with the Helm chart, such as part of some automation workflow prior to deploying the ingress controller using the Helm chart.
This is believed to be possible with manifest (not validated) however that does not meet the automation needs when a customer has expressly instrumented the Helm chart.
What I am proposing is some option of the Helm chart to:
AC:
Background:
This article describes the blue/green pattern for an ingress controller starting at Step 1
https://medium.com/codecademy-engineering/kubernetes-nginx-and-zero-downtime-in-production-2c910c6a5ed8
The core customer objective is that a secondary ingress controller deployment is created and both will exist for a short period of time. The customer is not concerned with the problem of two deployments writing back status to the same set of configuration objects. In fact, it is the ability to have one set of configuration objects that both deployments are sharing that makes this pattern compelling in the first place.
ingress-nginx Helm has a way to disable the creation of the IngressClass resource: https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/templates/controller-ingressclass.yaml#L1
The text was updated successfully, but these errors were encountered: