Como adicionar o agente Java do APM Insight no Kubernetes via InitContainers?

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.
NotesVocê pode obter a chave de licença na conta do seu site24x7 indo até Admin (Administrador) > Developer (Desenvolvedor) > Device Key (Chave do dispositivo).
      Exemplo:
  1. 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:
  1. volumes:
  2.    - name: s247agent

Etapa 3:
Inclua o seguinte comando InitContainers no seu arquivo helm chart/deployment YAML.
  1. initContainers:
  2.       - nome: agent-copy
  3.         imagem: site24x7/apminsight-javaagent:latest
  4.         imagemPullPolicy: IfNotPresent
  5.         comando: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
  6.         volumeMounts:
  7.         - nome: s247agent
  8.           mountPath: /home/apm

Etapa 4:
Monte o volume criado na etapa 2 no contêiner do seu aplicativo.
      
      Exemplo:
  1. contêiners:
  2.       - nome: petclinic
  3.         imagem:: petclinic:latest
  4.        imagem:PullPolicy: IfNotPresent
  5.         portas:
  6.         - containerPort: 8080
  7.        volumeMounts:
  8.         - nome: s247agent
  9.           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:
  1. env:
  2.         - nome: JAVA_TOOL_OPTIONS
  3.           valor: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
  4.         - nome: S247_LICENSE_KEY
  5.           valueFrom:
  6.             secretKeyRef:
  7.               nome: petclinic-secrets
  8.               chave: s247_license_key
      
      Exemplo de arquivo de implementação YAML para sua referência:
  1. apiVersion: v1
  2. tipo: Namespace
  3. metadados:
  4.   nome: petclinic

  5. ---
  6. apiVersion: v1
  7. tipo: Secret
  8. metadados:
  9.   nome: petclinic-secrets
  10.   namespace: petclinic
  11. tipo: Opaque
  12. dados:
  13.   s247_license_key: OGQ3NTg0YmIxNWE1YTIzYjhmN35rfed2M1M2U3N2ExOTVhNzM1YWYyMg==

  14. ---
  15. apiVersion: apps/v1
  16. tipo: Deployment
  17. metadados:
  18.   namespace: petclinic
  19.   nome: petclinic-deployment
  20.   rótulos:
  21.     app: petclinic
  22. especificações:
  23.   réplicas: 2
  24.   seletor:
  25.     matchLabels:
  26.       app: petclinic
  27.   modelo:
  28.     metadados:
  29.       rótulos:
  30.         app: petclinic
  31.     especificações:
  32.       contêiners:
  33.       - nome: petclinic
  34.         imagem: petclinic:latest
  35.         imagePullPolicy: IfNotPresent
  36.         portas:
  37.         - containerPort: 8080
  38.         env:
  39.         - nome: JAVA_TOOL_OPTIONS
  40.           valor: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
  41.         - nome: S247_LICENSE_KEY
  42.           valueFrom:
  43.             secretKeyRef:
  44.               nome: petclinic-secrets
  45.               key: s247_license_key
  46.         volumeMounts:
  47.         - nome: s247agent
  48.           mountPath: /home/apm
  49.       initContainers:
  50.       - nome: agent-copy-init
  51.         imagem: site24x7/apminsight-javaagent:latest
  52.         imagePullPolicy: IfNotPresent
  53.         comando: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
  54.         volumeMounts:
  55.         - nome: s247agent
  56.           mountPath: /home/apm
  57.       volumes:
  58.       - nome: s247agent

  59. ---
  60. apiVersion: v1
  61. tipo: Serviço
  62. metadata:
  63.   namespace: petclinic
  64.   nome: petclinic-service
  65. especificações:
  66.   tipo: NodePort
  67.   seletor:
  68.     app: petclinic
  69.   portas:
  70.     - protocol: TCP
  71.       porta: 8080
  72.       targetPort: 8080
  73.       nodePort: 30200