CNCF 新增安全、服务网格和服务跟踪项目:Docker Notary、Lyft Envoy 和 Uber Jaeger

  • Daniel Bryant
  • 薛命灯

2017 年 11 月 5 日

话题:DevOps语言 & 开发

Cloud Native Computing Foundation(CNCF)发布了新的托管项目:Docker Notary通过使用强壮的加密签名为容器镜像等数字内容提供了安全信任机制;纽约大学 Tandon 工程学院的The Update Framework(TUF)是一个开源的安全信任规范,而 Notary 是 TUF 的一个实现;Lyft Envoy服务网格是一种用在微服务通信方面的数据面板代理;Uber 的 Jaeger跟踪系统可以用于在分布式系统(如基于微服务架构的应用)中跟踪请求和数据的流向。

Docker 公司于 2015 年创立了 Notary 项目,它通过使用强壮的数字签名为数字内容提供了高级的安全信任机制。例如,可以用它为容器镜像和相关的元数据进行数字签名。除了可以确保软件的安全性,它还能保证软件在没有得到授权的情况下不会被修改。带有Docker Content Trust(使用了 Notary)的企业版 Docker就可以为数字内容建立清晰的安全策略。

TUF 是一组开源的规范,由 Justin Cappos 教授于 2009 年制订,后由 Cappos 教授领导的纽约大学 Tandon 工程学院安全系统实验室继续后续的开发工作。他们与 Notary 合作将该项目提交给了 CNCF,因为 Notary 是众多实现了 TUF 规范的项目中最为成熟的一个。Notary/TUF 提供了一个客户端和一对服务器应用程序,可以用来托管签名过的元数据,并执行有限的在线签名。

图 1. Notary/TUF 的签名和验证流程图

目前 Notary 的使用案例:Docker 使用 Notary 来实现 Docker Content Trust 和所有的子命令安全信任机制;CoreOS 的 Quay(一种容器注册表 SaaS)使用 Notary 来验证容器镜像和元数据;LinuxKit使用 Notary 来发行它的内核和系统包。Notary 不仅被用在容器发行上,还被用在生产环境当中,比如 Cloudflare 将它集成到他们的PAL 工具中,而Kolide用它来加固osquery工具的更新管理器。

上月,Envoy 成为 CNCF 的第 11 个托管项目。Envoy最初由Lyft开发,用于拆解他们的单体系统,是一个高性能的开源服务代理,旨在让网络通信对应用程序透明。软件工程师Matt Klein领导了这支开发团队,通过巧妙的设计为应用程序开发人员隐藏掉了复杂的网络通信细节。出于性能方面的考虑,他们选择使用 C++ 来开发 Envoy。它的进程外(out-of-process)架构让它可以被用在基于任何一门语言开发或使用任意一种运行时运行的应用程序。它支持 HTTP/2 或 gRPC、MongoDB 过滤和速率限定,等等。

图 2. Envoy 目前在 Lyft 的使用情况

Klein 在最近的一篇博文上写道,Lyft 的业务几乎都是以开源技术为支撑的。

如果没有这些开源技术,我们所钟爱的共乘服务可能就不会存在到今天。我们在 Envoy 上投入了大量的开发工作,我们也意识到很多组织在从单体迁移到微服务架构过程中也面临着同样的问题,我们希望能够为促进 Lyft 发展的广大社区回馈我们的力量。因此,我们决定将 Envoy 开源,并努力为其建立一个社区。

目前,Envoy 项目有 78 个贡献者,他们至少来自 10 个不同的公司,与一些来自 Lyft 和谷歌的主要开发者共同维护着这个项目。Klein 相信,“从技术方面来看,Envoy 完全有机会成为现代微服务架构的一个主要组件”。这种信念很快就成为了现实,Verizon 已经将其用在他们的Nelson自动化容器部署平台上,而Istio服务网格控制面板项目也很快在业界引起了人们的注意,初创公司 Datawire 正在基于 Envoy 开发开源工具Ambassador。Envoy 弥补了 CNCF 服务网格项目Linkerd(由 Buoyant 公司创立)的不足。

最近发布的托管项目还有Jaeger分布式跟踪器,最初由 Uber 创立,是 CNCF 的第 12 个托管项目。Jaeger 使用了与OpenTracing兼容的数据模型,提供了多种语言的增强包,如 Go 语言、Java、Node 和 Python。OpenTracing 是一个现有的 CNCF 托管项目,定义了一个与厂商无关的分布式跟踪开放标准。

图 3. Jaeger 的架构和 Jaeger 在 Uber 的使用情况

Uber 从 2015 年开始在公司内部部署 Jaeger,现在它已经被集成到数千个微服务当中,每秒钟可以记录数千个跟踪事件。Base CRM、Stagemonitor 和 Symantec 等公司也使用了跟踪系统。另外,Red Hat 等公司也是该项目的活跃贡献者。CNCF 技术委员会代表及项目赞助者 Bryan Cantrill 在最近的一篇博文中说,分布式跟踪系统为微服务系统提供了可观测性:

微服务架构的槽点之一是微服务有可能变成分布式单体:复杂而相互依赖的系统,一些不可预见的交互就会导致它们失效。为了解决这个问题,我们必须具备在服务间跟踪代码的能力。

关于 Jaeger 更多的信息可以在 Uber 的“解决分布式跟踪”这篇博文中看到,博文由 Yuri Shkuro 撰写,解释了 Jaeger 背后的历史和架构发展的来龙去脉。

CNCF 网站上提供了章程细节、当前的成员关系托管项目的清单。CNCF 网站上的公告区也包含了在这篇新闻里提到的托管项目的细节。

查看英文原文CNCF Adds Security, Service Mesh and Tracing Projects: Docker Notary, Lyft Envoy and Uber Jaeger

DevOps语言 & 开发