亚马逊发布了 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 组件(图像来自 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
评论