azure-aksnginx-ingressingress-controlleringress-nginx

Comparison between NGINX Ingress Controller v/s Kubernetes (community) Ingress controller


I have a use case where I am trying to switch from current Kubernetes (Community) Ingress controller to NGINX Ingress Controller ( OSS based the free version ) in the AKS cluster.

I have seen that k8 based ingress controller has a stronger community support and some people even argue it has more features than NGINX Ingress Controller. But NGINX version supports some advanced features like Canary (to more than 2 services) and circuit breaking etc.

Ref: https://stackoverflow.com/a/78494077/13126651

I want to know 2 things since both of them are based on NGINX.


Solution

  • Disclaimer: I work on NGINX Ingress Controller.

    We don't tend to log the differences between the community ingress controller and NGINX ingress Controller as comparisons get out of date fairly quickly, but I can answer your two bullet points.

    If I switch to NGINX Ingress Controller from community Ingres controller will there be a major code changes like or logic changes

    There is doc on this here. There are two paths, if you chose to transition an Ingress resource to the CRDs, such as the VirtualServer CRD that probably will be more work than transitioning to an Ingress resource, as Ingress -> Ingress will be mostly annotation changes, but it might be worth it depending on the features you want. For example traffic splitting, redirects and the match construct are all things that wouldn't fit elegently into Ingress Annotations, but are part of the VirtualServer CRD.

    If NGINX Ingress Controller is maintained by NGINX and not by the community ( like Kubernetes INGRESS controller) is there disadvantage of using controlled by NGINX?

    I think its an advantage to have it owned by same entity as NGINX itself. For example when we are adding new features to NGINX Ingress Controller we first demo them in front our colleagues, people who know the internals of NGINX inside and out, and get feedback and iterate on those features. That's a USP that would not be possible elsewhere. Also, as F5 NGINX is ultimately a security company, we are held to a very high standard regards to security, i.e image patching, TMAs etc.

    I am just wondering why community prefer community edition?

    Both are ultimately very popular. As I write this NGINX Ingress Controller is nearing 1 billion docker pulls.

    Is there any performance issues

    No, we use core NGINX OSS/NGINX Plus.