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 :
- volumes:
- - name: app-volume
Étape 2 :
Incluez la commande initContainers suivante dans votre fichier YAML de graphique helm/déploiement.
- initContainers:
- - name: init-npm
- image: site24x7/apminsight-nodejsagent:4.8.0
- imagePullPolicy: IfNotPresent
- command: ['cp', '-r', '/opt/site24x7/.', '/apm']
- volumeMounts:
- - name: app-volume
- mountPath: /apm
Étape 3 :
Montez le volume créé à l'étape 2 dans votre conteneur d'application.
Exemple :
- containers:
- env:
- - name: NODE_OPTIONS
- value: "--require /apm/node_modules/apminsight"
- - name: APMINSIGHT_LICENSE_KEY
- value: "<license-key>"
- - name: APMINSIGHT_APP_NAME
- value: "<application-name>"
- - name: APMINSIGHT_APP_PORT
- value: "<application-port>"
- volumeMounts:
- - mountPath: /apm
- name: app-volume
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 :
- - name: APMINSIGHT_PROCESS_MANAGER
- value: "true"
Exemple de fichier de déploiement YAML pour référence :
- apiVersion: apps/v1
- kind: Déploiement
- metadata:
- name: sample-deployment
- spec:
- replicas: 1
- selector:
- matchLabels:
- app: sample-app
- template:
- metadata:
- labels:
- app: sample-app
- spec:
- initContainers:
- - name: init-npm
- image: site24x7/apminsight-nodejsagent:4.8.0
- imagePullPolicy: IfNotPresent
- command: ['cp', '-r', '/opt/site24x7/.', '/apm']
- volumeMounts:
- - name: app-volume
- mountPath: /apm
- containers:
- - name: main-container
- image: myrepository/sample-nodejs-app:latest
- env:
- - name: NODE_OPTIONS
- value: "--require /apm/node_modules/apminsight"
- - name: APMINSIGHT_LICENSE_KEY
- value: "<license-key>"
- - name: APMINSIGHT_APP_NAME
- value: "<application-name>"
- - name: APMINSIGHT_APP_PORT
- value: "<application-port>"
- volumeMounts:
- - mountPath: /apm
- name: app-volume
- volumes:
- - name: app-volume
- emptyDir: {}