Agregar el agente de Node.js en Kubernetes a través de InitContainers (con una imagen de agente prediseñada)
Para integrar el agente de Node.js de APM Insight en tus aplicaciones Kubernetes con InitContainers, sigue los pasos que se indican a continuación:
Paso 1:
Crea un volumen vacío que se utilizará para copiar los archivos del agente durante el proceso de initContainers.
Ejemplo:
- volumes:
- - name: app-volume
Paso 2:
Incluye el siguiente comando de initContainers en el gráfico Helm o el archivo YAML de implementación.
- 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
Paso 3:
Instala el volumen que se creó en el paso 2 en el contenedor de la aplicación.
Ejemplo:
- 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
Para aplicaciones que usan el gestor de procesos PM2 en lugar de Kubernetes, habilita la compatibilidad con PM2 agregando lo siguiente en la sección env de tu YAML de implementación:
- - name: APMINSIGHT_PROCESS_MANAGER
- value: "true"
Ejemplo del archivo de implementación YAML como referencia:
- apiVersion: apps/v1
- kind: Deployment
- 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: {}