惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
T
Threatpost
N
News and Events Feed by Topic
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
C
CXSECURITY Database RSS Feed - CXSecurity.com
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
AI
AI
GbyAI
GbyAI
Recent Announcements
Recent Announcements
Security Latest
Security Latest
Scott Helme
Scott Helme
W
WeLiveSecurity
S
Schneier on Security
人人都是产品经理
人人都是产品经理
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园_首页
Forbes - Security
Forbes - Security
Simon Willison's Weblog
Simon Willison's Weblog
S
Security @ Cisco Blogs
The Register - Security
The Register - Security
H
Hacker News: Front Page
V
Visual Studio Blog
P
Privacy & Cybersecurity Law Blog
P
Privacy International News Feed
TaoSecurity Blog
TaoSecurity Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
News | PayPal Newsroom
Hacker News - Newest:
Hacker News - Newest: "LLM"
Google DeepMind News
Google DeepMind News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
CERT Recently Published Vulnerability Notes
Y
Y Combinator Blog
D
Docker
I
InfoQ
AWS News Blog
AWS News Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
S
Securelist
L
LINUX DO - 最新话题
阮一峰的网络日志
阮一峰的网络日志
Help Net Security
Help Net Security
G
GRAHAM CLULEY
G
Google Developers Blog
The Last Watchdog
The Last Watchdog
Hugging Face - Blog
Hugging Face - Blog
Blog — PlanetScale
Blog — PlanetScale
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Stack Overflow Blog
Stack Overflow Blog
I
Intezer

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
From Ingress-NGINX to Gateway API: The Migration Everyone Underestimated
Kubernetes w · 2026-05-11 · via DEV Community

The retirement of Ingress-NGINX in March 2026 forced thousands of platform teams to finally confront a migration they had delayed for years. While Gateway API was positioned as the natural successor, the transition exposed deep architectural mismatches between how organizations actually operated Kubernetes networking and how Gateway API expected ownership to work. What looked simple on conference slides quickly turned into one of the most frustrating infrastructure migrations many Kubernetes engineers had ever experienced.

Spotify

The End of an Era

For nearly a decade, Ingress-NGINX quietly became the backbone of Kubernetes networking. It was everywhere. Startups used it because it was easy to deploy. Enterprises standardized on it because it was flexible. Managed Kubernetes platforms built integrations around it. Helm charts assumed its existence by default. Entire platform engineering practices evolved around the operational habits that Ingress-NGINX created.

By the time the retirement announcement arrived in March 2026, Ingress-NGINX was deeply embedded into the operational DNA of the cloud-native ecosystem. Estimates suggested that close to half of production Kubernetes clusters globally still depended on it in some capacity. That number alone explains why the retirement announcement triggered such a strong reaction across the industry.

The real surprise, however, was not that organizations needed to migrate. Everyone already knew Gateway API was the future. Kubernetes SIG Network had spent years steering the ecosystem toward it. The real shock came from how fundamentally different Gateway API actually was once teams started migrating real production workloads.

Many engineers initially approached the migration assuming Gateway API was simply “Ingress but newer.” That assumption became the root cause of countless failed migration attempts, rollout delays, emergency redesigns, and frustrated platform teams.

Because Gateway API was never designed to be Ingress v2.

It was designed to fix the architectural limitations that Ingress had accumulated over nearly a decade of production use.

And that meant the operational model had to change completely.

Twitter

Why the Migration Became So Frustrating

One of the reasons this migration became emotionally exhausting for so many teams was because it forced organizations to confront years of accumulated shortcuts, hidden dependencies, and networking practices that had quietly evolved without proper structure.

Ingress-NGINX allowed almost everything to live inside a single resource. Application teams could define routing, TLS, rewrites, authentication behavior, timeout policies, canary deployments, and controller-specific tuning in one YAML file. That simplicity created enormous adoption momentum. Developers loved it because it gave them autonomy. Platform teams tolerated it because it worked.

Over time, though, that convenience slowly became technical debt.

Organizations unknowingly turned Ingress resources into miniature infrastructure platforms. Routing logic, security behavior, certificate management, and edge traffic policies all became tightly coupled together. Teams stopped thinking about networking ownership boundaries because Ingress blurred them so effectively.

Gateway API deliberately breaks that model apart.

And that is exactly where the friction started.

Decoupled Ownership vs. Monolithic Ingress

The biggest architectural shift during migration was the transition from monolithic ownership to decoupled ownership.

Ingress-NGINX encouraged a workflow where application teams controlled almost everything themselves. A developer could deploy an application, expose it externally, attach TLS, configure redirects, tune traffic behavior, and integrate with cert-manager without involving anyone else. For fast-moving engineering organizations, this became extremely attractive because it reduced dependency on centralized infrastructure teams.

But this operational freedom came with hidden problems. Large organizations eventually found themselves struggling with duplicate hostnames, conflicting routes, inconsistent TLS configurations, accidental public exposure of internal services, and security policies that varied wildly from one namespace to another. Platform teams often had very little visibility into what application teams were exposing externally until something broke in production.

Gateway API approached the problem differently. Instead of allowing a single resource to control everything, it introduced clear ownership separation between infrastructure operators and application developers. Platform teams now typically manage GatewayClasses, shared Gateways, listeners, and infrastructure lifecycle concerns, while application teams manage HTTPRoutes and backend routing definitions.

Architecturally, this was a huge improvement. Operationally, however, many organizations discovered that their internal processes were completely unprepared for this separation.

The migration immediately triggered difficult organizational questions. Teams suddenly had to decide who owned wildcard certificates, who approved external hostnames, whether developers could attach routes freely, how namespace isolation should work, and which teams were responsible for managing edge security policies. These were not technical questions anymore. They were governance questions.

That distinction became incredibly important during real-world migrations.

Some organizations attempted to preserve their old Ingress workflows by giving every application team its own dedicated Gateway. Others allowed developers to manage listeners directly, recreating the same infrastructure sprawl that Gateway API was originally designed to prevent. In both cases, the migration often became messy, expensive, and difficult to govern.

Other companies overcorrected in the opposite direction. Platform teams locked down Gateways so aggressively that application developers lost deployment flexibility entirely. Simple hostname changes suddenly required infrastructure tickets, review approvals, and long operational delays. Developers who once shipped independently through Ingress-NGINX now felt constrained by centralized networking ownership.

The organizations that migrated successfully usually found a balanced middle ground. They adopted shared production Gateways, delegated route ownership to application teams, enforced guardrails through policy engines, and clearly defined operational responsibilities before migration work even began.

The most successful migrations were rarely the fastest ones. They were the ones that spent time redesigning ownership models first.

Annotation Sprawl: The Hidden Monster

One of the harshest realities exposed during migration was how heavily organizations depended on annotations.

Ingress-NGINX gradually evolved into something far larger than a simple ingress controller. Over the years, annotations became the mechanism through which teams implemented business-critical traffic behavior. Authentication flows, CORS policies, rate limiting, header rewrites, sticky sessions, canary deployments, body size tuning, external authorization hooks, and timeout handling were all embedded directly into annotations.

In many production environments, Ingress resources contained dozens of annotations that nobody had fully audited in years.

This became a nightmare during Gateway API migrations.

Gateway API intentionally avoided relying on annotations as the primary extension model. Instead, it introduced structured APIs, policy attachment mechanisms, and implementation-specific extension resources. From an architectural perspective, this was absolutely the right direction. The Kubernetes community had already learned that annotation-driven APIs eventually become impossible to standardize cleanly.

But the transition exposed a painful truth that many teams did not want to admit.

Most organizations were not simply using Kubernetes ingress. They were using highly customized NGINX behavior expressed through Kubernetes manifests.

That difference mattered enormously.

Migration teams quickly realized that many of their existing annotations either had no equivalent, behaved differently, or depended heavily on controller-specific implementations. Features that once felt trivial under Ingress-NGINX suddenly required entirely different architectural approaches under Gateway API.

This became especially painful for organizations that had deeply optimized around NGINX semantics over several years.

The idea of “portable Kubernetes networking” sounded attractive in theory, but reality turned out to be far more complicated. Basic routing behavior translated reasonably well between implementations, but advanced production traffic management still depended heavily on vendor-specific extensions, proprietary CRDs, and controller-specific policy models.

Teams expecting perfect portability quickly became frustrated when advanced routing behavior failed to migrate cleanly between different Gateway API implementations.

The ecosystem is improving rapidly, but during the initial migration wave, many engineers felt blindsided by how much hidden coupling existed between their applications and Ingress-NGINX behavior.

TLS and DNS Handling Became Far More Complex

TLS handling was another area where migrations became unexpectedly difficult.

Ingress-NGINX made TLS feel deceptively simple. Teams attached a certificate secret directly to an Ingress resource, cert-manager handled issuance, DNS pointed at the load balancer, and everything generally worked with minimal operational coordination.

Gateway API changed this model significantly by moving TLS ownership to the Gateway listener layer.

At first glance, this sounded like a cleaner separation of concerns. In practice, it forced organizations to rethink certificate ownership entirely. Application teams that previously controlled certificates directly suddenly depended on platform-managed listeners. Shared wildcard certificate strategies became much more important. Namespace trust boundaries became a major operational discussion.

This transition exposed years of inconsistent certificate management practices inside many organizations.

The complexity increased dramatically in multi-tenant environments. Platform teams had to determine whether application namespaces could reference centralized TLS secrets, whether certificates should remain isolated per namespace, and how cross-namespace trust relationships should be secured safely.

The introduction of ReferenceGrant solved many security concerns elegantly from a design perspective, but operationally it added another layer of complexity that developers needed to understand. Engineers who were already struggling with route attachment semantics now also had to learn cross-namespace trust management concepts that never existed in their previous Ingress workflows.

DNS automation introduced another unexpected migration problem.

Many organizations had tightly integrated ExternalDNS, cert-manager, and cloud DNS controllers around Ingress resources. Those automation pipelines often relied on assumptions that no longer held true once Gateway API resources replaced Ingress definitions.

Production migration rehearsals frequently uncovered broken DNS propagation, failed ACME challenges, inconsistent wildcard behavior, and certificate issuance failures that nobody anticipated during early planning phases.

What looked straightforward in architecture diagrams often became extremely fragile in real production cutovers.

The Load Balancer Problem Nobody Budgeted For

One of the most painful surprises during Gateway API migration was the impact on cloud infrastructure costs.

Ingress-NGINX often centralized traffic behind a single ingress controller and a shared external load balancer. While operationally dense, this approach remained relatively cost-efficient for large environments.

Gateway API encouraged more explicit infrastructure segmentation. Organizations began creating environment-specific Gateways, dedicated internal traffic planes, team-isolated entry points, and multiple listener configurations for different operational domains.

Architecturally, these patterns made sense.

Financially, many companies were completely unprepared for the consequences.

Some organizations unintentionally created a “one Gateway per team” model, which rapidly exploded the number of cloud load balancers in production. AWS Network Load Balancers multiplied. GCP forwarding rules increased dramatically. Azure load balancer quotas suddenly became operational concerns. TLS termination points fragmented across environments. Firewall management became harder.

Several large platform teams publicly shared stories of edge infrastructure costs increasing by three to five times during early Gateway API rollouts.

The problem was not Gateway API itself. The problem was misunderstanding how its operational model should scale.

Eventually, many successful organizations converged on shared Gateway architectures with delegated route ownership rather than dedicated Gateway infrastructure per application team. That balance restored much of the operational efficiency that Ingress-NGINX originally provided while still allowing teams to benefit from Gateway API’s cleaner abstractions and stronger ownership boundaries.

The Human Side of the Migration

One thing that technical migration guides rarely discuss is how emotionally draining these migrations became for experienced engineers.

People were not simply learning new YAML schemas. They were relearning how Kubernetes networking ownership worked entirely.

Engineers who could debug NGINX ingress issues from memory suddenly found themselves troubleshooting listener attachment semantics, policy CRDs, cross-namespace route permissions, and controller-specific Gateway behaviors they had never encountered before.

Even highly experienced Kubernetes practitioners felt slower during the transition.

And honestly, that frustration was justified.

Ingress-NGINX may have been messy internally, but operationally it became familiar. Teams built years of intuition around its quirks and behaviors. Gateway API replaced that familiarity with a more structured but significantly different operational mindset.

That kind of transition always takes longer than people expect.

What the Industry Learned

The retirement of Ingress-NGINX forced the Kubernetes ecosystem to confront an uncomfortable reality: networking architecture had evolved far beyond what the original Ingress model was capable of handling cleanly.

Gateway API exists because the industry outgrew annotation-driven ingress management.

Despite all the migration pain, Gateway API ultimately represents a healthier direction for Kubernetes networking. It introduces stronger multi-team boundaries, cleaner extensibility, better protocol awareness, safer infrastructure ownership models, and a more sustainable API design for the future of cloud-native traffic management.

But transitions between generations of infrastructure are never painless, especially when the previous generation powered such a massive portion of the industry.

The organizations that succeeded during the migration wave were not necessarily the ones with the biggest Kubernetes teams or the most sophisticated tooling. They were the ones that recognized early that this migration was fundamentally about operational redesign, not YAML conversion.

That distinction changed everything.

**Important Gateway API Migration Resources

The Kubernetes community produced several excellent migration resources throughout the Ingress-NGINX retirement period. These became essential reading material for platform teams planning large-scale Gateway API adoption:

Final Thoughts

The Kubernetes ecosystem spent years telling users that Gateway API was the future.

What many organizations underestimated was how different that future would actually feel in production.

Ingress-NGINX succeeded because it gave teams flexibility and speed. Gateway API succeeds because it introduces structure, ownership clarity, and long-term architectural sustainability.

And that tension between flexibility and structure is exactly where most migration frustration came from.

The retirement of Ingress-NGINX was not simply the end of a popular ingress controller.

It marked the end of an entire operational philosophy that Kubernetes networking had relied on for nearly a decade.