¿Cómo añadir el agente Java de APM Insight a Kubernetes mediante InitContainers?

Agregar el agente de Java de APM Insight a Kubernetes a través de InitContainers

Paso 1:
Crea un secreto para la clave de la licencia de Site24x7 en el espacio de nombre de tu aplicación.
NotesPuedes obtener la clave de la licencia de tu cuenta de Site24x7 navegando a Admin > Desarrollador > Clave del dispositivo.
      Ejemplo:
  1. kubectl create secret generic app-secret --from-literal=s247licensekey='your_s247_license_key' -n petclinic
            Reemplaza app-secret, your_s247_license_key y el espacio de nombre (petclinic) con los valores apropiados.

Paso 2:
Crea un volumen vacío que se utilizará para copiar los archivos del agente durante el proceso de InitContainers.

      Ejemplo:
  1. volumes:
  2.    - name: s247agent

Paso 3:
Incluye el siguiente comando de InitContainers en el gráfico Helm o el archivo YAML de implementación.
  1. initContainers:
  2.       - name: agent-copy
  3.         image: site24x7/apminsight-javaagent:latest
  4.         imagePullPolicy: IfNotPresent
  5.         command: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
  6.         volumeMounts:
  7.         - name: s247agent
  8.           mountPath: /home/apm

Paso 4:
Instala el volumen que se creó en el paso 2 en el contenedor de la aplicación.
      
      Ejemplo:
  1. containers:
  2.       - name: petclinic
  3.         image: petclinic:latest
  4.         imagePullPolicy: IfNotPresent
  5.         ports:
  6.         - containerPort: 8080
  7.        volumeMounts:
  8.         - name: s247agent
  9.           mountPath: /home/apm

Paso 5:
Agrega las siguientes variables del entorno a los contenedores de la aplicación.
      
      Variable 1 del entorno:
      Nombre: S247_LICENSE_KEY
      Valor: s247licensekey del secreto que se agregó en el paso 1
      
      Variable 2 del entorno:
      Nombre: JAVA_TOOL_OPTIONS
      Valor: "-javaagent:[mount/path]/apminsight-javaagent.jar -Dapminsight.application.name=[DesiredMonitorName]"

Notes
En este paso, se configuran los argumentos que utilizará la aplicación (proceso de Java) durante el inicio y que el agente usará para informar los datos al nombre de monitor especificado.

      Ejemplo:
  1. env:
  2.         - name: JAVA_TOOL_OPTIONS
  3.           value: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
  4.         - name: S247_LICENSE_KEY
  5.           valueFrom:
  6.             secretKeyRef:
  7.               name: petclinic-secrets
  8.               key: s247_license_key
      
      Ejemplo del archivo de implementación YAML como referencia:
  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4.   name: petclinic

  5. ---
  6. apiVersion: v1
  7. kind: Secret
  8. metadata:
  9.   name: petclinic-secrets
  10.   namespace: petclinic
  11. type: Opaque
  12. data:
  13.   s247_license_key: OGQ3NTg0YmIxNWE1YTIzYjhmN35rfed2M1M2U3N2ExOTVhNzM1YWYyMg==

  14. ---
  15. apiVersion: apps/v1
  16. kind: Deployment
  17. metadata:
  18.   namespace: petclinic
  19.   name: petclinic-deployment
  20.   labels:
  21.     app: petclinic
  22. spec:
  23.   replicas: 2
  24.   selector:
  25.     matchLabels:
  26.       app: petclinic
  27.   template:
  28.     metadata:
  29.       labels:
  30.         app: petclinic
  31.     spec:
  32.       containers:
  33.       - name: petclinic
  34.         image: petclinic:latest
  35.         imagePullPolicy: IfNotPresent
  36.         ports:
  37.         - containerPort: 8080
  38.         env:
  39.         - name: JAVA_TOOL_OPTIONS
  40.           value: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
  41.         - name: S247_LICENSE_KEY
  42.           valueFrom:
  43.             secretKeyRef:
  44.               name: petclinic-secrets
  45.               key: s247_license_key
  46.         volumeMounts:
  47.         - name: s247agent
  48.           mountPath: /home/apm
  49.       initContainers:
  50.       - name: agent-copy-init
  51.         image: site24x7/apminsight-javaagent:latest
  52.         imagePullPolicy: IfNotPresent
  53.         command: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
  54.         volumeMounts:
  55.         - name: s247agent
  56.           mountPath: /home/apm
  57.       volumes:
  58.       - name: s247agent

  59. ---
  60. apiVersion: v1
  61. kind: Service
  62. metadata:
  63.   namespace: petclinic
  64.   name: petclinic-service
  65. spec:
  66.   type: NodePort
  67.   selector:
  68.     app: petclinic
  69.   ports:
  70.     - protocol: TCP
  71.       port: 8080
  72.       targetPort: 8080
  73.       nodePort: 30200