添加服务

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

目录

前提条件

  1. 当前命名空间已加入服务网格。请参考添加命名空间获取操作说明。
  2. 工作负载类型为 Deployment,且与 Service 存在一对一关联关系。

添加 ServiceMesh 服务

操作步骤

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

  2. 点击 添加服务

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

参数说明
Deployment当前命名空间下容器平台中的 Deployment,即运行该服务的计算组件。
Internal Routing与所选 Deployment 一对一 关联的内部路由信息,支持修改路由的协议和容器名称。
Internal Routing 需满足以下条件:
- 仅有一个内部路由与所选 Deployment 关联,且该路由仅关联该 Deployment。
- 内部路由类型为 NodePortClusterIP
- 服务仅支持 HTTP、HTTP2、gRPC、TCP 协议。请勿添加不支持的内部路由协议,否则可能导致服务调用异常。
Sidecar ConfigurationService MeshComposite 治理模式下,添加的服务会自动注入 Sidecar。即服务 Pod 启动时,Pod 内会启动一个 Sidecar 容器,用于接管服务的进出流量并对服务进行管理和治理。
  • 可通过资源配置控制 Sidecar 的资源分配。
  • 可配置 Sidecar 的日志级别。
  • 可根据需要配置流量直通。
Cross-cluster Service Discovery注意:该参数仅在当前服务网格为多集群服务网格(至少包含 2 个集群)时可见。

是否将服务暴露给网格管理的所有集群,允许网格下其他集群中的任意服务或网关直接访问当前服务。
跨集群服务发现开关为全局(网格范围)参数。修改网格中任一同名服务的开关状态,将影响所有集群中所有同名服务(即与所选 Deployment 关联的内部路由同名的服务)。
说明同名服务指由服务网格管理的不同集群中,命名空间名称相同的服务;成功添加的服务与所选 Deployment 关联的内部路由名称相同

开启开关后,服务成功添加后:
  • 若其他任何托管集群中不存在与所选 Deployment 关联的内部路由同名的服务,则会在对应集群同步创建同名内部路由以实现服务发现。创建同名内部路由时
    • 若集群中不存在与当前命名空间同名的命名空间,则内部路由创建失败,导致无法实现跨集群服务发现能力。
    • 若在同名命名空间中已存在与所选 Deployment 关联的内部路由同名的内部路由,则使用该已存在的内部路由。注意:若已存在的内部路由配置与当前所选 Deployment 关联的内部路由配置不一致,可能无法实现跨集群服务发现。
  • 网格中所有集群的所有同名服务的跨集群服务发现开关均被开启。
  1. 点击 添加

    服务添加成功后:

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

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

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

添加 OpenTelemetry 服务

操作步骤

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

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

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

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

    服务添加成功后:

    • OpenTelemetryComposite 治理模式下,默认会为服务(Java 8+)注入 OpenTelemetry Java Agent,使平台能够非侵入式地采集服务的遥测数据及 JVM 监控数据。

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

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