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.
Vous pouvez obtenir la clé de licence sur votre compte Site24x7 en accédant à Administration > Développeur > Clé de l'appareil. Exemple :
- 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 :
- volumes:
- - name: s247agent
Étape 3 :
Incluez la commande InitContainers suivante dans votre fichier YAML de graphique helm/déploiement.
- initContainers:
- - name: agent-copy
- image: site24x7/apminsight-javaagent:latest
- imagePullPolicy: IfNotPresent
- command: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
- volumeMounts:
- - name: s247agent
- mountPath: /home/apm
Étape 4 :
Montez le volume créé à l'étape 2 dans votre conteneur d'application.
Exemple :
- containers:
- - name: petclinic
- image: petclinic:latest
- imagePullPolicy: IfNotPresent
- ports:
- - containerPort: 8080
- volumeMounts:
- - name: s247agent
- 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]"
À 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 :
- env:
- - name: JAVA_TOOL_OPTIONS
- value: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
- - name: S247_LICENSE_KEY
- valueFrom:
- secretKeyRef:
- name: petclinic-secrets
- key: s247_license_key
Exemple de fichier de déploiement YAML pour référence :
- apiVersion: v1
- kind: Namespace
- metadata:
- name: petclinic
- ---
- apiVersion: v1
- kind: Secret
- metadata:
- name: petclinic-secrets
- namespace: petclinic
- type: Opaque
- data:
- s247_license_key: OGQ3NTg0YmIxNWE1YTIzYjhmN35rfed2M1M2U3N2ExOTVhNzM1YWYyMg==
- ---
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- namespace: petclinic
- name: petclinic-deployment
- labels:
- app: petclinic
- spec:
- replicas: 2
- selector:
- matchLabels:
- app: petclinic
- template:
- metadata:
- labels:
- app: petclinic
- spec:
- containers:
- - name: petclinic
- image: petclinic:latest
- imagePullPolicy: IfNotPresent
- ports:
- - containerPort: 8080
- env:
- - name: JAVA_TOOL_OPTIONS
- value: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
- - name: S247_LICENSE_KEY
- valueFrom:
- secretKeyRef:
- name: petclinic-secrets
- key: s247_license_key
- volumeMounts:
- - name: s247agent
- mountPath: /home/apm
- initContainers:
- - name: agent-copy-init
- image: site24x7/apminsight-javaagent:latest
- imagePullPolicy: IfNotPresent
- command: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
- volumeMounts:
- - name: s247agent
- mountPath: /home/apm
- volumes:
- - name: s247agent
- ---
- apiVersion: v1
- kind: Service
- metadata:
- namespace: petclinic
- name: petclinic-service
- spec:
- type: NodePort
- selector:
- app: petclinic
- ports:
- - protocol: TCP
- port: 8080
- targetPort: 8080
- nodePort: 30200