Concepts - Services, Load Balancing, and Networking - gateway API
ingress 很強大
但他的敗筆是他只能處理 http/https 的 protocol
如果要支援 tcp/udp 以前的作法是使用 CRD 去擴充 k8s
比如說 nginx TransportServer
Gateway API 本身也是一個 CRD
但因為他對 API 有統一的規範
因此在不同 implement 切換 & 使用上較容易
所以如果你有需求使用 nginx TransportServer , 那會建議直接使用 nginx-gateway-fabric
這種使用 gateway API 規範的 soluction
install gateway controller
不過由於 k3s 並沒有讓 traefik 支援 gateway API (traefik default 沒有 enable)
因此我們要來手動 enable
k3s default 是使用 Helm Controller 去安裝 traefik
可以使用 HelmChartConfig 去修改 chart default 值
新增 file traefik_gateway-API.yaml
|
|
apply
|
|
check
|
|
以上完成讓 k3s 內建的 traefik 支援 gateway API
getting start with helm
|
|
test
|
|
gateway API 在設定上會分為多個 object
這邊為例
|
|
gateway: 定義從哪裡收 request
httproutes: 如何做 routing, 並將此 routing 附加在 gateway 上(parentRefs)
由於分成多個 object
且 gateway 不負責設定使用哪些 routes
而是讓 httproutes attech 進來 會稍微有點反邏輯的感覺
實際上 gateway 會像是 ingress class
httproutes 像是 ingress
這部份要再花時間習慣
關於 gateway 的使用細節 可以參考 doc
https://gateway-api.sigs.k8s.io/guides/simple-gateway/
由於他支援的 protocol 更多
使用上更加複雜
因此 ingress 仍然有他的優勢在