Bagaimana cara menambahkan agen APM Insight Node.js di Kubernetes melalui InitContainers?

Menambahkan agen Node.js di Kubernetes melalui InitContainers (menggunakan image agen bawaan)

Untuk mengintegrasikan agen APM Insight Node.js ke dalam aplikasi Kubernetes Anda menggunakan InitContainers, ikuti langkah-langkah berikut:

Langkah 1:
Buat volume kosong yang akan digunakan untuk menyalin file agen selama proses InitContainers.
Contoh:
  1. volume:
  2.    - name: app-volume

Langkah 2:

Masukkan perintah InitContainers berikut ke dalam file YAML bagan/deployment helm Anda.
  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

Langkah 3:

Pasang volume yang dibuat pada langkah 2 ke dalam kontainer aplikasi Anda.
Contoh:
  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 

Catatan
Untuk aplikasi yang menggunakan manajer proses PM2 dan bukan Kubernetes, aktifkan dukungan PM2 dengan menambahkan perintah berikut di bagian env dari YAML deployment Anda:
  1. - name: APMINSIGHT_PROCESS_MANAGER
  2.   value: "true"

Contoh file penerapan YAML untuk referensi Anda:
  1. apiVersion: apps/v1
  2. kind: Penempatan
  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: {}