添加服务

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

前提条件

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

添加 ServiceMesh 服务

步骤

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

  2. 点击 添加服务

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

参数描述
Deployment当前命名空间下在容器平台上的 Deployment,它是运行服务的计算组件。
内部路由与所选 Deployment 一对一关联的内部路由信息,支持对路由的协议和容器名称进行修改。
内部路由 需满足以下条件:
- 仅与所选 Deployment 关联的一个内部路由,该路由专门链接到该 Deployment。
- 内部路由类型为 NodePortClusterIP
- 该服务仅支持 HTTP、HTTP2、gRPC 和 TCP 协议。请勿添加不受支持的内部路由协议,因为这可能导致服务调用错误。
边车配置服务网格组合 治理模式下,边车将自动注入到添加的服务中。这意味着当服务 Pod 启动时,边车容器也将启动,以接管服务的进出流量并管理和治理服务。
  • 您可以通过资源配置来控制边车的资源分配。
  • 您可以配置边车的日志级别。
  • 您可以根据需要配置流量透传。
跨集群服务发现注意:此参数仅在当前服务网格为 多集群服务网格(至少 2 个集群)时可见。

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

当开关开启时,在服务成功添加后:
  • 如果在任何其他管理集群中,没有与所选 Deployment 关联的内部路由名称匹配的服务,则将在相应集群中同步创建具有相同名称的内部路由以供服务发现。在其他集群中创建同名内部路由时
    • 如果在该集群中没有与当前命名空间同名的命名空间,这将导致内部路由创建失败,从而无法提供跨集群服务发现能力。
    • 如果在与当前命名空间同名的命名空间中存在与所选 Deployment 关联的内部路由同名的现有内部路由,则将使用该现有内部路由。注意:如果现有内部路由的配置细节与当前所选 Deployment 关联的内部路由不同,则可能无法实现跨集群服务发现。
  • 所有跨集群的同名服务的 跨集群服务发现 开关在网格中将开启。
  1. 点击 添加

    服务成功添加后:

    • (在 服务网格 治理方法下)服务列表中将生成与 服务 同名的服务。

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

    • 重启服务的 Deployment。
      在重启过程中,只要 Deployment 的至少一个 Pod 处于 运行中 状态,服务就是 在线 的;否则,服务就是 离线 的。

添加 OpenTelemetry 服务

步骤

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

  2. 点击 添加服务。在治理方法弹出框中选择 OpenTelemetry

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

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

    服务成功添加后:

    • OpenTelemetry组合 治理模式下,服务(Java 8 及以上)将默认注入 OpenTelemetry Java Agent,使平台能够非侵入性地收集服务遥测数据和 JVM 监控数据。

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

    • 重启服务的 Deployment。
      在重启过程中,只要 Deployment 的至少一个 Pod 处于 运行中 状态,服务就是 在线 的;否则,服务就是 离线 的。