Comment ajouter l'agent Java APM Insight dans Kubernetes via InitContainers ?

Ajout d'un agent APM Insight Java dans Kubernetes via InitContainers

Étape 1 :
Créez un secret pour la clé de licence Site24x7 dans l'espace de noms de votre application.
NotesVous pouvez obtenir la clé de licence sur votre compte Site24x7 en accédant à Administration > Développeur > Clé de l'appareil.
      Exemple :
  1. kubectl create secret generic app-secret --from-literal=s247licensekey='your_s247_license_key' -n petclinic
            Remplacez secret-application, votre_clé_de_licence_s247, et l'espace de nom (petclinic) par les valeurs correctes.

Étape 2 :
Créez un volume vide qui sera utilisé pour copier les fichiers de l'agent durant le processus InitContainers.

      Exemple :
  1. volumes:
  2.    - name: s247agent

Étape 3 :
Incluez la commande InitContainers suivante dans votre fichier YAML de graphique helm/déploiement.
  1. initContainers:
  2.       - name: agent-copy
  3.         image: site24x7/apminsight-javaagent:latest
  4.         imagePullPolicy: IfNotPresent
  5.         command: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
  6.         volumeMounts:
  7.         - name: s247agent
  8.           mountPath: /home/apm

Étape 4 :
Montez le volume créé à l'étape 2 dans votre conteneur d'application.
      
      Exemple :
  1. containers:
  2.       - name: petclinic
  3.         image: petclinic:latest
  4.         imagePullPolicy: IfNotPresent
  5.         ports:
  6.         - containerPort: 8080
  7.        volumeMounts:
  8.         - name: s247agent
  9.           mountPath: /home/apm

Étape 5 :
Ajoutez les variables de l'environnement suivant aux conteneurs d'application.
      
      Variable d'environnement 1 :
      Nom: S247_LICENSE_KEY 
      Valeur: s247licensekey from the secret added in step 1
      
      Environment variable 2:
      Nom: JAVA_TOOL_OPTIONS 
      Valeur: "-javaagent:[mount/path]/apminsight-javaagent.jar -Dapminsight.application.name=[DesiredMonitorName]"

Notes
À cette étape, nous configurons les arguments que l'application (processus Java) utilisera durant le démarrage et l'agent qui rapporte les données au nom de moniteur spécifié.

      Exemple :
  1. env:
  2.         - name: JAVA_TOOL_OPTIONS
  3.           value: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
  4.         - name: S247_LICENSE_KEY
  5.           valueFrom:
  6.             secretKeyRef:
  7.               name: petclinic-secrets
  8.               key: s247_license_key
      
      Exemple de fichier de déploiement YAML pour référence :
  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4.   name: petclinic

  5. ---
  6. apiVersion: v1
  7. kind: Secret
  8. metadata:
  9.   name: petclinic-secrets
  10.   namespace: petclinic
  11. type: Opaque
  12. data:
  13.   s247_license_key: OGQ3NTg0YmIxNWE1YTIzYjhmN35rfed2M1M2U3N2ExOTVhNzM1YWYyMg==

  14. ---
  15. apiVersion: apps/v1
  16. kind: Deployment
  17. metadata:
  18.   namespace: petclinic
  19.   name: petclinic-deployment
  20.   labels:
  21.     app: petclinic
  22. spec:
  23.   replicas: 2
  24.   selector:
  25.     matchLabels:
  26.       app: petclinic
  27.   template:
  28.     metadata:
  29.       labels:
  30.         app: petclinic
  31.     spec:
  32.       containers:
  33.       - name: petclinic
  34.         image: petclinic:latest
  35.         imagePullPolicy: IfNotPresent
  36.         ports:
  37.         - containerPort: 8080
  38.         env:
  39.         - name: JAVA_TOOL_OPTIONS
  40.           value: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
  41.         - name: S247_LICENSE_KEY
  42.           valueFrom:
  43.             secretKeyRef:
  44.               name: petclinic-secrets
  45.               key: s247_license_key
  46.         volumeMounts:
  47.         - name: s247agent
  48.           mountPath: /home/apm
  49.       initContainers:
  50.       - name: agent-copy-init
  51.         image: site24x7/apminsight-javaagent:latest
  52.         imagePullPolicy: IfNotPresent
  53.         command: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
  54.         volumeMounts:
  55.         - name: s247agent
  56.           mountPath: /home/apm
  57.       volumes:
  58.       - name: s247agent

  59. ---
  60. apiVersion: v1
  61. kind: Service
  62. metadata:
  63.   namespace: petclinic
  64.   name: petclinic-service
  65. spec:
  66.   type: NodePort
  67.   selector:
  68.     app: petclinic
  69.   ports:
  70.     - protocol: TCP
  71.       port: 8080
  72.       targetPort: 8080
  73.       nodePort: 30200