# Live AMA: Transitioning to the Open Source NGINX Ingress Controller from ingress-nginx - Dec 10, 11

**URL:** <https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401>\
**Category:** Announcements\
**Tags:** announcement, events\
**Created:** [November 25, 2025, 7:24pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401 "2025-11-25T19:24:16Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![Amir\_Rawdat](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/amir_rawdat/32/3911_2.png) [@Amir\_Rawdat](https://community.nginx.org/u/Amir_Rawdat)\
**Post date:** [December 10, 2025, 6:19pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/25 "2025-12-10T18:19:20Z")

</div>

Hi Benjamin, we currently do not have a native field or annotation for auth\_request. We are considering adding the annotation early next year. Another option to consider is using custom annotations by modifying the ingress template to include auth\_request. More info about this can be found in our documentation – [Custom annotations | NGINX Documentation](https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/custom-annotations/)

---

<div class="post-metadata">

**Author:** ![bmv126](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/bmv126/32/3913_2.png) [@bmv126](https://community.nginx.org/u/bmv126)\
**Post date:** [December 10, 2025, 6:23pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/26 "2025-12-10T18:23:43Z")

</div>

What load balancing algorithms are supported ? How to configure them ?

Is sticky session available in open-source f5 ingress controller ?

---

<div class="post-metadata">

**Author:** ![heo](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/heo/32/5_2.png) [@heo](https://community.nginx.org/u/heo)\
**Post date:** [December 10, 2025, 6:26pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/27 "2025-12-10T18:26:25Z")

</div>

Question from Reddit:

> If I migrate from ingress-nginx to open source NGINX Ingress Controller, can I run both controllers simultaneously during migration? What about. My custom configurations and snippets?

---

<div class="post-metadata">

**Author:** ![javorszky](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/javorszky/32/3923_2.png) [@javorszky](https://community.nginx.org/u/javorszky)\
**Post date:** [December 10, 2025, 6:26pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/28 "2025-12-10T18:26:59Z")

</div>

Excellent question!

The configuration format is most likely not going to change. That’s a decision the NGINX core team made a long time ago, and I can’t see this changing any time soon.

I agree it isn’t the easiest to read, even for someone who works with it every day, but there’s a certain logic to it.

Everything is root → http → server → location, plus a few others like stream. Evaluation order is most specific to the request to the least specific.

That said, one of the upsides of using the ingress controller, either F5’s or the community one until recently, was that users could describe what they want in kubernetes yaml files.

The downside is that the complexity is now in yaml files in multiple interconnected objects.

---

<div class="post-metadata">

**Author:** ![bmv126](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/bmv126/32/3913_2.png) [@bmv126](https://community.nginx.org/u/bmv126)\
**Post date:** [December 10, 2025, 6:27pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/29 "2025-12-10T18:27:14Z")

</div>

In gateway fabric tcp/udp routes are not yet supported.

I see this pr got closed recently [https://github.com/nginx/nginx-gateway-fabric/pull/3688](https://github.com/nginx/nginx-gateway-fabric/pull/3688)

is there plan to implement this ?

---

<div class="post-metadata">

**Author:** ![Daniel\_Edgar](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/daniel_edgar/32/3910_2.png) [@Daniel\_Edgar](https://community.nginx.org/u/Daniel_Edgar)\
**Post date:** [December 10, 2025, 6:31pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/31 "2025-12-10T18:31:12Z")

</div>

They can coexist If at least one of them is installed with a unique `ingressClass`. You can [specify this in the Helm chart values](https://docs.nginx.com/nginx-ingress-controller/install/helm/parameters/#:~:text=1-,controller.ingressClass.name,-A%20class%20of) easily enough.

---

<div class="post-metadata">

**Author:** ![hshannon](https://avatars.discourse-cdn.com/v4/letter/h/bcef8e/32.png) [@hshannon](https://community.nginx.org/u/hshannon)\
**Post date:** [December 10, 2025, 6:32pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/32 "2025-12-10T18:32:14Z")

</div>

Hi @bmv126, for NGINX Ingress Controller, if you using Ingress, you can use the annotation [nginx.org/lb-method](https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/advanced-configuration-with-annotations/#backend-services-upstreams), like `nginx.org/lb-method: "round_robin"`

If you use VirtualServer, you can use the [lb-method](https://docs.nginx.com/nginx-ingress-controller/configuration/virtualserver-and-virtualserverroute-resources/#common-virtualserver-and-virtualserverroute-specifications) field

> NGINX Open Source supports four load balancing methods: Round Robin, Least Connections, IP Hash, and Generic Hash. NGINX Plus supports six load balancing methods: the four above, Least Time, and Random.

The default load balancing method in NGINX Ingress Controller is round robin, and you can see the [page](https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/#choosing-a-load-balancing-method) on our docs for all methods supported.

---

<div class="post-metadata">

**Author:** ![Benjamin\_Jee](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/benjamin_jee/32/3906_2.png) [@Benjamin\_Jee](https://community.nginx.org/u/Benjamin_Jee)\
**Post date:** [December 10, 2025, 6:33pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/33 "2025-12-10T18:33:02Z")

</div>

Hey there, NGINX Gateway Fabric has tcp/udp routes slated to be in our 2.4 release which should come out in ~ jan-feb of next year.

If you would like to track the progress, you can watch for the related Github Epics:

- [UDPRoute · Issue #1964 · nginx/nginx-gateway-fabric · GitHub](https://github.com/nginx/nginx-gateway-fabric/issues/1964)
- [TCPRoute · Issue #2074 · nginx/nginx-gateway-fabric · GitHub](https://github.com/nginx/nginx-gateway-fabric/issues/2074)

---

<div class="post-metadata">

**Author:** ![B-L-R](https://avatars.discourse-cdn.com/v4/letter/b/919ad9/32.png) [@B-L-R](https://community.nginx.org/u/B-L-R)\
**Post date:** [December 10, 2025, 6:34pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/34 "2025-12-10T18:34:02Z")

</div>

Are there any stats on the performance of the open source (F5, free version) NGINX Ingress Controller vs the community version? Let’s say we have thousands of Ingresses, some with RegEx pathing and what not.

What’s the recommended setup for being production ready?

On top of this… currently we have our ingress controller integrated with Datadog- what’s the migration path there? Do you happen to have knowledge of any differences we may need to consider between the APM/metrics being reported to Datadog from the community version of the ingress controller vs the F5 open sourced one?

---

<div class="post-metadata">

**Author:** ![Micheal\_Kingston](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/micheal_kingston/32/3810_2.png) [@Micheal\_Kingston](https://community.nginx.org/u/Micheal_Kingston)\
**Post date:** [December 10, 2025, 6:37pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/35 "2025-12-10T18:37:17Z")

</div>

Hi, thanks for the question! Here are the load balancing algorithms (ses lb-method):

> **[Advanced configuration with Annotations | NGINX Documentation](https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/advanced-configuration-with-annotations/)**
>
> Learn how to deliver, manage, and protect your applications using F5 NGINX products.

You can do hash-based persistence with open source (use the hash based lb method). We have taken note of this feedback though, as cookie-based persistence is something our open source users are often asking for.

---

<div class="post-metadata">

**Author:** ![bmv126](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/bmv126/32/3913_2.png) [@bmv126](https://community.nginx.org/u/bmv126)\
**Post date:** [December 10, 2025, 6:41pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/36 "2025-12-10T18:41:55Z")

</div>

How does the f5 opensource ingress controller create the nginx.conf ?

does the upstream section have a list of ip or is it backend service name ?

Does it support deployment on istio enabled namespace?

---

<div class="post-metadata">

**Author:** ![javorszky](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/javorszky/32/3923_2.png) [@javorszky](https://community.nginx.org/u/javorszky)\
**Post date:** [December 10, 2025, 6:43pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/37 "2025-12-10T18:43:28Z")

</div>

Hi @B-L-R ,

We’ve had a detailed look into the performance of the community ingress. There are known issues, and we have a document detailing our findings currently in review. I’ll reply to this once that document is publicly available.

For Datadog, their document details how to connect to F5’s Ingress Controller by using Datadog’s Prometheus integration and the NGINX Prometheus Exporter.

On getting production ready: it depends on what your metric of that is. Generally we recommend having a dev / sandbox environment to iron out configuration issues and nuances as it will work differently to the community ingress controller, and then looking at the metrics Datadog will give you on performance.

---

<div class="post-metadata">

**Author:** ![dxiri](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/dxiri/32/3851_2.png) [@dxiri](https://community.nginx.org/u/dxiri)\
**Post date:** [December 10, 2025, 6:49pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/38 "2025-12-10T18:49:02Z")

</div>

I have a potential use case where I need to listen on UDP for SNMP traffic and my cloud hosted load balancer doesn’t support UDP. Is this what the TransportServer is for? If not, is there any other CRD or regular ingress config I can use to achieve this?

For use cases like this MetalLB seems to be the goto solution, but I wonder if this controller would be able to handle something like this. If this controller can achieve this, what LB type should I configure? I had a look at [kubernetes-ingress/examples/custom-resources/basic-tcp-udp at v5.2.1 · nginx/kubernetes-ingress · GitHub](https://github.com/nginx/kubernetes-ingress/tree/v5.2.1/examples/custom-resources/basic-tcp-udp) but that doesn’t explain the load balancing part which is what I am looking for.

---

<div class="post-metadata">

**Author:** ![heo](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/heo/32/5_2.png) [@heo](https://community.nginx.org/u/heo)\
**Post date:** [December 10, 2025, 6:49pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/39 "2025-12-10T18:49:28Z")

</div>

I have a question of my own for the NGINX Ingress Controller and NGINX Gateway Fabric teams! :nginx_heart:

What is your favorite part of working on these projects, or what gets you excited about the technology? Do you have a favorite feature or capability?

---

<div class="post-metadata">

**Author:** ![bmv126](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/bmv126/32/3913_2.png) [@bmv126](https://community.nginx.org/u/bmv126)\
**Post date:** [December 10, 2025, 6:50pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/40 "2025-12-10T18:50:02Z")

</div>

When crds are disabled, what all features will not be available ?

From the docs, i understood that tcp/udp depends on these crd or is there any other way to achieve this ?

---

<div class="post-metadata">

**Author:** ![javorszky](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/javorszky/32/3923_2.png) [@javorszky](https://community.nginx.org/u/javorszky)\
**Post date:** [December 10, 2025, 6:58pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/41 "2025-12-10T18:58:06Z")

</div>

Looking at the source code, the following will not work without custom resources:

- TLS Passthrough / transport servers
- cert-manager
- external-dns controller
- global configuration
- anything to do with Policies
- virtualservers
- and virtual server routes

The CRDs are there to make it easier to listen to and interpret connected data rather than relying on annotations for a lot of things.

---

<div class="post-metadata">

**Author:** ![hshannon](https://avatars.discourse-cdn.com/v4/letter/h/bcef8e/32.png) [@hshannon](https://community.nginx.org/u/hshannon)\
**Post date:** [December 10, 2025, 7:03pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/42 "2025-12-10T19:03:11Z")

</div>

The NGINX Ingress Controller monitor the Kubernetes resources user creates or changes, such as Ingress and ConfigMaps, and custom resources like VirtualServer, and transform the spec to NGINX confs using Go templates.

If you’re interested in more technical details, you can look at this page in our [docs](https://docs.nginx.com/nginx-ingress-controller/overview/design/#the-nginx-ingress-controller-process)

If you look at the conf generated, you might see a list of pod IP of upstream backend in the `upstream` block

---

<div class="post-metadata">

**Author:** ![hshannon](https://avatars.discourse-cdn.com/v4/letter/h/bcef8e/32.png) [@hshannon](https://community.nginx.org/u/hshannon)\
**Post date:** [December 10, 2025, 7:07pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/45 "2025-12-10T19:07:11Z")

</div>

I haven’t used Istio myself, but we also have a [tutorial](https://docs.nginx.com/nginx-ingress-controller/tutorials/nginx-ingress-istio/) on our website on integrating the NGINX Ingress Controller with Istio

---

<div class="post-metadata">

**Author:** ![B-L-R](https://avatars.discourse-cdn.com/v4/letter/b/919ad9/32.png) [@B-L-R](https://community.nginx.org/u/B-L-R)\
**Post date:** [December 10, 2025, 7:07pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/46 "2025-12-10T19:07:23Z")

</div>

What happens if there’s an invalid annotation used? With the community version, certain annotations aren’t properly validated, which can prevent the future ingress resources from being picked up.

Is it the same for the F5 open source ingress controller?

Also the community ingress controller has these pages on annotation security / hardening guidelines - [Hardening guide - Ingress-Nginx Controller](https://kubernetes.github.io/ingress-nginx/deploy/hardening-guide/) and [Annotations Risks - Ingress-Nginx Controller](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations-risk/)

Is there a similar hardening/annotation guideline for the F5 ingress controller?

---

<div class="post-metadata">

**Author:** ![heo](https://drob5swvtjqxg.cloudfront.net/user_avatar/community.nginx.org/heo/32/5_2.png) [@heo](https://community.nginx.org/u/heo)\
**Post date:** [December 10, 2025, 7:07pm UTC](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401/47 "2025-12-10T19:07:44Z")

</div>

Question from the wild that I’ve seen asked many times:

> When should I consider migrating to Gateway API? What factors are most important to consider?

[Previous page](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401.md?page=1)

[Next page](https://community.nginx.org/t/live-ama-transitioning-to-the-open-source-nginx-ingress-controller-from-ingress-nginx-dec-10-11/8401.md?page=3)
