You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Update installation and expose-tunnels docs for the migration from NGINX
to Traefik ingress.
- Add NGINX Ingress Controller retirement notice
- Change default ingress class to traefik in example values
- Add Traefik rate limiting section with RateLimit and InFlightReq
middleware examples
- Add Ingress NGINX section with legacy configuration for users not yet
migrated
- Add upgrade notice about ingress class change in 0.5.0
Signed-off-by: Han Verstraete (OpenFaaS Ltd) <han@openfaas.com>
!!! tip "Optional: rate limiting for the data-router"
348
+
349
+
Traefik Middleware can be used to apply rate limiting on the data-router Ingress. See [Traefik rate limiting](/uplink/installation/#traefik-rate-limiting) for details on creating Middleware resources.
350
+
351
+
To reference the middleware, add the annotation to your `values.yaml`:
## Create a namespace for the chart and add the license secret
@@ -78,25 +82,36 @@ You can use Kubernetes Ingress or Istio. We recommend using Ingress (Option A),
78
82
79
83
### A) Install with Kubernetes Ingress
80
84
81
-
We recommend [ingress-nginx](https://github.com/kubernetes/ingress-nginx) for Ingress, and have finely tuned the configuration to work well for the underlying websocket for inlets. If your organisation uses a different Ingress Controller, you can alter the `class` fields in the chart.
85
+
We recommend [Traefik](https://doc.traefik.io/traefik/) for Ingress, and have finely tuned the configuration to work well for the underlying websocket for inlets. If your organisation uses a different Ingress Controller, you can alter the `class` fields in the chart.
82
86
83
-
Install ingress-nginx using arkade or Helm:
87
+
!!! note "NGINX Ingress Controller Retirement"
88
+
89
+
The Kubernetes NGINX Ingress Controller project has announced its retirement in March 2026 and will no longer receive updates or security patches.
90
+
91
+
The uplink chart version 0.5.0 changes the default ingress class from Nginx to Traefik. To upgrade to the latest uplink while keeping NGINX ingress see the [Ingress NGINX section](#ingress-nginx) for legacy configuration options.
See also: [Traefik installation](https://doc.traefik.io/traefik/getting-started/install-traefik/#use-the-helm-chart)
105
+
89
106
Create a `values.yaml` file for the inlets-uplink-provider chart:
90
107
91
108
```yaml
92
109
ingress:
110
+
class: "traefik"
93
111
issuer:
94
112
# When set, a production issuer will be generated for you
95
113
# to use a pre-existing issuer, set issuer.enabled=false
96
114
enabled: true
97
-
# Email address used for ACME registration for the production issuer
98
-
email: "user@example.com"
99
-
class: "nginx"
100
115
101
116
clientRouter:
102
117
# Customer tunnels will connect with a URI of:
@@ -109,7 +124,9 @@ clientRouter:
109
124
enabled: true
110
125
```
111
126
112
-
Make sure to replace the domain and email with your actual domain name and email address.
127
+
Make sure to replace the domain with your actual domain name.
128
+
129
+
Optionally, you can add rate limiting to the client-router Ingress using Traefik Middleware. See [Traefik rate limiting](#traefik-rate-limiting) for details.
113
130
114
131
Want to use the staging issuer for testing?
115
132
@@ -140,8 +157,6 @@ ingress:
140
157
# When set, a production issuer will be generated for you
141
158
# to use a pre-existing issuer, set issuer.enabled=false
142
159
enabled: true
143
-
# Email address used for ACME registration for the production issuer
144
-
email: "user@example.com"
145
160
class: "istio"
146
161
147
162
clientRouter:
@@ -155,7 +170,7 @@ clientRouter:
155
170
enabled: true
156
171
```
157
172
158
-
Make sure to replace the domain and email with your actual domain name and email address.
173
+
Make sure to replace the domain with your actual domain name.
159
174
160
175
### Deploy with Helm
161
176
@@ -224,7 +239,7 @@ If you installed inlets-uplink with Kubernetes ingress, you can verify that ingr
@@ -263,6 +278,10 @@ Next, run the Helm chart installation command again, and remember to use the sam
263
278
264
279
Over time, you may find using a tool like FluxCD or ArgoCD to manage the installation and updates makes more sense than running Helm commands manually.
265
280
281
+
!!! warning "Ingress class change in chart version 0.5.0"
282
+
283
+
The default ingress class changed from Nginx to Traefik in chart version 0.5.0. If you are still using NGINX ingress, make sure your values.yaml includes the required configuration from the [Ingress NGINX section](#ingress-nginx) before upgrading.
284
+
266
285
If the Custom Resource Definition (CRD) has changed, you can extract it from the Chart repo and install it before or after upgrading. As a rule, Helm won't install or upgrade CRDs a second timeif there's already an existing version:
267
286
268
287
```bash
@@ -305,7 +324,7 @@ Overview of inlets-uplink parameters in `values.yaml`.
305
324
| `ingress.issuer.name` | Name of cert-manager Issuer. | `letsencrypt-prod` |
306
325
| `ingress.issuer.enabled` | Create a cert-manager Issuer. Set to false if you wish to specify your own pre-existing object for each component. | `true` |
307
326
| `ingress.issuer.email` | Let's Encrypt email. Only used for certificate renewing notifications. |`""`|
308
-
|`ingress.class`| Ingress class for client router ingress. |`nginx`|
327
+
|`ingress.class`| Ingress class for client router ingress. |`traefik`|
309
328
|`clientRouter.image`| Container image used for the client router. |`ghcr.io/openfaasltd/uplink-client-router:0.1.5`|
310
329
|`clientRouter.domain`| Domain name for inlets uplink. Customer tunnels will connect with a URI of: wss://uplink.example.com/namespace/tunnel. |`""`|
311
330
|`clientRouter.tls.ingress.enabled`| Enable ingress for the client router. |`enabled`|
@@ -339,3 +358,81 @@ This data includes the following:
339
358
* Kubernetes version
340
359
* Inlets Uplink version
341
360
* Number of installations of Inlets Uplink
361
+
362
+
## Traefik rate limiting
363
+
364
+
With Traefik, rate limiting is configured using [Middleware](https://doc.traefik.io/traefik/middlewares/overview/) custom resources. You can use the [RateLimit](https://doc.traefik.io/traefik/middlewares/http/ratelimit/) middleware to limit requests per second and the [InFlightReq](https://doc.traefik.io/traefik/middlewares/http/inflightreq/) middleware to limit simultaneous connections.
365
+
366
+
Create a `Middleware` resource forrate limitingin the `inlets` namespace:
367
+
368
+
```yaml
369
+
apiVersion: traefik.io/v1alpha1
370
+
kind: Middleware
371
+
metadata:
372
+
name: uplink-rate-limit
373
+
namespace: inlets
374
+
spec:
375
+
rateLimit:
376
+
average: 17
377
+
period: 1s
378
+
burst: 50
379
+
```
380
+
381
+
Create a `Middleware` resource for limiting simultaneous connections:
382
+
383
+
```yaml
384
+
apiVersion: traefik.io/v1alpha1
385
+
kind: Middleware
386
+
metadata:
387
+
name: uplink-inflight-limit
388
+
namespace: inlets
389
+
spec:
390
+
inFlightReq:
391
+
amount: 300
392
+
```
393
+
394
+
To apply the middleware to the client-router Ingress, add the `traefik.ingress.kubernetes.io/router.middlewares` annotation in your `values.yaml`:
The annotation value follows the format `<namespace>-<middleware-name>@kubernetescrd`. Multiple middleware can be chained with commas.
405
+
406
+
## Ingress NGINX
407
+
408
+
The Kubernetes NGINX Ingress Controller project has announced its retirement in March 2026 and will no longer receive updates or security patches. The uplink chart version 0.5.0 changes the default ingress class from Nginx to Traefik.
409
+
If you want to update to the latest uplink version but have not migrated your ingress controller yet, you need to add the following additional parameters in the values.yaml configuration for the uplink Helm chart.
0 commit comments