背景
在標準部署情境中,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 YOUR_DEPLOYMENT_NAME -o yaml說明若您不清楚{deployment名稱},請先執行以下命令查看所有無狀態(Deployment)應用,在執行結果中找到目標無狀態(Deployment)應用,再查看目標無狀態(Deployment)應用的YAML檔案。
kubectl get deployments --all-namespaces啟動編輯目標無狀態(Deployment)應用的YAML檔案。
kubectl edit deployment YOUR_DEPLOYMENT_NAME -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通過環境變數的方式注入。