背景情報
標準的なデプロイメントでは、ack-onepilot コンポーネントは JAVA_TOOL_OPTIONS 環境変数をインジェクトすることで、Java エージェントのマウントパスを指定します。しかし、以下のような特定のシナリオでは、エージェントのマウントパスをカスタマイズする必要があります。
集中構成管理
Kubernetes ConfigMap を使用してエージェントパスを集中管理し、複数の環境間で構成の一貫性を確保できます。
永続ストレージ要件
企業のセキュリティポリシーや運用保守要件により、プローブファイルをカスタムの永続ボリューム (PVC) に保存する必要がある場合があります。
バージョン依存関係
Java エージェントのマウントパスをカスタマイズするには、以下のコンポーネントバージョンが必要です。
ack-onepilot:バージョン 4.1.0 以降。
ARMS Java エージェント:バージョン 4.2.2 以降。必要に応じて、Java エージェントのバージョンをコントロールすることもできます。
解決策
ack-onepilot コンポーネントは Microservice Engine (MSE) と Application Real-Time Monitoring Service (ARMS) で共有されています。したがって、この手順は MSE のサービス管理アプリケーションにも適用されます。
カスタムマウントが必要な Kubernetes ワークロード (Deployment など) に
disableJavaToolOptionsInjectionアノテーションを追加します。このアノテーションを追加すると、ack-onepilot コンポーネントは JAVA_TOOL_OPTIONS 環境変数を使用してエージェントのマウントパスや他の Java 仮想マシン (JVM) パラメーターを自動的に指定しなくなります。
次のコマンドを実行して、対象の Deployment の YAML ファイルを表示します。
kubectl get deployment YOUR_DEPLOYMENT_NAME -o yaml説明Deployment 名が不明な場合は、次のコマンドを実行してすべての Deployment を一覧表示できます。結果から対象の Deployment を見つけ、その YAML ファイルを表示します。
kubectl get deployments --all-namespaces対象のステートレスアプリケーション (Deployment) の YAML ファイルを編集できます。
kubectl edit deployment YOUR_DEPLOYMENT_NAME -o yamlYAML ファイルの `spec.template.metadata` の下に、次の内容を追加します。
labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<span class="var-span" contenteditable="true" data-var="YOUR_DEPLOYMENT_NAME">YOUR_DEPLOYMENT_NAME"</span> # YOUR_DEPLOYMENT_NAME をお使いのアプリケーション名に置き換えます。 disableJavaToolOptionsInjection: "true" # Java エージェントのマウントパスをカスタマイズするには、これを true に設定します。
ARMS Java エージェントのマウントパスを、アプリケーションの起動スクリプトまたは Java の起動コマンドに追加します。
デフォルトのマウントパスは
/home/admin/.opt/AliyunJavaAgent/aliyun-java-agent.jarです。このパスをカスタムパスに置き換えてください。java -javaagent:/home/admin/.opt/AliyunJavaAgent/aliyun-java-agent.jar ... ... -jar xxx.jar報告リージョンやライセンスキーなどの他の情報は、ack-onepilot によって環境変数経由でインジェクトされます。