Replace ingress-nginx with Traefik as recommended ingress controller#413
Replace ingress-nginx with Traefik as recommended ingress controller#413welteki wants to merge 1 commit intoopenfaas:masterfrom
Conversation
This comment has been minimized.
This comment has been minimized.
Update documentation across multiple pages to recommend Traefik as the default ingress controller instead of ingress-nginx: - Switch ingress controller references from nginx to Traefik - Update installation commands to use arkade install traefik2 - Replace nginx-specific annotations with Traefik equivalents - Update ingressClassName from nginx to traefik - Add Traefik timeout configuration guide with Helm and arkade examples - Update FunctionIngress ingressType from nginx to traefik - Update service names and namespaces for Traefik Signed-off-by: Han Verstraete (OpenFaaS Ltd) <han@openfaas.com>
0ba02b1 to
740b89c
Compare
AI Pull Request OverviewSummary
Approval rating (1-10)7 Summary per fileSummary per file
Overall AssessmentThis PR implements a necessary migration from the retiring ingress-nginx controller to Traefik, which is appropriate given the ingress-nginx project's announced end-of-life. The changes are comprehensive, covering installation, configuration, and usage examples across the documentation. The addition of Traefik-specific timeout guidance is particularly valuable for users dealing with long-running functions. However, there are technical inaccuracies in the specified service namespaces that could lead to user confusion and failed commands. The migration represents a breaking change for existing users but is justified by the upstream project changes. Detailed ReviewDetailed ReviewNamespace Inconsistencies (Critical)Files: Issue: The Impact: Users will encounter "service not found" errors when trying to find the Traefik service IP. Suggestion: Correct all references to use FunctionIngress Support Verification NeededFiles: Issue: The PR changes Impact: Potential runtime errors if the ingressType is not recognized. Suggestion: Confirm with OpenFaaS codebase or documentation that Timeout Configuration ClarityFiles: Issue: The removal of nginx-specific timeout annotations is appropriate, but the transition to Traefik's EntryPoint-based timeout configuration may not be immediately clear to users migrating from ingress-nginx. Positive: The new expanded timeouts guide provides excellent coverage of Traefik timeout configuration. Suggestion: Consider adding a brief migration note in Domain Variable UsageFiles: Issue: The example uses Impact: Minor, but could confuse users copying examples. Suggestion: Use consistent variable syntax throughout the example (either Migration Impact AssessmentOverall Impact: This represents a breaking change for existing OpenFaaS users currently using ingress-nginx. Users will need to:
Risk: Potential service disruption during migration if not planned carefully. Suggestion: Consider adding a migration guide or checklist in the PR description or as a new documentation section. Testing CoverageIssue: PR description mentions "Testing of updated examples is in progress" - this indicates incomplete validation. Suggestion: Ensure all installation commands, service discovery, and configuration examples are tested before merge. Consistency Checks
Security/Performance ConsiderationsNo security or performance issues identified. The migration maintains TLS capabilities and the Traefik timeout configurations appear reasonable for production use. AI agent details. |
I feel like we should switch completely to fully formed helm commands and maintain this ourselves. An AI agent could probably do this for you quickly. |
|
|
||
| Google Cloud's various Load Balancer options have their [own configuration options too](https://cloud.google.com/load-balancing/docs/https). | ||
|
|
||
| For Ingress Nginx, set the `nginx.ingress.kubernetes.io/proxy-read-timeout` annotation to extend the timeout. This annotation is specified in seconds - for example, to extend the timeout to 30 minutes, use `nginx.ingress.kubernetes.io/proxy-read-timeout: "1800"`. |
There was a problem hiding this comment.
I think this needs to remain, perhaps with a warning that it's being deprecated.
|
|
||
| Despite configuring OpenFaaS and your functions for [extended timeouts](/tutorials/expanded-timeouts.md), you may find that your Ingress Controller, Istio Gateway, or Cloud Load Balancer implements its own timeouts on connections. If you think you have everything configured correctly for OpenFaaS, but see a timeout at a very specific number such as 30s or 60s, then check the timeouts on your Ingress Controller or Load Balancer. | ||
|
|
||
| For Ingress Nginx, to extend a synchronous invocation beyond one minute, add the `nginx.ingress.kubernetes.io/proxy-read-timeout` annotation to your Ingress resource. This annotation is specified in seconds - for example, to extend the timeout to 30 minutes, use `nginx.ingress.kubernetes.io/proxy-read-timeout: "1800"`. |
There was a problem hiding this comment.
Same as other feedback. Keep it but caveat it.
| It is recommended that you use an IngressController and TLS so that traffic between your clients and your OpenFaaS Gateway is encrypted. | ||
|
|
||
| You may already have opinions about what IngressController you want to use, the maintainers like to use Nginx given its broad adoption and relative ubiquity. | ||
| You may already have opinions about what IngressController you want to use, the maintainers like to use Traefik given its broad adoption and relative ubiquity. |
Description
Replace all ingress-nginx references with Traefik across the documentation:
arkade install traefik2ingressClassNamefromnginxtotraefikFunctionIngressingressTypefromnginxtotraefikMotivation and Context
The Ingress Nginx project will be retired in March 2026. This change updates the documentation to recommend Traefik as the default ingress controller going forward.
How Has This Been Tested?
Documentation changes reviewed for correctness of Traefik configuration, service names, and command references.
Testing of updated examples is in progress.
Types of changes
Checklist:
git commit -s