商店現已上線

我們打造用於網站、AI 智慧體和 LLM 訓練的 Workstation AI 機器——線上配置併購買。

獲取同行價格
AI 產品
AI 實驗室OpenAI 智慧體Claude 代理Grok BotWorkstation AI 原生 CRM營銷所有產品
AI 解決方案
應用型 AIAI 智慧體生成式 AIAI 自動化AI 技能提升中小企業 AI 套餐企業 AI 實驗室AI 工作站NVIDIA 硬體與軟體NVIDIA 加速計算私有 AIGPU 私有云GPU 叢集邊緣 AI行業 AI
AI 服務
平臺現代化數字工程資料基礎與 AI自主運營AI 諮詢DevOps 自動化網路安全軟體開發智慧體構建MLOps 搭建GPU 租賃GPU 私有云
關於我們
公司我們的故事合作伙伴客戶案例
AI 資料中心
AI 資料中心GPU 私有云GPU 叢集GPU 租賃
AI 洞察Jev 系列基準測試實驗室模型選擇
技術說明
文件
Linux 作業系統UbuntuRed Hat Enterprise LinuxSUSE LinuxAlpine LinuxDebian、Rocky 與 AlmaLinux
AI 雲平臺AWS 與 Amazon BedrockGoogle Cloud 與 Vertex AIMicrosoft Azure 與 AI FoundryGPU 雲與算力市場
私有 AI 資料中心面向律師事務所面向會計師事務所本地部署平臺全面安全的雲
工具Ring PromoterJobshout
新聞
部落格
聯絡我們登入

面向現代企業的 AI 工作站、AI 多智慧體軟體、GPU 基礎設施和智慧代理解決方案。

聯絡我們

AI 解決方案

應用型 AIAI 智慧體生成式 AIAI 自動化AI 技能提升中小企業 AI 套餐企業 AI 實驗室行業 AI

產品

所有產品Workstation AI native CRM 與 ERP營銷OpenAI 智慧體Ring PromoterJobshout

公司

關於我們公司AI 資料中心為什麼選擇Workstation合作伙伴客戶案例定價聯絡TenthMatrix

資源

AI 洞察技術說明文件Linux 作業系統AI 雲平臺私有 AI 資料中心部落格搜尋網站地圖
英國總部
77-79 Marlowes, Hemel Hempstead HP1 1LF路線指引 — 從 M25 外環倫敦 20 號出口駛出公司編號: 11641870週一至週五:上午 9:00 - 下午 6:00 GMT
+44 7515 356 146
比利時辦公室
Workstation SRL, Rue Vanderkindere 34, 1180 Uccle, BrusselsBE 0751.518.683週一至週五:上午 9:00 - 下午 6:00 CET
+32 492 45 67 46
印度辦公室
#159 Sector 9, Pocket 1, DDA Flats, 110077 Dwarka, New Delhi
+91 98881 98841
台灣辦公室
3F, No. 2-4, Aisi Rd., Ren'ai Dist., Keelung City 200, Taiwan基隆市仁愛區愛四路2之4號3樓週一至週五:上午 9:00 - 下午 6:00 臺灣時間(GMT+8)
+886 926 892 701+32 492 45 67 46

© 2026 Workstation AI。保留所有權利。

隱私資料刪除Cookie服務條款網站地圖

NVIDIA、NVIDIA 標誌、RTX、RTX PRO、Blackwell、CUDA、NVLink、MGX、Omniverse、Spectrum-X、Quantum、BlueField、DGX 與 HGX 為 NVIDIA Corporation 在美國及其他國家的商標及/或註冊商標。AMD、AMD Arrow 標誌、EPYC、Instinct、Ryzen 與 Threadripper 為 Advanced Micro Devices, Inc. 的商標。Dell 與 PowerEdge 為 Dell Inc. 或其子公司的商標。Intel 與 Xeon 為 Intel Corporation 或其子公司的商標。AMAX、AceleMax 與 LiquidMax 為 AMAX Engineering Corporation 的商標。所有其他產品名稱、標誌與品牌均為其各自所有者之財產。我們使用它們僅為識別我們所描述、供應或支援的產品;使用這些名稱並不表示其所有者為我們背書。

Loading blog...

首頁 / 部落格
DevOpsKubernetesNetworkingPlatform EngineeringSecurity

Gateway API Shifts Cluster Networking: An Ownership Model for the Edge

JobShout AI Blog Writer Agent (opens in a new window)2026年10月18日10 min read
Cover

Ingress put one object, and a pile of controller-specific annotations, between every team and the cluster edge. Gateway API splits that object into resources owned by different people, with explicit consent wherever a namespace boundary is crossed. This post is for the people designing the platform: what changes in ownership, which decisions you have to make up front, and how to avoid rebuilding the old free-for-all on a new API.

In one sentence. Gateway API is less a new routing syntax than a new ownership model for cluster ingress: platform teams own the gateways, application teams own their routes, and the API itself enforces the boundary between them.

If you want the hands-on version (mapping Ingress fields to HTTPRoute, running ingress2gateway, shifting traffic and rolling back), read the companion post, Gateway API replaces Ingress: a migration playbook. This one stays at the architecture level.

Why this is on your roadmap now

Three facts have moved Gateway API from "interesting" to "planned work" for most platform teams.

  • Ingress is frozen. The Kubernetes documentation now recommends Gateway instead of Ingress and states that the Ingress API "is no longer being developed, and will have no further changes or updates made to it". Ingress stays generally available and there are no plans to remove it [1].
  • Ingress NGINX is retired. SIG Network and the Security Response Committee announced that maintenance would stop in March 2026, after which there would be no further releases, bug fixes or security patches [2]. The kubernetes/ingress-nginx repository is now archived on GitHub. Existing deployments keep running, which is exactly why unpatched controllers linger.
  • Gateway API has filled the gaps. Version 1.5 promoted ListenerSet, TLSRoute, ReferenceGrant, the HTTPRoute CORS filter and client certificate validation to the Standard (GA) channel [5]. Version 1.7.0, released on 29 October 2026, added HTTPRoute retries to Standard [6].

A correction: this is not about kube-proxy

The earlier version of this post framed Gateway API as the "end of kube-proxy". That was wrong. kube-proxy implements the virtual IP behind ClusterIP, NodePort and LoadBalancer Services, using iptables, IPVS or nftables rules on each node [8]. Gateway API describes L4 and L7 routing into and between services [3]. Replacing kube-proxy (for example with an eBPF datapath) is a separate decision with its own risks, and you can adopt Gateway API with or without it.

From one object to an ownership model

Ingress gives you one namespaced object that carries the hostname, the TLS certificate reference, the paths and the backends, plus whatever annotations your controller understands. The 2023 Kubernetes announcement of ingress2gateway put the problem plainly: Ingress "can only accommodate basic HTTP routing", which pushes traffic splitting, header matching and similar features into "provider-specific, non-transferable annotations" [9]. In practice, anyone who can create an Ingress can influence shared proxy behaviour.

Gateway API breaks that into layers, and the project's documentation describes them in terms of three personas [3]:

  • Infrastructure provider ("Ian"): runs shared infrastructure for many tenants. Owns GatewayClass, which names the controller that implements gateways.
  • Cluster operator ("Chihiro"): runs a cluster and its policies for many users. Owns Gateway objects, which declare listeners: ports, protocols, hostnames and TLS.
  • Application developer ("Ana"): owns HTTPRoute, GRPCRoute and other route types, which match requests and send them to Services.
Who owns each layer of a Gateway API request path. Three horizontal ownership lanes. The infrastructure provider owns the GatewayClass. The cluster operator owns a shared Gateway with HTTP and HTTPS listeners in the infra namespace. Application teams own HTTPRoutes in their own namespaces, team-a and team-b, which point at their Services. A request travels from the client through the Gateway listener to the team-a route and service. Labels show that routes attach with parentRefs and the Gateway admits them with allowedRoutes.
Each layer has a different owner. Routes ask to attach to a Gateway (parentRefs) and the Gateway's listeners decide which namespaces may attach (allowedRoutes). A request only reaches team-a's Service when both sides agree.

Two design choices make this more than a diagram on a slide.

Attachment is a two-way handshake

A route names the Gateway it wants with parentRefs. That alone does nothing: the Gateway's listener must also allow routes from the route's namespace through allowedRoutes. The project's security model describes this as a deliberate "handshake between namespaces" whenever a boundary is crossed [4]. The default is Same, meaning only routes in the Gateway's own namespace can attach [10].

Cross-namespace references need a grant

When a Gateway in infra needs a certificate Secret stored in certs, or a route needs a Service in another namespace, the owner of the target namespace must publish a ReferenceGrant. In the security model's words, ReferenceGrant "allows resource owners to make their resources available to Gateway API resources in other namespaces" [4]. Ingress had no equivalent; it simply could not reference across namespaces.

# Owned by the cluster operator: a shared Gateway that admits
# routes only from namespaces labelled for it.
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: shared-gw
  namespace: infra
spec:
  gatewayClassName: example-class
  listeners:
  - name: https
    port: 443
    protocol: HTTPS
    hostname: "*.example.com"
    tls:
      mode: Terminate
      certificateRefs:
      - kind: Secret
        name: wildcard-example-com
        namespace: certs
    allowedRoutes:
      namespaces:
        from: Selector
        selector:
          matchLabels:
            gateway-access/shared-gw: "true"
---
# Owned by whoever owns the certs namespace: lets Gateways in
# infra read Secrets here. Without it the listener will not program.
apiVersion: gateway.networking.k8s.io/v1
kind: ReferenceGrant
metadata:
  name: allow-infra-gateways
  namespace: certs
spec:
  from:
  - group: gateway.networking.k8s.io
    kind: Gateway
    namespace: infra
  to:
  - group: ""
    kind: Secret

That namespace label is now a security control. Decide who may apply it, and enforce that with RBAC or admission policy, otherwise any team that can label its own namespace can attach to your shared edge.

What changes for platform teams

ConcernWith IngressWith Gateway API
Who controls listeners and TLSWhoever writes the Ingress (TLS block per object)Gateway owner; TLS is a property of the listener
Advanced routing (weights, headers, mirroring)Controller-specific annotationsStandard HTTPRoute fields [9]
Cross-namespace accessNot possibleExplicit: allowedRoutes plus ReferenceGrant [4]
RBAC granularityOne resource type for everyoneSeparate resources per persona [4]
Feedback to app teamsController logs and events, varies by controllerStandard status conditions on Gateways and routes
API evolutionFrozen [1]Release train with Standard and Experimental channels [5]

The security model's simple three-tier RBAC split is a sensible starting point [4]:

PersonaGatewayClassGatewayRoutes
Infrastructure providerWriteWriteWrite
Cluster operatorNoWriteWrite
Application developerNoNoWrite

Status conditions deserve more attention than they usually get. A route reports Accepted and ResolvedRefs per parent Gateway, with reasons such as NotAllowedByListeners, NoMatchingListenerHostname, RefNotPermitted and BackendNotFound defined in the API itself [10]. That gives application teams a self-service answer to "why is my route not live?" without access to the controller's logs. Build your developer documentation and alerts around those conditions.

Choosing a gateway topology

Three gateway topologies. Panel one: a single shared Gateway owned by the platform team, with routes from three team namespaces attached. Panel two: one Gateway per team, each with its own load balancer. Panel three: a shared Gateway extended by ListenerSets that each team owns, each ListenerSet carrying its own hostname and certificate, with routes attached to them.
Most organisations end up with a mix: a shared Gateway for the long tail of services, and dedicated Gateways for workloads with their own compliance, scaling or blast-radius needs.

Before v1.5, a shared Gateway forced every team that needed its own hostname or certificate to ask the platform team to edit the same object. ListenerSet removes that bottleneck. The v1.5 release notes say it lets listeners "be defined independently and then merged onto a target Gateway", and it also raises the practical ceiling beyond 64 listeners on one Gateway [5]. The Gateway owner still decides which namespaces may attach ListenerSets, through allowedListeners, which defaults to None in the API, so sharing is opt-in [10].

TopologyGood fitWatch out for
Shared GatewayMany small services, one domain, a small platform teamThe platform team becomes a queue for listener changes; one bad config affects everyone
Gateway per team or tierRegulated or high-traffic workloads, separate change windowsLoad balancer and certificate sprawl; inconsistent policies
Shared Gateway + ListenerSetsMany teams with their own hostnames on shared infrastructureYour implementation must support ListenerSet; check its conformance report

A platform decision playbook

These are the decisions to make, in order, before the first team migrates. Each one is cheaper to settle now than to retrofit.

  1. Name the CRD owner. Gateway API ships as CRDs, which are cluster-scoped and privileged. The project's guidance is that "either a cluster admin or cluster provider should be responsible for managing the CRDs" [7]. Pin a release (v1.7.0 is current [6]) and decide how you will upgrade it; the guide recommends one minor version at a time and warns against downgrades [7].
  2. Stay on the Standard channel by default. Experimental resources can change or disappear without deprecation, and upgrades may need the CRDs removing and reinstalling [7]. Allow Experimental features only per cluster, with a named owner.
  3. Choose implementations from conformance reports, not marketing. The implementations page separates conformant from partially conformant controllers and links each to a published conformance report [11]. Check the extended features you actually need, such as mirroring, retries or ListenerSet.
  4. Pick a topology per tier. Use the table above. Write down which workloads get dedicated Gateways and why.
  5. Define attachment policy. Decide the allowedRoutes and allowedListeners rules for each Gateway, the namespace labels that grant access, and who may set them.
  6. Map personas to RBAC. Start with the three-tier table. Application teams get write on routes in their namespaces and read on Gateways so they can see status.
  7. Set an extension policy. Implementations add their own policy resources for things the standard does not cover, such as rate limits or body size. Decide which ones you allow, because each one reduces portability.
  8. Make status observable. Alert when a route is not Accepted or not ResolvedRefs, and when a Gateway is not Programmed.
  9. Only then migrate. Follow the step-by-step process in the migration playbook.

East-west traffic and service mesh

Gateway API is not only for the edge. Its GAMMA work, in the Standard channel since v1.1, lets mesh implementations use the same route types for service-to-service traffic: routes attach directly to a Service instead of to a Gateway [3]. If you run or plan a mesh, ask your mesh vendor whether it is conformant for GAMMA, so application teams learn one routing API for both directions.

Common mistakes

  • Treating it as a syntax upgrade. Converting every Ingress one-to-one, with allowedRoutes.namespaces.from: All on a shared Gateway, recreates the old free-for-all with more objects.
  • Letting several tools install the CRDs. Two controllers that each bundle a different Gateway API version will fight. Implementations must never overwrite newer CRDs or CRDs from another channel [7]; make sure yours is configured not to manage them at all if the platform team does.
  • Ignoring status in developer workflows. If developers cannot read route conditions, every misattached route becomes a ticket for the platform team.
  • Leaning on implementation policies too early. Each custom policy is an annotation by another name. Check whether the standard covers it first.
  • Leaving retired controllers in place. An archived Ingress NGINX will receive no security fixes [2]. Find every instance, including in clusters nobody thinks about.

Platform readiness checklist

  • A named owner and pinned version for the Gateway API CRDs, Standard channel only.
  • An approved implementation list, each with a conformance report you have read.
  • Written topology decision per workload tier.
  • Attachment policy: allowedRoutes and allowedListeners per Gateway, with controlled namespace labels.
  • RBAC roles for each persona, including read access to Gateways for app teams.
  • ReferenceGrant ownership rules for certificate and shared-service namespaces.
  • Alerts on Gateway Programmed and route Accepted / ResolvedRefs.
  • An inventory of every Ingress controller, and a retirement date for each.

What to do this week

  1. Run kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx in every cluster, the check the Kubernetes project suggests [2], and list what you find.
  2. Run kubectl get crd | grep gateway.networking.k8s.io to see whether Gateway API CRDs are already installed, and by whom.
  3. Write a one-page decision record naming the CRD owner, the channel and the target version.
  4. Draft the RBAC roles for the three personas and review them with one application team.
  5. Pick one low-risk service and agree the topology it will use, ready for the migration playbook.

If you would like help designing the ownership model, or a team to run the edge for you once it is in place, our SysOps 24/7 service covers Kubernetes platform operations.

References

  1. Ingress (concept documentation, note on the frozen API), Kubernetes documentation.
  2. Ingress NGINX Retirement: What You Need to Know, Kubernetes blog, 11 November 2025.
  3. Gateway API overview: design principles, resource model and personas, Kubernetes SIG Network.
  4. Gateway API security model, Kubernetes SIG Network.
  5. Gateway API v1.5: Moving features to Stable, Kubernetes blog, 21 April 2026.
  6. Gateway API v1.7.0 release notes, GitHub, 29 October 2026.
  7. CRD management, Gateway API guides.
  8. Virtual IPs and service proxies, Kubernetes documentation.
  9. Introducing ingress2gateway; Simplifying Upgrades to Gateway API, Kubernetes blog, 25 October 2023.
  10. Gateway API v1 type definitions (gateway_types.go, shared_types.go), v1.7.0, GitHub.
  11. Gateway API implementations and conformance, Kubernetes SIG Network.