所屬技術領域:
雲原生
| 名詞定義 |
Ambassador是一個基于envoy proxy建構的,kubernetes原生的開源微服務網關。Ambassador在建構之初就緻力于支援多個獨立的團隊,這些團隊需要為最終使用者快速釋出、監控和更新服務。Ambassador還可以用來處理Kubernetes ingress和負載均衡的能力。
| 技術特點 |
擴充性和可用性
Ambassador依靠Kubernetes實作擴充、高可用性和持久性。所有Ambassador配置都直接存儲在Kubernetes中(etcd);沒有資料庫。Ambassador被打包成一個單獨的容器,其中包含控制平面和一個Ambassador代理執行個體。預設情況下,Ambassador部署為kubernetes deployment,可以像其他kubernetes deployment一樣進行擴充和管理。
| 相關詞 |
Ambassador架構
如果是了解istio的同學,看到這張圖會有十分熟悉的感覺,沒錯,Ambassador也是具有控制平面和資料平面的。資料平面自然是老夥計envoy,Ambassador的控制平面負責監聽k8中的service資源的變化,并将配置下發envoy,實際的流量轉發通過envoy來完成。(感覺就是一個輕量級的istio)
具體流程如下:
- 服務所有者在kubernetes manifests中定義配置(通過annotation或者CRD)。
- 當manifest應用到叢集時,kubernetes api會将更改通知Ambassador。
- Ambassador解析更改并将配置轉換為一種中間語義。envoy的配置由該IR生成。
- 新的配置通過基于gRPC的聚合發現服務(ADS)API傳遞給envoy。
-
流量通過重新配置的envoy,而不會斷開任何連接配接。
Ambassador的不足
Ambassador和同類的網關産品類似,分為社群版及商業版,社群版提供了最基礎的路由、限速、TLS加密、跟蹤、認證(需要自己實作external third party authentication service)等能力,但是微服務網關中十分重要的OAuth2內建認證、RBAC、custom filter等功能都是需要在pro版中才能實作,這是比較遺憾的一點。尤其是custom filter,根據我們目前的經驗,一個能力完整、功能豐富的微服務網關,必然會引入custom filter。而custom filter也需要使用go進行編寫,對于不熟悉go的開發人員來說也會比較痛苦。
資料來源:
1、 阿裡雲大學-視訊網站
2、 簡書-
https://www.jianshu.com/p/d00af1d82300