Deprecation: Move from NGINX Ingress to Gateway API
Breaking change approval issue: Breaking Change Exception Request - Migrate to ... (gitlab-com/Product#14384) • Grant Young, Clemens Beck • 19.0
Deprecation Summary
GitLab chart currently bundles three Ingress controllers: NGINX Ingress, Traefik and HAProxy. Motivated by the NGINX Ingress removal, Cloud Native GitLab will move towards Gateway API and Envoy Gateway.
This is inline with the recommendations from the Kubernetes SIG that maintained NGINX Ingress and future GitLab requirements.
To support this change we will undergo the following changes:
- In GitLab 19.0: GitLab chart will default to Gateway API and a bundled Envoy Gateway. The bundled Ingress controllers will be deprecated and will be disabled by default. By default Cloud Native GitLab will deploy Envoy Gateway and Gateway API resources.
- In GitLab 20.0: Removal of the deprecated Ingress controllers. Cloud Native GitLab will continue to support Ingress. If you prefer to continue using Ingress, you should provision an external Ingress controller.
Documentation
- Deprecation notice:
🛠️ gitlab-org/gitlab!215190 (merged) - Migration guidelines:
🛠️ https://gitlab.com/gitlab-org/charts/gitlab/-/blob/6826f45fff6ac99e57ed6709fc45a4296b1ddb94/doc/charts/envoygateway/_index.md
Product Usage
- GitLab chart bundles NGINX Ingress, Traefik and HAProxy to expose GitLab via Ingress.
- GitLab Operator re-uses the NGINX Ingress from charts to expose GitLab.
- GitLab chart and Operator-managed instances can configure another Ingress controller on demand.
Breaking Change?
This is a breaking change.
All instances should evaluate migrating to Gateway API by 19.0 and migrate an by 20.0 at latest. In 20.0 Cloud Native GitLab will provide no means to configure a bundled Ingress controller.
Affected Customers
Who is affected by this deprecation: GitLab.com users, Self-managed users, or Dedicated users? (choose all that apply)
-
GitLab.com
- Partially impacted: Most traffic does not go through the bundled NGINX. A migration to (the GitLab-chart provided) Envoy is planned in gitlab-com/gl-infra&1641.
- Self-managed
-
Dedicated
- Dedicated requirements to Envoy GW: https://gitlab.com/gitlab-com/gl-infra/software-delivery/operate/team-tasks/-/issues/15
- Dedicated epic: https://gitlab.com/groups/gitlab-com/gl-infra/gitlab-dedicated/-/epics/858+
What pricing tiers are impacted?
- GitLab Free
- GitLab Premium
- GitLab Ultimate
Not limited to any tier. Every chart or Operator instance using one of the bundled Ingress controllers is impacted.
Deprecation Milestone
The deprecation will be announced in %18.7.
Planned Removal Milestone
The removal will happen in two phases:
- %19.0: Switching the default from NGINX Ingress to Gateway API+Envoy Gateway.
- %"20.0": Full removal of the bundled Ingress controllers. Once removed, users can still bring their own Ingress controller.
Links
- Cloud Native GitLab: Move from NGINX Ingress to... (gitlab-com/gl-infra/software-delivery/operate&5)
- Breaking Change Exception Request - Migrate to ... (gitlab-com/Product#14384)
- Record Envoy Gateway decision (!4666 - merged)
- https://gitlab.com/gitlab-org/architecture/auth-architecture/design-doc/-/merge_requests/39+
Checklists
Timeline
Rollout Plan
-
DRI Engineers: @clemensbeck @grantyoung
-
DRI Engineering Manager: @cjwilburn
-
Describe rollout plans on GitLab.com
-
Link to a feature flag rollout issue that covers:
- Expected release date on GitLab.com and GitLab version
- Rollout timelines, such as a percentage rollout on GitLab.com
- Creation of any clean-up issues, such as code removal
-
Link to a feature flag rollout issue that covers:
-
Determine how to migrate users still using the existing functionality
-
Document ways to migrate with the tooling available
-
Automate any users who have not yet migrated, but ensure it's a two-way door decision
Communication Plan
- DRI Product Manager: @mbruemmer
An internal slack post and a release post are not sufficient notification for our customers or internal stakeholders. Plan to communicate proactively and directly with affected customers and the internal stakeholders supporting them.
Internal Communication Plan This will have been documented in your breaking change request. You can use this checklist to track completion of these items.
- Support Preparedness issue created
- Guidance for Engineering, Product, Security, Customer Success, and Sales created
External Communication Plan This will have been documented in your breaking change request. You can use this checklist to track completion of these items.
- Customer announcement plan (timeline for notifications, audience, channels, etc)
- Ensure you have approvals from legal and corp comms for any communication being sent directly to customers.
-
As soon as possible, but no later than the third milestone preceding the major release, ensure that the following are complete (for example, given the following release schedule:
17.8, 17.9, 17.10, 17.11, 18.0–17.9is the third milestone preceding the major release).- A deprecation announcement entry has been created so the deprecation will appear in release posts and on the general deprecation page. Add link to the relevant merge request.
- Documentation has been updated to mark the feature as deprecated. Add link to the relevant merge request.
-
On the major milestone:
- The deprecated item has been removed. Add link to the relevant merge request.
- If the removal of the deprecated item is a breaking change, the merge request is labeled breaking change.
- Document the migration plan for users, clearly outlining the actions they need to take to mitigate the impact of the breaking change.
Development
-
DRI Engineers:
@engineer(s) -
DRI Engineering Manager:
@EM -
Measure usage of the impacted product feature
- Evaluate metrics across GitLab.com, Self-Managed, Dedicated
- add issue link
- list any metrics and/or dashboards
-
Create tooling for customers to manually migrate their data or workflows
- add issue link
-
Build mechanism for users to manually enable the breaking change ahead of time
- add issue link
-
Automate the migration for those who do not take any manual steps (ensure the automation can be reverted)
- add issue link
-
Develop rollout plan of breaking change on GitLab.com
- add feature flag rollout issue
-
Dogfood the changes on GitLab.com or a Self-Managed test instance
- add issue link
-
(Optional) Create UI controls for instance admins to disable the breaking change, providing flexibility to Self-Managed / Dedicated customers. Optional as this depends on the breaking change.
- add issue link
Stakeholder Mentions
-
Product Designer
@ProductDesigner -
Tech Writer
@TW -
Software Engineering in Test
@SET -
Any other stable counterparts based on the product categories:
-
Add Sales/CS counterpart or mention
@timtams -
Add Support counterpart or mention
@gitlab-com/support/managers -
Add Marketing counterpart or mention
@martin_klaus -
Add Corp comms if direct customer comms are needed
@jmalleo - Add Product Security counterpart, if relevant to your deprecation
- Mention (in internal note) Customer Success Managers / Acount Managers / Solutions Architects for impacted customers
-
Add Sales/CS counterpart or mention
Labels
-
This issue is labeled deprecation, and with the relevant
~devops::,~group::, and~Category:labels. - This issue is labeled breaking change if the removal of the deprecated item will be a breaking change.