天天看點

雲原生必備知識:Ambassador

所屬技術領域:

雲原生

| 名詞定義 |

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)

具體流程如下:

  1. 服務所有者在kubernetes manifests中定義配置(通過annotation或者CRD)。
  2. 當manifest應用到叢集時,kubernetes api會将更改通知Ambassador。
  3. Ambassador解析更改并将配置轉換為一種中間語義。envoy的配置由該IR生成。
  4. 新的配置通過基于gRPC的聚合發現服務(ADS)API傳遞給envoy。
  5. 流量通過重新配置的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