背景
在标准部署场景中,ack-onepilot 组件会通过注入 JAVA_TOOL_OPTIONS 环境变量指定 Java 探针(Agent)的挂载路径。但在某些场景下,用户可能需要自定义探针挂载路径以满足特定需求:
- 统一配置管理 - 需通过 Kubernetes ConfigMap 集中管理探针路径,实现多环境配置一致性。 
- 持久化存储需求 - 企业安全规范或运维要求将探针文件存储在自定义持久化卷(PVC)中。 
版本依赖
自定义Java探针挂载路径对 ack-onepilot 与 Java 探针版本要求如下:
- ack-onepilot 版本不低于 4.1.0。 
- ARMS Java 探针版本不低于4.2.2,您也可以根据需求自主控制Java探针版本。 
解决方案
ack-onepilot组件由 MSE 和 ARMS 共用,因此自定义 Java 探针挂载路径对于 MSE 服务治理应用同样生效。
- 为需要自定义挂载Java探针的Kubernetes工作负载(如Kubernetes Deployment)添加 - disableJavaToolOptionsInjection注解。- 添加该注解后ack-onepilot组件将不会通过JAVA_TOOL_OPTIONS环境变量自动指定Java探针的挂载路径及其他JVM参数。 - 执行以下命令查看目标无状态(Deployment)应用的YAML文件。 - kubectl get deployment {deployment名称} -o yaml说明- 若您不清楚{deployment名称},请先执行以下命令查看所有无状态(Deployment)应用,在执行结果中找到目标无状态(Deployment)应用,再查看目标无状态(Deployment)应用的YAML文件。 - kubectl get deployments --all-namespace
- 启动编辑目标无状态(Deployment)应用的YAML文件。 - kubectl edit deployment {Deployment名称} -o yaml
- 在YAML文件中的spec.template.metadata层级下添加以下内容。 - labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # 请将<your-deployment-name>替换为您的应用名称。 disableJavaToolOptionsInjection: "true" # 如需自定义Java探针挂载路径,请将此开关设为true。
 
- 在您的应用启动脚本或Java启动命令中自行添加ARMS Java探针的挂载路径。 - 其中, - /home/admin/.opt/AliyunJavaAgent/aliyun-java-agent.jar为探针默认挂载路径,请将该路径替换为需要自定义挂载的路径。- java -javaagent:/home/admin/.opt/AliyunJavaAgent/aliyun-java-agent.jar ... ... -jar xxx.jar- 其余的重要信息,如上报Region、上报License Key等信息将由ack-onepilot通过环境变量的方式注入。