Menambahkan agen Java APM Insight di Kubernetes melalui InitContainers
Langkah 1:
Buat rahasia untuk kunci lisensi Site24x7 di namespace aplikasi Anda.
Anda dapat memperoleh kunci lisensi dari akun site24x7 Anda dengan menavigasi ke Admin > Developer (Pengembang) > Device Key (Kunci Perangkat). Contoh:
- kubectl buat rahasia aplikasi-rahasia generik --from-literal=s247licensekey='kunci_lisensi_s247_Anda' -n petclinic
Ganti app-secret, your_s247_license_key, dan namespace (petclinic) dengan nilai yang sesuai.
Langkah 2:
Buat volume kosong yang akan digunakan untuk menyalin file agen selama proses InitContainers.
Contoh:
- volumes:
- - name: s247agent
Langkah 3:
Sertakan perintah InitContainers berikut dalam file YAML bagan/deployment helm Anda.
- initContainers:
- - name: agent-copy
- image: site24x7/apminsight-javaagent:latest
- imagePullPolicy: IfNotPresent
- command: ['cp', '-r', '/opt/site24x7/.', '/home/apm']
- volumeMounts:
- - name: s247agent
- mountPath: /home/apm
Langkah 4:
Pasang volume yang dibuat pada langkah 2 ke dalam kontainer aplikasi Anda.
Contoh:
- containers:
- - name: petclinic
- image: petclinic:latest
- imagePullPolicy: IfNotPresent
- ports:
- - containerPort: 8080
- volumeMounts:
- - name: s247agent
- mountPath: /home/apm
Langkah 5:
Tambahkan variabel lingkungan berikut ke kontainer aplikasi.
Variabel lingkungan 1:
Nama: S247_LICENSE_KEY
Value: s247licensekey from the secret added in step 1
Variabel lingkungan 2:
Nama: JAVA_TOOL_OPTIONS
Value: "-javaagent:[mount/path]/apminsight-javaagent.jar -Dapminsight.application.name=[DesiredMonitorName]"
Pada langkah ini, kami mengonfigurasi argumen yang akan digunakan aplikasi (proses Java) selama startup dan agen untuk melaporkan data ke nama monitor yang ditentukan.
Contoh:
- 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
Contoh file penerapan YAML untuk referensi Anda:
- 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
- volume:
- - name: s247agent
- ---
- apiVersion: v1
- kind: Service
- metadata:
- namespace: petclinic
- name: petclinic-service
- spec:
- type: NodePort
- selector:
- app: petclinic
- port:
- - protocol: TCP
- port: 8080
- targetPort: 8080
- nodePort: 30200