Hashicorp发布了Consul 1.5.0版本,Consul 是他们的 Service Mesh 应用程序和键-值存储。该版本首次发布了 Consul 新路线图上的功能,包括:通过 Envoy 支持 L7 可观察性和负载均衡,集中式配置以及对可信第三方应用程序的 ACL 身份验证支持。
在此版本中,通过 Envoy 的集成,Consul Connect现在支持L7可观察性和负载均衡。 Connect 是在1.4版本添加到 Consul 中的,它利用自动 TLS 加密和基于身份的授权,提供安全的服务到服务通信。和任何 Service Mesh 一样,使用 Connect 时,所有进出服务的流量都通过以 Connect 作为控制平面的 side-car 代理进行流动。它允许 Connect 响应工作负载和网络的变更。这些代理构成一个数据平面,该数据平面提供一致的应用程序度量源,可以将其发送到时序数据库或其他应用程序监控软件。 Consul Connect 还允许配置分布式跟踪。现在,可以为第 4 层和第 7 层 HTTP 和 gRPC 配置度量配置和分布式跟踪。
1.5 版本还包含了包括过期时间、角色及服务标识映射在内的 ACL 增强功能。这些改进使服务能够使用第三方身份获取有效的 ACL 令牌。根据Consul 团队的说法,“用户设置时的复杂性主要体现在,如何为具有正确访问权限的服务创建和分发有效的 ACL 令牌,以便在服务目录中注册自己”。通过引入 ACL 身份认证方法,应用程序可以使用受信的第三方自动获取具有正确权限的 ACL 令牌。此版本包含首个认证方法, 它使用 Kubernetes 服务账户来处理在 Kubernetes 上运行的服务。
此版本还旨在解决配置与应用程序部署的耦合问题。使用现有模型,配置由本地 Consul 代理管理,这意味着配置更改需要重新部署应用程序。通过这个版本,现在可以在一个集中的位置管理配置,让代理在 Consul 服务器中监听配置更改。更新配置后,引用该配置的所有代理将自动重新加载其设置,而无需重新部署。
图表描述了集中式 Consul 服务的工作流程(来源:HashiCorp)
例如,要添加集中配置开启用于度量的 StatsD 收集器,可以添加以下内容:
假设这是在一个名为 policy.hcl 的文件中,可以使用以下命令将其写入 Consul 服务器:consul config write proxy.hcl。 该写命令还支持-cas 选项(比较和转换),以防止覆盖其他修改。
类型(kind)支持两个值:proxy-defaults 和 service-defaults。 proxy-defaults 允许为跨 Connect 代理配置的所有服务,配置全局默认值。目前仅支持一个全局条目。service-defaults 控制服务的默认全局值,例如其协议。
Kubernetes 集成也将更新,以支持上述新功能。这包括 L7 可观察性和新的 ACL 认证方法。这些更新将在 Consul 1.5.0 发布后不久发布。有关此领域的完整变更列表,请查看consul-k8s和consul-helm的变更日志。
此次发布的版本还包括跨多个 ConsulHTTP API 的过滤支持。它允许添加查询参数,以便使用 filter 参数将过滤表达式传递到 API 调用中:
这些过滤器表达式以纯文本格式编写,并支持布尔逻辑、匹配运算符和括号。
根据 Consul 的路线图,Consul 的未来版本应该会包括基于 HTTP 路径的路由和流量转移特性。通过基于 HTTP 路径的路由,Consul 将能够基于 HTTP 路径或 HTTP 头将流量路由到不同的上游服务。这通过第 7 层路由扩展到对当前的第 4 层网络支持。流量转移特性将允许一定比例的流量路由到服务的特定实例或完全不同的服务。这允许通过仅更新服务的一部分并将一小部分流量定向到更新的实例中,从而对新版本的软件进行金丝雀测试。
有关此版本的更多详细信息及其他改进,请查看 HashiCorp 博客上的官方公告。 变更日志提供了该版本的完整变更列表。Consul 可以从 HashiCorp 网站免费下载。
查看英文原文:HashiCorp Releases Consul 1.5.0 With Layer 7 Observability and Centralized Configuration
评论 1 条评论