kiwix / kiwix/operations

Migrate away from (now retired) nginx-ingress

Open
#735 3 comments 1 reaction 0 assignees View on GitHub
enhancement
Dominant language
Python
Stars
15
Forks
5
PR merge metrics
No merged PRs in 30d

Description

Our reverse-proxy in the kube is powered by [nginx-INGRESS](https://github.com/kubernetes/ingress-nginx/) (repo archived). This project [has been retired](https://kubernetes.io/blog/2025/11/11/ingress-nginx-retirement/) and is not receiving any release or update from now on (March 2026).

We thus have to choose an alternative either switching to another [IngressController](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) or one adopting the new [GatewayAPI](https://gateway-api.sigs.k8s.io/guides/getting-started/introduction/). It is important to note that many implementations exist both as IngressClass and GatewayAPI.

From my very brief look at the documentations, Gateway is the way to go. Not only because it's the successor of IngressClass but because it moves a lot of the value from custom-to-implementation config (in annotations snippets in our case) to API-defined rules and props. Implementations then handle the details.

Also important is that we rely a lot on nginx-ingress's annotations (custom nginx config snippets). What this means is that there's no shortcut to expect in switching to another IngressClass: we'd have to port all our logic (but into an implementation-specific manner).

Initial step would be to map our specific needs and check if all can be handled by the Gateway API as is. If not, we should identify and handle differently. We should then identify and/or test an implementations. Following our principles of simplicity, reliability and performance (FOSS obviously), it seems [Varnish](https://gateway.varnish.org) and [HAProxy](https://haproxy-ingress.github.io/docs) are good candidates but there are many others.

> [!WARNING]
>
> k8s `1.35` is the last version supported by nginx-ingress.
> We thus cannot update our cluster to `1.36` (released in April 2026) without this.
> Scaleway forces us to upgrade before **July 7, 2027** (auto-upgrades on September 7).
> We thus **have to migrate** before that but that doesn't mean we should wait until last minute.
> It's **a lot of work** but it apparently [can be tested in parallel and there are tools](https://gateway-api.sigs.k8s.io/guides/getting-started/migrating-from-ingress-nginx/) to help.

Contributor guide

Open the contributing guide

Research direction

Start by mapping the current nginx-ingress requirements, especially the custom annotations and configuration snippets, then read the linked Gateway API migration guidance. Compare those requirements with Gateway API and candidate implementations such as Varnish or HAProxy. Done means a replacement is selected, tested in parallel, and the existing reverse-proxy behavior is migrated and validated.

Written by the indexing model from the issue text.

Assessment

Tech stack
kubernetes, nginx
Domain
devops, infrastructure, networking
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.