注意:说明:
注意:tencent-opentelemetry-operator 支持 Kubernetes 1.19及以上版本。
一、通过 APM 控制台一键安装(推荐)
由于配置项的填写比较复杂,推荐你使用 APM 控制台的一键安装 tencent-opentelemetry-operator 功能,以简化安装步骤。
1. 登录 应用性能监控 控制台。
2. 在左侧菜单栏中选择应用列表,单击接入应用。
3. 选择需要接入的语言,并指定 TKE 环境自动接入的上报方式。
4. 单击一键安装 Operator。
5. 在弹出对话框中,选择对应的上报地域、默认业务系统、TKE 所在地域、TKE 集群,单击安装后即可完成安装。
注意:说明:
二、通过 TKE 应用市场安装
1. 登录 容器服务 控制台。
2. 在左侧菜单栏中选择运维中心 > 应用市场,搜索 tencent-opentelemetry-operator 并单击进入。
3. 单击创建应用,选择需要安装的 TKE 集群,参考 配置项说明,填入必要参数,即可完成安装。
注意:说明:
三、通用 K8s 集群安装
tencent-opentelemetry-operator 支持通用 K8s 集群以及混合云场景。对于部署在线下 IDC 以及其他云平台的 K8s 集群,只要 K8s 的版本符合要求,并且 APM 服务端之间的网络可达,就可以通过 Operator 模式实现快速接入。
1. 安装 kubectl 和 Helm CLI,安装方式请参考 安装 kubectl 和 安装 Helm CLI。请确保使用3.6或以上版本的 Helm CLI。
2. 下载 Chart 包 和配置文件 values.yaml。你也可以使用 wget 命令下载,对应的地址如下:
·https://operator-1258344699.cos.ap-guangzhou.myqcloud.com/tencent-opentelemetry-operator-internet.tgz
·https://operator-1258344699.cos.ap-guangzhou.myqcloud.com/values.yaml
3. 参考 配置项说明,在 values.yaml 中填入必要的字段。
注意:说明:
4. 使用本地文件安装 Operator,其中 my-release 为 Chart 名,可以自定义。–values 代表 values.yaml 的文件路径。
helm install my-release /path/to/your/chart.tgz –values /path/to/your/values.yaml
注意:说明:
注意:在通用 K8s 集群安装 tencent-opentelemetry-operator 的时候,需要有公网访问权限,否则无法拉取 Operator 镜像。
四、配置项说明
tencent-opentelemetry-operator 通过 Helm 部署安装,所有的配置项都集中于 values.yaml。请注意 YAML 文件中的参数存在层级关系,请参考如下 YAML 片段:
env: TKE_CLUSTER_ID: "cls-ky8nmlra" TKE_REGION: "ap-guangzhou" ENDPOINT: "http://pl.ap-guangzhou.apm.tencentcs.com:4317" APM_TOKEN: "apmdemotoken"
五、必填字段
| 参数 | 描述 |
| env.TKE_CLUSTER_ID | TKE 集群 ID。对于非 TKE 集群,请设置为"N/A"。 |
| env.TKE_REGION | TKE 集群所在地域,例如 ap-guangzhou,详情请参考 CVM 地域和可用区 的取值。对于非 TKE 集群,请设置为"N/A"。 |
| env.ENDPOINT | APM 接入点。每个集群只能使用唯一的 APM 接入点,请从业务系统获取接入点。如果使用公网接入点,需要同时设置 env.FROM_INTERNET: "true" |
| env.APM_TOKEN | 集群默认的 APM Token。APM token 代表了需要接入的业务系统,请从业务系统中获取 token。可以在工作负载中指定其他业务系统的 Token,以覆盖集群默认的 Token。 |
六、选填字段
| 参数 | 描述 |
| env.JAVA_INSTR_VERSION | Java 探针版本号,可以设置为latest(默认)或具体的版本号,非必要情况下不推荐设置此字段。 |
| env.PYTHON_INSTR_VERSION | Python 探针版本号,可以设置为latest(默认)或具体的版本号,非必要情况下不推荐设置此字段。 |
| env.NODEJS_INSTR_VERSION | Node.js 探针版本号,可以设置为latest(默认)或具体的版本号,非必要情况下不推荐设置此字段。 |
| env.DOTNET_INSTR_VERSION | .NET 探针版本号,可以设置为latest(默认)或具体的版本号,非必要情况下不推荐设置此字段。 |
| env.INTL_SITE | 在国际站需要设置为 "true"。 |
| env.FROM_INTERNET | 如果从公网接入,请设置为"true",(同时需要将 env.ENDPOINT 设置为公网接入点)。 |
| env.ENABLE_SECURITY_CONTEXT | 从 0.93.1 版本开始支持该字段。默认 "false";设置为 "true" 时启用 SecurityContext 继承。启用后,注入的 init container 将继承目标容器的 securityContext,以满足 OPA Gatekeeper 等安全策略引擎的要求。 |
注意:说明:
注意:如果需要指定具体的探针版本号,请前往 探针(Agent)版本信息 获取版本号。
七、接入应用
安装完 tencent-opentelemetry-operator 后,在需要接入 APM 的工作负载中添加相关 annotation,就可以实现探针自动注入,并向 APM 上报监控数据。请参考如下文档完成应用接入:
·K8s 环境自动接入 Java 应用 (推荐)
·K8s 环境自动接入 Python 应用 (推荐)
·K8s 环境自动接入 Node.js 应用 (推荐)
·K8s 环境自动接入 .NET 应用 (推荐)
八、业务系统与 K8s 集群的映射关系
在安装 Operator 的时候,必填参数 env.APM_TOKEN 需要从业务系统获取,代表该集群默认的 APM Token。因此,每个安装 Operator 的 K8s 集群,只能指定唯一的业务系统作为默认接入目标。但在实际使用过程中,部署在同一个 K8s 集群中的不同应用可能需要接入到不同的业务系统,在这种情况下就需要通过在工作负载中指定业务系统 Token,以覆盖集群级别的 env.APM_TOKEN 配置。
| 场景 | 是否支持 | 实现方式 |
| 1个 K8s 集群 → 1个业务系统(1:1) | ✅ 支持 | 安装 Operator 时指定默认业务系统。 |
| 多个 K8s 集群 → 1个业务系统(N:1) | ✅ 支持 | 每个集群各自安装 Operator,指定同一个默认业务系统。 |
| 1个 K8s 集群 → 多个业务系统(1:N) | ✅ 支持 | Operator 指定默认业务系统 + 工作负载中指定其他业务系统的 Token。 |
| 多个 K8s 集群 → 多个业务系统(N:N) | ✅ 支持 | Operator 指定默认业务系统 + 工作负载中指定其他业务系统的 Token。 |
九、示例
参考如下场景:
·K8s 集群部署了3个 Java 应用:service-1、service-2、service-3。
·service-1 和 service-2 需要接入业务系统 A。
·service-3 需要接入业务系统 B。
可以通过如下步骤实现:
1. 在安装 Operator 的时候,指定默认业务系统为 A,即设置 env.APM_TOKEN 为业务系统 A 的 Token。
2. 在接入 service-1 和 service-2 的时候,不需要在工作负载中配置 Token。以 service-1 为例,需要添加的 Pod Annotation 如下:
annotations: cloud.tencent.com/inject-java: "true" cloud.tencent.com/otel-service-name: service-1
3. 在接入 service-3 的时候,在工作负载中配置 Token,覆盖集群级别的配置项。需要添加的 Pod Annotation 如下:
annotations: cloud.tencent.com/inject-java: "true" cloud.tencent.com/otel-service-name: service-3 cloud.tencent.com/apm-token: "<Token>" # Token from System B