添加服务

本文将指导你创建 ServiceMesh 服务或 OpenTelemetry 服务。

前提条件

  1. 当前 namespace 已加入 service mesh。请参考 Add Namespaces 了解操作说明。
  2. 工作负载类型为 Deployment,并且与一个 Service 存在一对一关联。

添加 ServiceMesh 服务

步骤

  1. 在左侧导航栏中,单击 服务列表

  2. 单击 添加服务

  3. 按照以下说明配置相关参数。

参数描述
Deployment容器平台当前 namespace 下的 Deployment,即运行该服务的计算组件。
Internal Routing与所选 Deployment 一对一关联的内部路由信息,支持修改路由协议和容器名称。
Internal Routing 必须满足以下条件:
- 仅有一个内部路由与所选 Deployment 关联,且该路由仅绑定到该 Deployment。
- 内部路由类型为 主机端口虚拟 IP
- 服务仅支持 HTTP、HTTP2、gRPC、TCP 协议。请勿添加不支持的内部路由协议,否则可能导致服务调用错误。
Sidecar ConfigurationService MeshComposite 治理模式下,系统会自动为新增服务注入 Sidecar。这意味着当服务 Pod 启动时,Pod 内也会启动一个 Sidecar 容器,用于接管服务的南北向流量,并对服务进行管理和治理。
  • 你可以通过资源配置来控制 Sidecar 的资源配额。
  • 你可以配置 Sidecar 的日志级别。
  • 你可以按需配置流量透传。
Cross-cluster Service Discovery注意:仅当当前 service mesh 为 多集群 service mesh(至少 2 个集群)时,此参数才可见。

是否将服务暴露给 mesh 管理的所有集群,使 mesh 中其他集群里的任意服务或网关都可以直接访问当前服务。
Cross-cluster Service Discovery 开关是全局(整个 mesh 范围)的参数。对 mesh 中任意同名服务修改该开关状态,都会影响所有集群中同名的服务(与所选 Deployment 关联的内部路由同名的服务)。
说明同名服务 指的是 service mesh 管理的不同集群中、位于相同名称 namespace 下的服务;成功添加的服务与所选 Deployment 关联的内部路由 名称相同

当开关开启时,服务成功添加后:
  • 如果其他任一已管理集群中不存在与所选 Deployment 关联内部路由同名的服务,则会在对应集群中同步创建一个同名内部路由用于服务发现。在其他集群中创建同名内部路由时
    • 如果该集群中不存在与当前 namespace 同名的 namespace,则会导致内部路由创建失败,从而无法提供跨集群服务发现能力。
    • 如果某个 namespace(与当前 namespace 同名)下已经存在与所选 Deployment 关联内部路由同名的内部路由,则会使用已有的内部路由。注意:如果已有内部路由的配置详情与当前所选 Deployment 关联的内部路由不同,则可能无法实现跨集群服务发现。
  • 网格中所有集群里,所有同名服务的 Cross-cluster Service Discovery 开关都会被开启。
  1. 单击 添加

    服务成功添加后:

    • (在 Service Mesh 治理方式下)服务列表中将生成一个与 Service 同名的服务。

    • 平台会自动更新该服务 Deployment 的 Pod 模板参数,新增或更新 app: <service name> 标签。
      建议不要直接在 YAML 文件中修改这些标签。

    • 重启该服务的 Deployment。
      在重启过程中,只要该 Deployment 中至少有一个 Pod 处于 Running 状态,服务即为 Online;否则,服务即为 Offline

添加 OpenTelemetry 服务

步骤

  1. 在左侧导航栏中,单击 服务列表

  2. 单击 添加服务。在治理方式弹窗中,选择 OpenTelemetry

  3. 按照以下说明配置相关参数。

参数描述
Deployment容器平台当前 namespace 下部署的 Deployment,即运行该服务的计算组件。
Service NameOpenTelemetry 治理方式下,需要设置服务名称。
注意:当所选 Deployment 的 metadata.labels 中包含 asm.cpaas.io/msname: xxx 标签时,Service Name 默认取该标签值,且不可修改。
  1. 单击 添加

    服务成功添加后:

    • OpenTelemetryComposite 治理模式下,系统会默认给该服务(Java 8+)注入 OpenTelemetry Java Agent,使平台能够无侵入地采集服务遥测数据和 JVM 监控数据。

    • opentelemetry-operator 组件会拦截服务 Pod 的创建,并添加 Java Agent 配置。

    • 重启该服务的 Deployment。
      在重启过程中,只要该 Deployment 中至少有一个 Pod 处于 Running 状态,服务即为 Online;否则,服务即为 Offline