Wie fügt man den APM Insight Node.js-Agenten in Kubernetes über InitContainers hinzu?

Fügen Sie den Node.js-Agenten in Kubernetes über InitContainers hinzu, indem Sie ein vorgefertigtes Agenten-Image nutzen.

Um den APM Insight Node.js-Agenten zu nutzen, integrieren Sie ihn mithilfe von InitContainers in Ihre Kubernetes-Anwendungen, und befolgen Sie dafür die folgenden Schritte:

Schritt 1:
Erstellen Sie ein leeres Volume, das zum Kopieren der Agent-Dateien während des InitContainers-Prozesses verwendet wird.
Beispiel:
  1. volumes:
  2.    - name: app-volume

Schritt 2:

Fügen Sie den folgenden InitContainers-Befehl in Ihre Helm-Chart-/Deployment-YAML-Datei ein.
  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

Schritt 3:

Übertragen Sie das in Schritt 2 hergestellte Volume in Ihren Anwendungscontainer.
Beispiel:
  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 

Notizen
Bei Anwendungen, die den PM2-Prozessmanager anstelle von Kubernetes nutzen, aktivieren Sie die PM2-Unterstützung, indem Sie Folgendes in den Abschnitt env Ihrer YAML-Deployment-Datei einfügen:
  1. - name: APMINSIGHT_PROCESS_MANAGER
  2.   value: "true"

Beispiel einer YAML-Bereitstellungsdatei zu Ihrer Information:
  1. apiVersion: apps/v1
  2. kind: Bereitstellung
  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: {}