本次分享一個K8S網路的一個很重要的元件:Ingress(準確來說,這裡專指Kubernetes Ingress),以下是本文的幾個重點:
沒了,最簡單的解釋就是這樣。如果還要再細節點,可以說:
使用Ingress+Ingress controller,可以直接在Loadbalancer與內部應用service中間加入一層具備規則的控制元件,可以直接跟據規則將流量導引至正確的地方
如果要讓ingress rule可以運行,就必須要有ingress controller存在。
Ingress controller基本上是「反向代理 web server」的實作,在K8S世界會被部署成K8S deployment的型式以LoadBalancer service存在。
在一座cluster內可以有許多ingress controller對應到多組loadbalancer,每個ingress controller都必須在annotation有唯一的ingress-class的識別名稱。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
namespace: dev
spec:
rules:
- host: test.apps.example.com
http:
paths:
- backend:
serviceName: hello-service
servicePort: 80
說明:
往test.apps.example.com的流量,透過此ingress導向到k8s內dev namespace的SVC
hello-service:80可以透過「path-based」的方式加入多個routing endpoint,還可
以加入TLS設定
kubernetes ingress
是利用將規則加到路由流量,將k8s外部來源導至k8s內部應用服務的一種資源進入的行為
ingress controller
的使用可以動態的進行路由規則的更新HAProxy
成為ingress controllernginx
是其中一種常見的ingress controller------------------------------------------------------------------------
※ 參考來源: