定义规范化服务

注意:Anthos Service Mesh 1.6.8 及更高版本会自动支持规范化服务。

规范服务是一组实现相同服务和 API 的工作负载。对于受支持的工作负载类型,Anthos Service Mesh 会根据 Kubernetes API 服务器中的现有信息自动创建规范服务资源。本页面介绍哪些标签自动定义规范化服务,以及如何手动调整服务的边界。

目前支持的工作负载实例类型包括:

  • Kubernetes Pod(包括通过 Kubernetes Deployment、Kube Run Service 等)
  • 虚拟机实例

规范化服务的定义

Anthos Service Mesh 通过读取与每个工作负载实例关联的 Kubernetes 配置资源的 service.istio.io/canonical-name 标签来确定规范化服务成员资格:

  • 对于 Pod,标签位于 Kubernetes Pod 资源中
  • 对于虚拟机,标签位于 Istio WorkloadEntry 资源中

规范化服务与其关联的工作负载实例具有相同的 Kubernetes 命名空间,并且不能跨越命名空间。

自动添加标签规则

Anthos Service Mesh 会将您的工作负载自动分组到规范化服务中,您无需执行任何操作。

您只需执行以下操作即可:

  • 调整用户/读取者清晰度的标签
  • 替换默认行为。

在 Kubernetes Pod 中自动添加标签

规范化服务侧重于 Kubernetes app.kubernetes.io/nameapp 标签。请注意,前一个标签优先。

如果您在工作负载上使用这两个标签中的任意一个,则无需执行进一步操作。

在虚拟机中自动添加标签

要在您的虚拟机上构建规范化服务,您必须在 Kubernetes API 服务器中配置 WorkloadEntry 资源,从而将虚拟机添加到服务网格。

手动添加标签

如需手动应用或替换规范化服务标签,请将 service.istio.io/canonical-name 标签应用到 Pod 或 WorkloadEntry 配置。

在 Kubernetes Pod 中手动添加标签

要使用 Deployment 一次部署多个 Pod,请在 PodTemplateSpec 上设置 service.istio.io/canonical-name 标签:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
  namespace: my-namespace
spec:
  replicas: 3
  template:
    metadata:
      labels:
        service.istio.io/canonical-name: my-service
    spec:
      containers:
        ...

如需为单个 Pod 的规范化服务添加标签,请将 service.istio.io/canonical-name 标签添加到 Pod 配置的 labels 部分:

apiVersion: v1
kind: Pod
metadata:
  name: my-test-pod
  namespace: my-namespace
  labels:
    service.istio.io/canonical-name: my-service
spec:
  ...

手动为虚拟机添加标签

如需为单个虚拟机/WorkloadEntry 的规范化服务添加标签,请将 service.istio.io/canonical-name 标签添加到 WorkloadEntry 配置的“标签”部分:

apiVersion: networking.istio.io/v1alpha3
kind: WorkloadEntry
metadata:
  name: my-vm-123
  namespace: my-namespace
  labels:
    service.istio.io/canonical-name: my-service
spec:
  ...

后续步骤