Hinzufügen des APM Insight Java-Agenten in Kubernetes über InitContainers
Schritt 1:
Erstellen Sie ein Geheimnis für den Site24x7-Lizenzschlüssel in Ihrem Anwendungsnamensbereich.
Sie können den Lizenzschlüssel von Ihrem site24x7-Konto abrufen, indem Sie zu "Admin > Developer > Device Key" navigieren. Beispiel:
- kubectl create secret generic app-secret --from-literal=s247licensekey='your_s247_license_key' -n petclinic
Ersetzen Sie "app-secret", "your_s247_license_key" und "namespace" (petclinic) durch die entsprechenden Werte.
Schritt 2:
Erstellen Sie ein leeres Volume, das zum Kopieren der Agent-Dateien während des InitContainers-Prozesses verwendet wird.
Beispiel:
- volumes:
- - name: s247agent
Schritt 3:
Fügen Sie den folgenden InitContainers-Befehl in Ihre Helm-Chart-/Deployment-YAML-Datei ein.
- initContainers:
- - name: agent-copy
- image: site24x7/apminsight-javaagent:latest
- imagePullPolicy: IfNotPresent
- command: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
- volumeMounts:
- - name: s247agent
- mountPath: /home/apm
Schritt 4:
Übertragen Sie das in Schritt 2 hergestellte Volume in Ihren Anwendungscontainer.
Beispiel:
- containers:
- - name: petclinic
- image: petclinic:latest
- imagePullPolicy: IfNotPresent
- ports:
- - containerPort: 8080
- volumeMounts:
- - name: s247agent
- mountPath: /home/apm
Schritt 5:
Fügen Sie die folgenden Umgebungsvariablen zu Anwendungscontainern hinzu.
Umgebungsvariable 1:
Name: S247_LICENSE_KEY
Wert: s247licensekey from the secret added in step 1
Umgebungsvariable 2:
Name: JAVA_TOOL_OPTIONS
Wert: "-javaagent:[mount/path]/apminsight-javaagent.jar -Dapminsight.application.name=[DesiredMonitorName]"
In diesem Schritt konfigurieren wir die Argumente, die die Anwendung (Java-Prozess) beim Start verwendet, und den Agenten, um Daten an den angegebenen Überwachungsnamen zu melden.
Beispiel:
- 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
Beispiel einer YAML-Bereitstellungsdatei zu Ihrer Information:
- 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: Bereitstellung
- 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
- Wert: -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