序
本系列将包含如下篇章:
- ASM-VM-PROXY的安裝
- 基于ASM的Workload Entry實踐
- 基于ASM的POD和VM互訪實踐-HTTP協定篇
- 基于ASM的POD和VM互訪實踐-GRPC協定篇
- 基于ASM的POD和VM混合流量轉移實踐
- 基于ASM的VM應用動态落遷實踐
- 基于ASM的POD和VM可觀測性實踐
ASM-VM-PROXY是虛拟機網格化的通道,第1篇将介紹ASM-VM-PROXY的安裝和使用。
WorkloadEntry是k8s叢集與ecs叢集通信的基礎,本系列的第2篇将通過兩個實踐示例,把WorkloadEntry的用途和作用展示清楚,為後續pod和vm的互訪、pod和vm混合場景中的流量轉移打好理論基礎。
接下來分别介紹基于http/grpc通信協定的POD和VM互訪。各種程式設計語言實作的服務普遍通過http協定提供服務和彼此通信,是以http篇的目的是希望展示ecs網格化過程中最經典的場景。grpc篇的目的有兩個,一個是單純地展示基于grpc通信協定服務的網格化方案,另一個是希望為ecs上使用了其他服務發現方式的遺留服務,提供一種更簡單的網格化思路——使用k8s作為唯一服務發現的模式,代替複雜且實作成本頗高的多服務發現模式。這種方案最大的好處是讓envoy不被修改,安靜且優雅地保持與社群發展一緻。
POD和VM混合的場景是非容器應用的網格化最常見的場景,解決了這種場景下的流量轉移,會讓使用者有信心将跑在ecs上的非容器應用進行網格化。雖然很多使用者意願上早就想網格化,但沒有一篇這樣的示例,會讓使用者多少有些不安。這是第4篇的初衷,這篇也是本系列的核心篇章。
VM應用動态落遷是指動态地将非容器服務加入和移出服務網格。第6篇的目的是展示如何對非容器應用進行流量控制、藍綠部署,甚至最終将全部非容器應用都容器化,且這些熱操作都是流量無損的。
第7篇可觀測性的目的是展示非容器應用如何像POD中的服務一樣,在網格化後具備全鍊路追蹤、監控等能力的。
希望有kubernetes容器化遷移訴求的同學,能夠通過本系列的各篇非容器應用網格化實踐,完成如下圖所示的遷移過程。

聲明
- 本系列前提是已經建立了一個ACK叢集、一個ECS執行個體、一個ASM執行個體,且VM與ACK叢集在同一個VPC和安全組内。可在本文基礎上參考相關文檔實作跨安全組和VPC的需求。出于穩定性和成本效益考慮,建議盡量在同一VPC和安全組内實作。
- 本系列示例沒有啟用DNS元件。可在本文基礎上使用DNS元件代替手動配置hosts。
- 本系列隻将配置了WorkloadEntry的VM視為網格化,手動配置ServiceEntry但沒有配置WorkloadEntry的VM不視為網格化。