Como adicionar o agente Java do APM Insight no Kubernetes via InitContainers
Etapa 1:
Crie um segredo para a chave de licença Site24x7 no namespace do seu aplicativo.
Você pode obter a chave de licença na conta do seu site24x7 indo até Admin (Administrador) > Developer (Desenvolvedor) > Device Key (Chave do dispositivo). Exemplo:
- kubectl create secret generic app-secret --from-literal=s247licensekey='your_s247_license_key' -n petclinic
Substitua app-secret, sua _s247_license_key e namespace (petclinic) pelos valores adequados.
Etapa 2:
Crie um volume vazio que será usado para copiar os arquivos do agente durante o processo InitContainers.
Exemplo:
- volumes:
- - name: s247agent
Etapa 3:
Inclua o seguinte comando InitContainers no seu arquivo helm chart/deployment YAML.
- initContainers:
- - nome: agent-copy
- imagem: site24x7/apminsight-javaagent:latest
- imagemPullPolicy: IfNotPresent
- comando: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
- volumeMounts:
- - nome: s247agent
- mountPath: /home/apm
Etapa 4:
Monte o volume criado na etapa 2 no contêiner do seu aplicativo.
Exemplo:
- contêiners:
- - nome: petclinic
- imagem:: petclinic:latest
- imagem:PullPolicy: IfNotPresent
- portas:
- - containerPort: 8080
- volumeMounts:
- - nome: s247agent
- mountPath: /home/apm
Etapa 5:
Adicione as seguintes variáveis de ambiente aos contêineres de aplicativo.
Variável de ambiente 1:
Nome: S247_LICENSE_KEY
Valor: s247licensekey do segredo adicionado na etapa 1
Variável de ambiente 2:
Nome: JAVA_TOOL_OPTIONS
Valor: "-javaagent:[mount/path]/apminsight-javaagent.jar -Dapminsight.application.name=[DesiredMonitorName]"
Nesta etapa, configuramos os argumentos que o aplicativo (processo Java) usará durante a inicialização e o agente para comunicar dados ao nome específico do monitor.
Example:
- env:
- - nome: JAVA_TOOL_OPTIONS
- valor: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
- - nome: S247_LICENSE_KEY
- valueFrom:
- secretKeyRef:
- nome: petclinic-secrets
- chave: s247_license_key
Exemplo de arquivo de implementação YAML para sua referência:
- apiVersion: v1
- tipo: Namespace
- metadados:
- nome: petclinic
- ---
- apiVersion: v1
- tipo: Secret
- metadados:
- nome: petclinic-secrets
- namespace: petclinic
- tipo: Opaque
- dados:
- s247_license_key: OGQ3NTg0YmIxNWE1YTIzYjhmN35rfed2M1M2U3N2ExOTVhNzM1YWYyMg==
- ---
- apiVersion: apps/v1
- tipo: Deployment
- metadados:
- namespace: petclinic
- nome: petclinic-deployment
- rótulos:
- app: petclinic
- especificações:
- réplicas: 2
- seletor:
- matchLabels:
- app: petclinic
- modelo:
- metadados:
- rótulos:
- app: petclinic
- especificações:
- contêiners:
- - nome: petclinic
- imagem: petclinic:latest
- imagePullPolicy: IfNotPresent
- portas:
- - containerPort: 8080
- env:
- - nome: JAVA_TOOL_OPTIONS
- valor: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
- - nome: S247_LICENSE_KEY
- valueFrom:
- secretKeyRef:
- nome: petclinic-secrets
- key: s247_license_key
- volumeMounts:
- - nome: s247agent
- mountPath: /home/apm
- initContainers:
- - nome: agent-copy-init
- imagem: site24x7/apminsight-javaagent:latest
- imagePullPolicy: IfNotPresent
- comando: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
- volumeMounts:
- - nome: s247agent
- mountPath: /home/apm
- volumes:
- - nome: s247agent
- ---
- apiVersion: v1
- tipo: Serviço
- metadata:
- namespace: petclinic
- nome: petclinic-service
- especificações:
- tipo: NodePort
- seletor:
- app: petclinic
- portas:
- - protocol: TCP
- porta: 8080
- targetPort: 8080
- nodePort: 30200