Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhance Helm with an option to not generate a new IngressClass object #4209

Closed
brianehlert opened this issue Aug 9, 2023 Discussed in #4179 · 0 comments · Fixed by #4333
Closed

Enhance Helm with an option to not generate a new IngressClass object #4209

brianehlert opened this issue Aug 9, 2023 Discussed in #4179 · 0 comments · Fixed by #4333
Assignees
Labels
backlog Pull requests/issues that are backlog items enhancement Pull requests for new features/feature enhancements
Milestone

Comments

@brianehlert
Copy link
Collaborator

brianehlert commented Aug 9, 2023

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:

  • not generate a new ingress class when using the Helm chart to deploy ingress controller
  • support adding an additional deployment of ingress controller to an existing IngressClass

AC:

  • Ability to install IC without requiring/creating an ingressClass.
  • Attach an existing ingressClass to an IC spec

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

### Tasks
- [ ] Document helm update
@brianehlert brianehlert added enhancement Pull requests for new features/feature enhancements backlog candidate Pull requests/issues that are candidates to be backlog items backlog Pull requests/issues that are backlog items and removed backlog candidate Pull requests/issues that are candidates to be backlog items labels Aug 24, 2023
@danielnginx danielnginx added this to the v3.3.0 milestone Sep 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backlog Pull requests/issues that are backlog items enhancement Pull requests for new features/feature enhancements
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants