规范化服务
注意:Cloud Service Mesh 1.6.8 及更高版本会自动支持规范化服务。
本页介绍 Cloud Service Mesh 中的规范化服务。
什么是规范化服务?
Cloud Service Mesh 支持规范化服务,这是一种概念和架构模型,用于将生产工作负载表示为更便于观察和管理的单项服务。这些工作负载可以跨越多个集群、不同的后端平台以及不同的架构和配置。
对于 Kubernetes 用户:规范化服务与 Kubernetes“应用”概念和应用 CRD 大致类似。
对于无服务器用户:规范化服务与 App Engine 服务和 Cloud Run 服务概念非常类似。唯一的区别在于 Google 无服务器服务本身就是区域性服务,而规范化服务是一种全球/多区域抽象。
例如,以下场景都说明了您可以引用规范化服务的方式:
- 服务中断。
- 服务同时在本地云和公有云上运行。
- 部署服务的新修订版本。
- 服务 Foo 发送的流量过多,可能超出了我们的容量。
规范服务存在于单个网格中,这在 Cloud Service Mesh 中意味着它们在车队和 Google Cloud 项目中也是唯一的(所有这些都与网格一对一地对应)。
给定的工作负载只能属于一项规范化服务。
您可以通过以下定义规范化服务的工作负载组确定规范化服务的完整范围:
- 主机名和 IP 地址
- 网络
- 网络和安全政策
- 路由和负载均衡
- 虚拟机和容器映像
- 物理或虚拟基础架构
- 地理区域
- CI/CD 系统
- 源代码
- 遥测
- 服务等级目标和提醒
您可以在 GKE Enterprise 服务页面上查看显示每项服务运行详情的信息中心。
规范化服务要求和限制
每个规范化服务都位于单个 Kubernetes 或 Istio 命名空间内,并且不能跨命名空间边界。
您必须在规范化服务父命名空间中为其指定一个唯一名称。如需了解详情,请参阅定义规范化服务。
规范化服务可以存在于多个集群和区域中。虽然可以按集群和区域细分资源和遥测,但这些不是确定服务的范围或唯一性的因素。
因此,规范化服务的唯一身份取决于:
mesh id + namespace + canonical name.
修订版本
修订版本是指对服务的增量更改,您可以使用这些更改来区分和识别服务的不同“版本”或“发行版”。
您可以使用“规范化修订版本”为单个工作负载添加标签,以区分规范化服务的修订版本。此标签是您可以定义的任意字符串。在某些情况下,虽然系统可能会自动设置标签,但您或部署服务的 CI/CD 系统必须应用该标签。如需了解如何设置此标签,请参阅定义规范化服务。
请注意,多个修订版本可以同时为正式版。一次运行多个修订版本最常用于实现:
- 在一项服务的所有实例中逐步发布新二进制文件和/或新配置。在这种情况下,旧修订版本和新修订版本在过渡期间都是有效的。
- “A/B 测试”或“进行中的实验”,在此过程中向部分下游调用方公开了两个不同的服务版本,以测试更改的效果。