Comment ajouter l'agent APM Insight Node.js dans Kubernetes via InitContainers ?

Ajouter l'agent Node.js dans Kubernetes via InitContainers (à l'aide d'une image d'agent précompilée)

Pour intégrer l'agent APM Insight Node.js dans vos applications Kubernetes à l'aide d'InitContainers, suivez les étapes ci-dessous :

Étape 1 :
Créez un volume vide qui sera utilisé pour copier les fichiers de l'agent durant le processus initContainers.
Exemple :
  1. volumes:
  2.    - name: app-volume

Étape 2 :

Incluez la commande initContainers suivante dans votre fichier YAML de graphique helm/déploiement.
  1. initContainers:
  2.       - name: init-npm
  3.         image: site24x7/apminsight-nodejsagent:4.8.0
  4.         imagePullPolicy: IfNotPresent
  5.         command: ['cp', '-r', '/opt/site24x7/.', '/apm']
  6.         volumeMounts:
  7.   - name: app-volume
  8.     mountPath: /apm

Étape 3 :

Montez le volume créé à l'étape 2 dans votre conteneur d'application.
Exemple :
  1. containers:
  2.           env:
  3.             - name: NODE_OPTIONS
  4.               value: "--require /apm/node_modules/apminsight"
  5.             - name: APMINSIGHT_LICENSE_KEY
  6.               value: "<license-key>"
  7.             - name: APMINSIGHT_APP_NAME
  8.               value: "<application-name>"
  9.             - name: APMINSIGHT_APP_PORT
  10.               value: "<application-port>"
  11.          volumeMounts:
  12.             - mountPath: /apm   
  13.         name: app-volume 

Remarques
Pour les applications utilisant le gestionnaire de processus PM2 à la place de Kubernetes, activez la prise en charge de PM2 en ajoutant ce qui suit dans la section env de votre fichier YAML de déploiement :
  1. - name: APMINSIGHT_PROCESS_MANAGER
  2.   value: "true"

Exemple de fichier de déploiement YAML pour référence :
  1. apiVersion: apps/v1
  2. kind: Déploiement
  3. metadata:
  4.   name: sample-deployment
  5. spec:
  6.   replicas: 1
  7.   selector:
  8.     matchLabels:
  9.       app: sample-app
  10.   template:
  11.     metadata:
  12.       labels:
  13.         app: sample-app
  14.     spec:
  15.       initContainers:
  16.       - name: init-npm
  17.         image: site24x7/apminsight-nodejsagent:4.8.0
  18.         imagePullPolicy: IfNotPresent
  19.         command: ['cp', '-r', '/opt/site24x7/.', '/apm']
  20.         volumeMounts:
  21.              - name: app-volume
  22.                 mountPath: /apm

  23.       containers:
  24.         - name: main-container
  25.           image: myrepository/sample-nodejs-app:latest
  26.           env:
  27.             - name: NODE_OPTIONS
  28.               value: "--require /apm/node_modules/apminsight"
  29.             - name: APMINSIGHT_LICENSE_KEY
  30.               value: "<license-key>"
  31.             - name: APMINSIGHT_APP_NAME
  32.               value: "<application-name>"
  33.             - name: APMINSIGHT_APP_PORT
  34.               value: "<application-port>"
  35.           volumeMounts:
  36.             - mountPath: /apm   
  37.               name: app-volume
  38.       volumes:
  39.          - name: app-volume 
  40.       emptyDir: {}