05 · 南北向入口 — MetalLB + Gateway API
外部流量進入應用程式 RKE2 叢集 · 無雲端 LB、無 NodePort · 請求拓樸 + 流程。 · 互動原版 ↗
流程
- DNS。 用戶端將 app.corp.example 解析為 MetalLB VIP,對 10.10.30.201:443 送出 TLS SYN。
- 網路架構。 ToR 透過 BGP(或 L2 模式的 ARP)持有 VIP /32,轉送至閘道節點在客體 VLAN 300 上的網卡。
- MetalLB。 節點接受 LoadBalancer Service 的流量,交給 Gateway(Envoy)pod。
- Gateway API。 Envoy 終止 TLS,比對 listener + HTTPRoute(host/path/header),套用政策。
- 後端。 請求經 CNI 疊加網路轉送至後端 Service 的就緒 endpoint。
- 返回。 回應經同一 VIP 離開;容錯移轉:BGP 撤回路由 / 另一個 speaker 在數秒內接手。
Pod 分散於各 worker VM(topology spread)— 閘道在所有就緒 endpoint 之間負載平衡。後端維持 ClusterIP,絕不直接對外。
設計備註
MetalLB 位址池
每個客體 VLAN 一個專屬 IPAddressPool(例如 10.10.30.200–250)。BGP 模式與 ToR 配對建立 peering 以取得 ECMP + 快速容錯移轉;L2 模式是簡單的備援方案。
Gateway API 取代 Ingress
每叢集一個共用 Gateway(Service type LoadBalancer → MetalLB);各團隊在自己的 namespace 掛上 HTTPRoute — 內建角色分離。
範圍
僅在應用程式 RKE2 叢集內運作。Harvester/儲存叢集的 API 維持 kube-vip VIP;Ceph VLAN 210/211 絕不經由閘道對外暴露。