Por padrão, o componente ack-onepilot injeta a variável de ambiente JAVA_TOOL_OPTIONS nos pods para definir o caminho de montagem do agente Java. Para usar um caminho personalizado — por exemplo, para gerenciar caminhos de agentes via ConfigMap do Kubernetes ou armazenar arquivos do agente em uma Persistent Volume Claim (PVC) — desative a injeção automática e especifique o caminho manualmente.
Pré-requisitos
Antes de começar, verifique se você tem:
ack-onepilot 4.1.0 ou posterior
Agente Java do ARMS 4.2.2 ou posterior (para fixar uma versão específica, consulte Controlar a versão do agente Java)
Acesso ao cluster ACK via
kubectl
Como funciona
Em uma implantação padrão, o ack-onepilot define o caminho de montagem do agente Java ao injetar a variável de ambiente JAVA_TOOL_OPTIONS. O caminho padrão é /home/admin/.opt/AliyunJavaAgent/aliyun-java-agent.jar.
Para utilizar um caminho de montagem personalizado, adicione o rótulo disableJavaToolOptionsInjection: "true" ao modelo do pod. Essa configuração instrui o ack-onepilot a interromper a injeção de JAVA_TOOL_OPTIONS e outros parâmetros da JVM. Outras variáveis de ambiente, como a região de relatório e a chave de licença, continuam sendo injetadas. Em seguida, especifique a flag -javaagent no comando de inicialização da aplicação para apontar para o caminho personalizado.
Procedimento
O componente ack-onepilot é compartilhado pelo Application Real-Time Monitoring Service (ARMS) e pelo Microservice Engine (MSE). Este procedimento também se aplica a aplicações de administração de serviços do MSE.
Etapa 1: Desativar a injeção automática de JAVA_TOOL_OPTIONS
Adicione o rótulo disableJavaToolOptionsInjection ao modelo de pod do Deployment ou de outra carga de trabalho.
Adicione os rótulos em spec.template.metadata, e não no nível superior em spec.metadata. Rótulos na própria carga de trabalho não afetam o comportamento de injeção do pod.
-
Visualize a configuração atual do Deployment:
kubectl get deployment <your-deployment-name> -o yamlNotaSe você não souber o nome do Deployment, liste todos os Deployments primeiro:
kubectl get deployments --all-namespaces -
Abra o Deployment para edição:
kubectl edit deployment <your-deployment-name> -
Em
spec.template.metadata, defina os seguintes rótulos:labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-app-name>" # Replace with your application name disableJavaToolOptionsInjection: "true" # Disables automatic JAVA_TOOL_OPTIONS injection Salve o arquivo. O Kubernetes implantará novos pods com os rótulos atualizados.
Etapa 2: Especificar o caminho personalizado do agente no comando de inicialização
No Dockerfile, no script de entrypoint ou no comando do contêiner do Kubernetes, adicione a flag -javaagent com o caminho personalizado:
java -javaagent:<custom-agent-path>/aliyun-java-agent.jar -jar <your-application>.jar
Substitua os seguintes espaços reservados pelos seus valores:
|
Espaço reservado |
Descrição |
Exemplo |
|
|
Diretório onde o JAR do agente está montado |
|
|
|
Nome do arquivo JAR da aplicação |
|
O caminho padrão do agente é /home/admin/.opt/AliyunJavaAgent/aliyun-java-agent.jar. Substitua-o pelo caminho do JAR do agente montado personalizado.
O ack-onepilot ainda injeta outras configurações, como a região de relatório e a chave de licença, por meio de variáveis de ambiente. Nenhuma configuração adicional é necessária para esses ajustes.
Etapa 3: Verificar a configuração
Após a inicialização dos novos pods, confirme se o caminho personalizado está em vigor e se a injeção automática foi desativada.
-
Verifique as variáveis de ambiente do pod:
kubectl describe pod <pod-name> | grep JAVA_TOOL_OPTIONSSe
disableJavaToolOptionsInjectionfuncionar corretamente,JAVA_TOOL_OPTIONSnão aparecerá na saída. -
Consulte os logs da aplicação para confirmar se o agente foi carregado a partir do caminho personalizado:
kubectl logs <pod-name> | grep -i "javaagent"Procure uma entrada de log que mostre o caminho do JAR do agente correspondente à localização personalizada.
Casos de uso comuns
|
Caso de uso |
Descrição |
|
Gerenciamento centralizado de configurações |
Armazene caminhos de agentes em um ConfigMap do Kubernetes e referencie-os nas variáveis de ambiente do contêiner. Isso mantém o caminho do agente configurável em vários ambientes sem modificar cada Deployment individualmente. |
|
Armazenamento persistente |
Monte uma PVC nos pods e coloque o JAR do agente no caminho montado. Essa abordagem atende a políticas de segurança corporativas ou requisitos de O&M que exigem o armazenamento de arquivos do agente em armazenamento persistente. |
Em ambos os casos, defina disableJavaToolOptionsInjection: "true" conforme descrito neste tópico e aponte a flag -javaagent para o caminho onde o JAR do agente está disponível no contêiner.