Istio新架構揭秘:環境化Mesh
自問世以來,Istio因其使用Sidecar(可編程代理與應用容器一同部署)而備受認可。這種架構選擇使Istio用戶能夠享受其好處,而無需對其應用進行 drast 改變。這些可編程代理,與應用容器緊密部署在一起,因其能夠引入Istio的諸多好處而備受贊譽,同時又無需對應用進行重大更改。但總有改進的空間,現在Istio引入了環境化Mesh,這是其架構的重大演進。
Sidecar模型:優勢和限制
傳統Istio模型:Istio在工作負載的Pod中部署Envoy代理作為Sidecar。
Sidecar的優勢:無需重構應用即可享受Istio的功能。
Sidecar的限制:
- 侵入性: Sidecar需要集成到應用中,影響其Kubernetes Pod規格并重定向Pod流量。這經常導致需要重啟應用Pod。
- 資源利用不足: 由于每個Sidecar代理專門分配給其配對的工作負載,資源分配可能導致集群效率低下。
- 流量中斷: Istio的Sidecar可能對一些應用的流量捕獲和HTTP處理造成問題。
環境化Mesh:克服限制
環境化Mesh采用分層方法,分割了Istio的功能:
- 基礎層: 一個安全的覆蓋層,負責路由和確保流量的零信任安全。
- 上層: 當用戶需要訪問Istio的廣泛功能時,可以啟用L7處理,而無需改變應用Pod。
這種方法的優勢包括:
- 允許逐步采用Istio:從無Mesh -> 安全覆蓋層 -> 完整的L7處理。
- 在不同環境模式或帶有Sidecar的工作負載之間實現兼容性。
環境化Mesh的工作原理
- 在Kubernetes集群的每個節點上都有一個共享代理(ztunnel),負責Mesh內的安全連接。
- Ztunnel僅處理L4流量,將Istio的數據平面與應用關注點分離。
- 當命名空間激活環境化模式時,將建立一個零信任覆蓋層(具有mTLS、遙測、認證和L4授權)。
- 對于L7功能,命名空間可以部署一個或多個基于Envoy的Waypoint代理。這些代理可以根據實時流量需求進行自動縮放。
安裝環境化Mesh
(1) 下載Istio的最新版本,其中包含對環境化Mesh的alpha支持。
(2) 安裝Kubernetes網關CRDs,在大多數Kubernetes集群上默認未安裝
kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
{ kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v0.8.0" | kubectl apply -f -; }
(3) ambient配置文件旨在幫助您開始使用環境化Mesh。使用上面下載的istioctl命令,在您的Kubernetes集群上安裝帶有ambient配置文件的Istio:
istioctl install --set profile=ambient --set "components.ingressGateways[0].enabled=true" --set "components.ingressGateways[0].name=istio-ingressgateway" --skip-confirmation
- 安裝了Istio核心
- 安裝了Istiod
- 安裝了CNI
- 安裝了入口網關
- 安裝了Ztunnel
- 安裝完成
(4) 使用以下命令驗證已安裝的組件:
kubectl get pods -n istio-system
名稱 就緒 狀態 重啟次數 年齡
istio-cni-node-n9tcd 1/1 運行中 0 57秒
istio-ingressgateway-5b79b5bb88-897lp 1/1 運行中 0 57秒
istiod-69d4d646cd-26cth 1/1 運行中 0 67秒
ztunnel-lr7lz 1/1 運行中 0 69秒
kubectl get daemonset -n istio-system
名稱 預期 當前 就緒 最新 可用 節點選擇器 年齡
istio-cni-node 1 1 1 1 1 kubernetes.io/os=linux 70秒
ztunnel 1 1 1 1 1 kubernetes.io/os=linux 82秒
安全考慮
環境化Mesh將安全性放在首位:
Ztunnel:盡管是一個共享資源,但ztunnel將其密鑰限制在其節點上的工作負載上,降低風險。
- Waypoint代理: 這些共享資源被限制在一個服務賬戶中,減少了來自受損代理的潛在傷害。
- Envoy的作用: 憑借其強大、經過考驗的特性,Envoy被認為比它配對的許多應用更安全。
性能和資源影響
- 資源效率: 環境化Mesh的ztunnel減少了每個工作負載的預留資源。Waypoint代理的動態擴展也確保了資源優化。
- 延遲問題: 雖然有一種看法認為Waypoint代理可能引入延遲,但Istio認為這能夠通過與傳統Sidecar模型相比減少的L7處理來平衡。
Sidecar的未來
環境化Mesh的推出并不意味著Sidecar的結束。它們仍然適用于需要專用數據平面資源的情景,比如合規性或性能調整。Istio將繼續支持Sidecar,確保它們與環境化Mesh和諧共存。
總之,環境化Mesh代表了服務網格架構邁出的一大步,解決了Sidecar模型的一些挑戰,并為用戶提供了更多的靈活性和效率。