Advanced - Ingress
什麼是 Ingress
Ingress 是 Kubernetes 中用於管理外部 HTTP 和 HTTPS 流量進入集群內部服務的資源。它提供了一種靈活的方式來暴露服務,並允許根據路徑或主機名等條件實現流量路由。
為什麼需要 Ingress?
在 Kubernetes 中,常見的流量暴露方式有以下幾種:
- ClusterIP(預設):僅允許集群內部訪問服務。
- NodePort:將服務暴露在每個節點的指定端口上,外部流量可以通過節點 IP 和該端口訪問。
- LoadBalancer:依賴雲提供商的負載均衡 器服務將流量分配到後端。
然而,當應用需要更高級的流量管理功能(例如路由、TLS 終止或虛擬主機支持)時,這些方式會變得繁瑣。Ingress 則是一種高效的解決方案。
Ingress 的功能
- 基於路徑的路由
- 根據 URL 路徑將流量導向不同的服務。
- 基於主機名的路由
- 根據請求的主機名實現虛擬主機支持。
- TLS 支持
- 配置 HTTPS 流量並終止 TLS。
- 負載均衡
- 自動將流量分配給服務的後端 Pod。
- 反向代理
- 支持自訂的 HTTP 標頭。
Ingress Controller
Ingress 本身是一種 Kubernetes 資源,但需要搭配 Ingress Controller 使用。Ingress Controller 是實際負責處理流量並執行 Ingress 規則的實現。常見的 Ingress Controller 包括:
- NGINX Ingress Controller
- HAProxy Ingress Controller
- Traefik
- Istio Gateway
在安裝集群時,必須先部署至少一個 Ingress Controller 才能使 Ingress 資源生效。