@lsmn
2018-07-26T17:49:59.000000Z
字数 2297
阅读 2208
HashiCorp
Consul
服务网格
HashiCorp发布了Consul 1.2.1,这是其高可用、分布式服务发现和键-值存储的最新版本,该版本还包含Consul Connect的公开测试版。Consul Connect使用Mutual TLS提供服务到服务的连接授权和加密,并且能够“自动把现有的任何Consul集群转换成服务网格解决方案”。
HashiCorp发布了Consul 1.2.1,这是其高可用、分布式服务发现和键-值存储的最新版本,该版本还包含Consul Connect的公开测试版。Consul Connect使用Mutual TLS提供服务到服务的连接授权和加密,并且能够“自动把现有的任何Consul集群转换成服务网格解决方案”。对于所有必要的子系统,Connect仅需要一个二进制文件。
目前,Connect的应用场景主要是部署服务到服务加密和基于身份授权的最佳实践。Connect并不像工程师通常可能会期望的那样,提供Linkerd、Cilium、Envoy/Istio等服务网格中的所有特性,如流量转移、速率限制、超时和重试,回路断线和可观测性。不过,在HashiCorp开发大使Nic Jackson的私人信函中,他写道:
Connect被构建为可扩展的,以便它可以和现有的代理集成,如Envoy,提供所有期望的特性。在Connect正式发布时还会提供原生Kubernetes集成。
服务或应用程序可以使用Sidecar代理自动为入站和出站连接创建TLS连接,而不必知道Connect的存在。在性能和安全要求较高的环境中,应用程序还可以原生集成Connect。此外,solo.io团队已经发布了“Gloo Connect”,这是Envoy Proxy和Consul Connect的集成原型。
Connect设计得非常易于使用,只需要在通常的Consul配置中额外添加一个选项就可以启用;在服务注册配置中额外增加一行——“connect:”(及相关元数据)——就可以自动使现有的任何应用程序接收基于Connect的连接。Connect使用标准的TLS over TCP/IP,这让它可以工作在任何网络配置下,只要底层操作系统可以访问目标服务指定的IP就可以。
Connect的核心基于Mutual TLS。Connect为每个服务提供了一个编码成TLS证书的标识。根据Connect的文档,这个证书用于和其他服务之间建立连接或者接收来自其他服务的连接,TLS证书中标识的编码符合SPIFFE X.509 Identity Document。证书轮换是自动完成的,不会导致停机。为了生成和分发证书,Consul内置一个没有其他依赖的CA,而且还提供了对Vault的内置支持。PKI系统被设计成了可插拔的。
在服务到服务的授权方面,Connect没有使用IP地址访问规则进行基于主机的访问授权,而是使用已注册服务的标识借助“Intention”来执行访问控制。使用逻辑上的服务标识名称而不是IP地址和端口可以简化访问控制推断。规则是规模无关的——不管是一个“Web服务器”服务,还是数以百计的服务——使用名称还便于服务的迁移。例如,使用容器编排框架如Kubernetes、Nomad或AWS ECS在主机之间重新调度服务时,服务名称可以提供位置透明。
不管底层网络如何,Intention执行都是可以完成的。因此,Connect适用于物理网络、云网络、软件定义网络,可以跨云。对于HashiCorp的企业客户,还可以把Intention和策略即代码框架Sentinel搭配使用,提供多级安全策略或额外的粒度。
Connect目前只能用于单个Consul数据中心里服务到服务的连接;Connect可以在多个Consul数据中心里启用,但只有同一个数据中心的服务可以建立基于Connect的连接。此外,CA配置和Intention都是相应数据中心本地的;它们不会跨数据中心复制。Connect多数据中心支持正在开发之中,将于2018年底作为Consul企业版的一项特性发布。该特性将为Intention复制、数据中心Intention约束、CA状态复制、多数据中心证书轮换等提供便利。
该文档指出,Connect所需的所有API通常都是在毫秒内响应,而且“只会对已有的服务带来很小的开销”。这是因为,与Connect相关的API全都通过回环接口放在了本地Consul代理中。Consul代理会在本地缓存大部分与Connect相关的数据,并在后台启动服务器“阻塞查询(blocking queries)”,在后台更新缓存。这使得大部分API调用,如检索证书或授权连接,可以使用内存内数据,实现快速响应。
文档的“代理缓存与性能”部分指出,启动Connect后,工程师很可能会看到本地Consul代理的内存使用增加。总内存是由与接收Connect连接的代理中注册的服务相关的Intention数量决定。
要了解更多有关Consul 1.2和Consul Connect发布的信息,请查看HashiCorp的博客。HashiCorp创始人兼首席技术官Armon Dadgar还在YouTube上使用白板概要地介绍了Consul Connect,特性主页上也提供了更多的信息。Consul 1.2下载,请点击这里。
查看英文原文:HashiCorp Release Consul 1.2 with Consul Connect Service Mesh Solution