AWS App Mesh:用于Envoy的服务网格控制平面

亚马逊发布了AWS App Mesh,这是一种服务网络,允许开发人员标准化微服务的通信方式、实现微服务之间的通信规则,并将指标、日志和跟踪信息直接捕获到AWS服务和第三方工具中。App Mesh实际上是由AWS托管的Envoy控制平面,Envoy是一个开源的服务网格数据平面代理。

正文

亚马逊发布了AWS App Mesh,这是一种服务网络,允许开发人员标准化微服务的通信方式、实现微服务之间的通信规则,并将指标、日志和跟踪信息直接捕获到AWS服务和第三方工具中。App Mesh实际上是由AWS托管的Envoy控制平面,Envoy是一个开源的服务网格数据平面代理。App Mesh目前可用于Amazon Elastic Container Service(ECS)、Amazon Elastic Container Service for Kubernetes(EKS)和EC2上的Kubernetes。

AWS App Mesh提供了一组API(通过CLI和SDK暴露出来),支持基于服务版本的应用程序间细粒度流量路由规范,例如,支持金丝雀发布或A/B部署。App Mesh还可以对服务客户端进行访问控制和配额限制。利用Envoy提供的功能,可以将流量镜像到备用环境,以便进行进一步的故障排除,并且可以注入故障进行混沌实验。不过,部分功能计划在GA版本中发布,目前尚未在App Mesh中实现。

要在ECS上部署App Mesh,必须将Envoy代理容器镜像添加到相关的任务定义中。对于Kubernetes来说,必须将Enovy代理镜像添加到Kubernetes PodSpec中。Envoy边车容器使得App Mesh能够拦截和管理来自相关服务的所有通信,并将指标、日志和跟踪信息导到Envoy引导程序配置指定的端点。

AWS App Mesh由以下组件组成:

  • 服务网格:“服务网格”实例是服务间网络流量的逻辑边界。
  • 虚拟节点:虚拟节点是指向特定“任务组”的逻辑指针,例如ECS服务或Kubernetes部署。
  • Envoy代理和路由器管理器:Envoy代理及其路由器管理器容器镜像将微服务任务组配置为使用为虚拟路由器和虚拟节点配置的App Mesh服务网状流量规则。
  • 虚拟路由器:虚拟路由器处理服务网格中一个或多个服务的流量。
  • 路由:路由与虚拟路由器相关联,它将与服务名称前缀匹配的流量定向到一个或多个虚拟节点。

AWS App Mesh:用于Envoy的服务网格控制平面_第1张图片

AWS App Mesh组件(图像来自App Mesh文档)

App Mesh目前主要用于服务到服务“东西向”流量控制和观察。虽然后GA版本路线图中列出了“将App Mesh用于摄入路由”这一功能,但App Mesh文档目前建议使用AWS Elastic Load Balancing处理所有“南北”网络流量和来自不在组织信任边界内的客户端的流量。在App Mesh生态系统之外,基于Envoy的提供摄入支持的其他实现也取得了一定的进展,其中包括Datawire Ambassador、Solo Gloo和Istio Gateway等开源实现。

AWS表示,他们已经在开发一种服务网格,其中包括遵循“AWS最佳实践”的控制平面和API。目前,App Mesh发布了为Envoy而构建的1.8.0版本,其中包含SigV4的扩展,可以使用AWS认证系统正确验证Envoy(这项变更计划被合并到Envoy上游)。具体来说,App Mesh是可插拔的,并将在未来支持定制的Envoy镜像和Istio Mixer,以及允许AWS增加对其他计算机服务的支持,并且成为可扩展、健壮、经济且高效的多租户控制平面。

社区对该发布公告的反应不一。包括Shriram Rajagopalan(VMware工程师和Istio贡献者)在内的一些人表示,示例中的一些内容似乎是在未经确认的情况下从Istio项目中直接拿走的。其他人(如Christian Posta)指出,App Mesh“是AWS的,并不是开源的”。目前,App Mesh示例存储库中记录了一个叫作“Opensource App Mesh Envoy Management Service(EMS)”的后GA版本功能,尽管它并不包含任何有关开源版本的信息。

一些Twitter用户(包括行业杰出人物Kelsey Hightower在内)质问为什么AWS没有为现有的Istio项目做出贡献,并且认为“有了可靠的功能和干净的API,要开始为Envoy开发一些东西就会更容易,然后在拥有了一个最小可行产品后就可以发布了”。 AWS开源技术专家Arun Gupta似乎支持这种分析,并表示“Istio与Kubernetes紧密耦合,我们需要能够扩展工作负载,不仅仅是容器,而是跨AWS的任何工作负载”。云原生计算基金会首席技术官兼首席运营官Chris Aniszczyk提出了一个有趣的观点:“还有一个微妙的观点,即Envoy是中立的,而Istio目前还不是”。

Lyft软件工程师、Envoy Proxy作者Matt Klein在Twitter分享了一系列有关App Mesh发布的有趣观点。关于Envoy项目的主要目标:

Envoy社区对实现我们的目标一直很自信,即创建功能丰富、可扩展且可配置(版本化的类型API)的数据平面,而不是为了创造一种固执己见的最终用户体验。

他认为,Envoy提供的“云原生数据平面”以及Kubernetes、Nomad或Mesos等调度程序构成了“新的云原生操作系统”。他说,这是一个可以在其上“建立、创新和货币化”的平台。

基础云原生平台/操作系统将完全开放,并由主要云和[P/C/F] aaS提供商提供。实际资金和自主创新将成为最重要的服务:安全/监控/审计/工作流/UI/等。

并且所有主要云供应商、PaaS供应商等都将Envoy代理作为默认的云原生数据平面,这意味着我们现在可以开始构建,而不必担心碎片化问题。它太强大了。

Klein还确认了HashiCorp和Datadog正在开发App Mesh集成,进一步说明了供应商正在提供更高级别的价值。

AWS App Mesh为北弗吉尼亚州、俄亥俄州、俄勒冈州和爱尔兰AWS区域提供各了公共预览版。使用AWS App Mesh不收取额外费用,客户只需要为与服务容器一起运行的App Mesh代理所使用的基础AWS资源支付费用。

GA版本计划于2019年发布。完整的GA版本路线图和后GA版本路线图可以在AWS APP Mesh示例GitHub存储库中找到。有关App Mesh的其他信息可以在“入门”页面上找到。

查看英文原文:https://www.infoq.com/news/2019/01/aws-app-mesh

你可能感兴趣的:(AWS App Mesh:用于Envoy的服务网格控制平面)