<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/how-we-migrated-a-production-cluster-from-ingress-nginx-to-gateway-api-v4ff56eht" -->

---
title: How We Migrated a Production Cluster from Ingress NGINX...
description: A real-world account of migrating a production Kubernetes cluster from ingress-nginx to Gateway API using kgateway. Covers why kgateway was chosen over...
canonical: https://daily.dev/posts/how-we-migrated-a-production-cluster-from-ingress-nginx-to-gateway-api-v4ff56eht
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: How We Migrated a Production Cluster from Ingress NGINX to Gateway API | daily.dev
og:description: A real-world account of migrating a production Kubernetes cluster from ingress-nginx to Gateway API using kgateway. Covers why kgateway was chosen over...
og:url: https://daily.dev/posts/how-we-migrated-a-production-cluster-from-ingress-nginx-to-gateway-api-v4ff56eht
og:image: https://api.daily.dev/og/posts/v4Ff56EhT.png
og:image:alt: How We Migrated a Production Cluster from Ingress NGINX to Gateway API
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How We Migrated a Production Cluster from Ingress NGINX to Gateway API

**[Fairwinds Blog](https://daily.dev/sources/fairwinds-blog)** · 8 min read · 23 upvotes · 0 comments

## Summary

A real-world account of migrating a production Kubernetes cluster from ingress-nginx to Gateway API using kgateway. Covers why kgateway was chosen over alternatives (Envoy Gateway, Cilium, Traefik, nginx Gateway Fabric), how to use the ingress2gateway translation tool, and how to achieve zero-downtime cutover via weighted DNS with external-dns. Also details behavioral differences to expect: WebSocket upgrade requirements, upstream connection pooling issues, and rate limiting differences. Includes operational lessons around ArgoCD sync ordering, cert-manager namespace topology, and running the controller at multiple replicas.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.fairwinds.com/blog/migrated-production-cluster-from-ingress-nginx-to-gateway-api>

## Similar posts on daily.dev

- [Ingress NGINX is EOL: A practical guide for migrating to Kubernetes Gateway API](https://daily.dev/posts/ingress-nginx-is-eol-a-practical-guide-for-migrating-to-kubernetes-gateway-api-fj854bzvi) · Datadog · 0 upvotes · 0 comments

---

Tags: [#kubernetes](https://daily.dev/tags/kubernetes), [#gateway-api](https://daily.dev/tags/gateway-api)

[View this post on daily.dev](https://daily.dev/posts/how-we-migrated-a-production-cluster-from-ingress-nginx-to-gateway-api-v4ff56eht)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"How We Migrated a Production Cluster from Ingress NGINX to Gateway API","url":"https://daily.dev/posts/how-we-migrated-a-production-cluster-from-ingress-nginx-to-gateway-api-v4ff56eht","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/how-we-migrated-a-production-cluster-from-ingress-nginx-to-gateway-api-v4ff56eht"},"datePublished":"2026-07-01T17:14:11.771Z","dateModified":"2026-07-01T20:21:31.622Z","description":"A real-world account of migrating a production Kubernetes cluster from ingress-nginx to Gateway API using kgateway. Covers why kgateway was chosen over...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/487edf67bf6c29e60dddebd46101ebca?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/487edf67bf6c29e60dddebd46101ebca?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Fairwinds Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Fairwinds Blog","logo":"https://media.daily.dev/image/upload/s--czVElT3y--/f_auto,q_auto/v1780213254/logos/fairwinds-blog?_a=BAMAMiWQ0","url":"https://daily.dev/sources/fairwinds-blog"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/how-we-migrated-a-production-cluster-from-ingress-nginx-to-gateway-api-v4ff56eht","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":23},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"kubernetes,gateway-api","timeRequired":"PT8M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Fairwinds Blog","item":"https://daily.dev/sources/fairwinds-blog"},{"@type":"ListItem","position":3,"name":"How We Migrated a Production Cluster from Ingress NGINX to Gateway API"}]}
```

