Flomesh Ingress 的 SSL 透傳
FSM[1] 是 Flomesh 流量管理體系的一個開源組件,用於 Kubernetes 南北向的流量管理。FSM 以可編程代理 Pipy 爲核心,提供了 Ingress 管理器、Gateway API* 實現、負載均衡器以及跨集羣的服務註冊發現等功能。
在文章《使用 Flomesh Ingress 管理 osm-edge 服務網格入口流量》中,我們使用 Flomesh Ingress 來服務網格的入口流量管理。實際上 Flomesh Ingress 的功能還有很多,我們後續會一一介紹。
今天就爲大家介紹 Flomesh Ingress 的 SSL 透傳功能。
什麼是 SSL 透傳
SSL(Secure Socket Layer)也被稱作 TLS(Transport Layer Security),其通過加密的方式來保護客戶端與服務端的安全通信。
SSL 透傳(SSL Passthrough)是代理服務器處理 SSL 請求的兩種方式之一(另一種是 SSL offload)。在 SSL 透傳模式下,代理不會解密來自客戶端的 SSL 請求,而是將其傳遞到上游服務器進行解密,這就意味着數據在通過代理的時候保持加密的狀態,以此來保證重要和敏感數據的安全性。
SSL 透傳的優點
-
• 由於數據不在代理上解密,而是以加密的方式轉發到上游服務器,數據可以免受網絡攻擊。
-
• 加密數據未經解密到達上游服務,確保了數據的機密性。
-
• 這也是代理配置 SSL 的最簡單方法。
SSL 透傳的缺點
-
• 流量中可能會惡意代碼,這些代碼將直接到達後端服務器。
-
• 在 SSL 透傳過程中,無法切換服務器。
-
• 無法做 7 層流量處理。
接下來我們看下,如何使用 FMS Ingress 的 SSL 透傳。
Demo
環境準備
使用單節點的 K3s 集羣,並禁用 traefik。
export INSTALL_K3S_VERSION=v1.23.8+k3s1
curl -sfL https://get.k3s.io | sh -s - --disable traefik --write-kubeconfig-mode 644 --write-kubeconfig ~/.kube/config
安裝 FSM
通過 Helm 安裝 FSM。在安裝時通過參數 fsm.ingress.tls=true
開啓 TLS,並使用 fsm.ingress.sslPassthrough=true
開啓 SSL 透傳。
helm repo add fsm https://charts.flomesh.io
helm install --namespace flomesh --create-namespace --set fsm.ingress.sslPassthrough=true --set fsm.ingress.tls=true fsm fsm/fsm
確認相應組件 pod 啓動並正常運行。
kubectl get po -n flomesh
NAME READY STATUS RESTARTS AGE
fsm-repo-5f48d67d5f-5b6sx 1/1 Running 0 5m11s
fsm-manager-5b7b5d45c7-bwh74 1/1 Running 0 5m11s
fsm-bootstrap-6b4bb46bd5-7sx2c 1/1 Running 0 5m11s
fsm-ingress-pipy-89b98f48c-cjtrh 1/1 Running 0 5m11s
fsm-cluster-connector-local-6769c796bc-7vsdl 1/1 Running 0 2m35s
獲取 Ingress 的 IP 和 端口。
export ingress_host="$(kubectl -n flomesh get service fsm-ingress-pipy-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"
export ingress_port="$(kubectl -n flomesh get service fsm-ingress-pipy-controller -o jsonpath='{.spec.ports[?(@.)].port}')"
測試
爲簡單起見,這裏我們不部署上游服務,而是直接將 https://httpbin.org
作爲上游,通過 curl
的 revolve
參數,將其解析到上面拿到的 ingress 地址。如果 ingress 的端口不是 433
,可以使用 connect-to
參數 --connect-to httpbin.org:443:$ingress_host:$ingress_port
。
curl https://httpbin.org/get -i --resolve httpbin.org:443:$ingress_host
HTTP/2 200
date: Thu, 25 Aug 2022 10:38:07 GMT
content-type: application/json
content-length: 255
server: gunicorn/19.9.0
access-control-allow-origin: *
access-control-allow-credentials: true
{
"args": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/7.79.1",
"X-Amzn-Trace-Id": "Root=1-6307510f-41d9e18227b758760ed9289f"
},
"origin": "16.163.102.75",
"url": "https://httpbin.org/get"
}
總結
SSL 透傳有優點也有缺點,需要根據使用場景來靈活選擇是使用 SSL 透傳還是 SSL 卸載。
引用鏈接
[1]
FSM: https://github.com/flomesh-io/fsm
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/w8SVxU5xG85gWint0KYiUA