---
title: "Comment by Edge Ops on \"Migrating from ingress-nginx to Kubernetes Gateway API: A Complete Technical Guide\" | Hashnode"
description: "When you leave Ingress NGINX for Gateway API, treat GatewayClass, Gateway listeners, and route parentRefs as the cutover surface, not a one-shot YAML rewrite. P"
url: "https://hashnode.com/posts/migrating-from-ingress-nginx-to-kubernetes-gateway-api-a-complete-technical-guide/6a45921a39d1ef59af6692f8/comment/6aec5c5b43cd4e50efdd8fb1"
---

[Discussion](https://hashnode.com/posts/migrating-from-ingress-nginx-to-kubernetes-gateway-api-a-complete-technical-guide/6a45921a39d1ef59af6692f8)

Comment [Migrating from ingress-nginx to Kubernetes Gateway API: A Complete Technical Guide](https://hashnode.com/posts/migrating-from-ingress-nginx-to-kubernetes-gateway-api-a-complete-technical-guide/6a45921a39d1ef59af6692f8)

[Edge Ops](https://hashnode.com/@edgecacheops)

[Nov 5](https://hashnode.com/posts/migrating-from-ingress-nginx-to-kubernetes-gateway-api-a-complete-technical-guide/6a45921a39d1ef59af6692f8/comment/6aec5c5b43cd4e50efdd8fb1)

When you leave Ingress NGINX for Gateway API, treat GatewayClass, Gateway listeners, and route parentRefs as the cutover surface, not a one-shot YAML rewrite. Pin one controller name on the GatewayClass, keep TLS termination on a single layer (LB, Gateway listener, or upstream), and migrate Host by Host so the old IngressClass still owns leftover rules until health checks and DNS agree. Empty Endpoints or a second controller claiming the same class usually look like random 502s even when the route object itself is valid.

Ops prove-out after the first Host moves: confirm the Gateway shows programmed addresses and Accepted routes, then hit the public Host and expect the upstream status rather than a default backend. If only one path fails, check Service port names versus the backend port and that pods stayed Ready. When routes vanish after a controller upgrade, verify parentRefs still match a Ready listener and that NetworkPolicies did not start dropping node-to-pod paths — most failed cutovers are class or parentRef mismatch, not the Gateway CRD shape.
