所属技术领域:
云原生
| 名词定义 |
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