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.
Puedes obtener la clave de la licencia de tu cuenta de Site24x7 navegando a Admin > Desarrollador > Clave del dispositivo. Ejemplo:
- 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:
- volumes:
- - name: s247agent
Paso 3:
Incluye el siguiente comando de InitContainers en el gráfico Helm o el archivo YAML de implementación.
- initContainers:
- - name: agent-copy
- image: site24x7/apminsight-javaagent:latest
- imagePullPolicy: IfNotPresent
- command: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
- volumeMounts:
- - name: s247agent
- mountPath: /home/apm
Paso 4:
Instala el volumen que se creó en el paso 2 en el contenedor de la aplicación.
Ejemplo:
- containers:
- - name: petclinic
- image: petclinic:latest
- imagePullPolicy: IfNotPresent
- ports:
- - containerPort: 8080
- volumeMounts:
- - name: s247agent
- 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]"
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:
- env:
- - name: JAVA_TOOL_OPTIONS
- value: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
- - name: S247_LICENSE_KEY
- valueFrom:
- secretKeyRef:
- name: petclinic-secrets
- key: s247_license_key
Ejemplo del archivo de implementación YAML como referencia:
- apiVersion: v1
- kind: Namespace
- metadata:
- name: petclinic
- ---
- apiVersion: v1
- kind: Secret
- metadata:
- name: petclinic-secrets
- namespace: petclinic
- type: Opaque
- data:
- s247_license_key: OGQ3NTg0YmIxNWE1YTIzYjhmN35rfed2M1M2U3N2ExOTVhNzM1YWYyMg==
- ---
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- namespace: petclinic
- name: petclinic-deployment
- labels:
- app: petclinic
- spec:
- replicas: 2
- selector:
- matchLabels:
- app: petclinic
- template:
- metadata:
- labels:
- app: petclinic
- spec:
- containers:
- - name: petclinic
- image: petclinic:latest
- imagePullPolicy: IfNotPresent
- ports:
- - containerPort: 8080
- env:
- - name: JAVA_TOOL_OPTIONS
- value: -javaagent:/home/apm/apminsight-javaagent.jar -Dapminsight.application.name=petclinic-k8s
- - name: S247_LICENSE_KEY
- valueFrom:
- secretKeyRef:
- name: petclinic-secrets
- key: s247_license_key
- volumeMounts:
- - name: s247agent
- mountPath: /home/apm
- initContainers:
- - name: agent-copy-init
- image: site24x7/apminsight-javaagent:latest
- imagePullPolicy: IfNotPresent
- command: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
- volumeMounts:
- - name: s247agent
- mountPath: /home/apm
- volumes:
- - name: s247agent
- ---
- apiVersion: v1
- kind: Service
- metadata:
- namespace: petclinic
- name: petclinic-service
- spec:
- type: NodePort
- selector:
- app: petclinic
- ports:
- - protocol: TCP
- port: 8080
- targetPort: 8080
- nodePort: 30200