パート 2:CollectorとJavaアプリケーションをデプロイする 🔗
Kubernetes環境を構成できたので、次はSplunk Distribution of OpenTelemetry Collectorをデプロイします。
Splunk Distribution of OpenTelemetry Collectorをデプロイする 🔗
Helmを使用して、Splunk Distribution of OpenTelemetry CollectorをKubernetesの名前空間にデプロイします:
コマンドラインインターフェイスで、以下のコマンドを実行します:
helm install splunk-otel-collector -f ./values.yaml splunk-otel-collector-chart/splunk-otel-collector
このコマンドは、前のステップのvalues.yamlファイルを使用して、Helmを介してSplunk Distribution of OpenTelemetry Collectorを設定およびデプロイします。
以下のコマンドを実行して、petclinic名前空間内のすべてのポッドを表示します:
kubectl get pod -n petclinic
現在、いくつかの新しいポッドが稼働しています:
NAME READY STATUS RESTARTS AGE splunk-otel-collector-agent-nkwwf 1/1 Running 0 94s splunk-otel-collector-certmanager-6d95596898-z7qfz 1/1 Running 0 94s splunk-otel-collector-certmanager-cainjector-5c5dc4ff8f-7rlwx 1/1 Running 0 94s splunk-otel-collector-certmanager-webhook-69f4ff754c-hm9m2 1/1 Running 0 94s splunk-otel-collector-k8s-cluster-receiver-594fd9c8c7-6n545 1/1 Running 0 94s splunk-otel-collector-operator-69d476cb7-s8hcl 2/2 Running 0 94s
この出力は、Splunk Distribution of OpenTelemetry Collectorが正常にデプロイされ、Collectorがデータの受信と Splunk Observability Cloudへの送信を開始する準備ができていることを示しています。
これでSplunk Distribution of OpenTelemetry Collectorのデプロイが完了し、Spring Petclinicのアプリケーションをデプロイする準備ができました。
Spring Petclinicのアプリケーションをデプロイする 🔗
Spring Petclinic JavaアプリケーションをKubernetesクラスターにデプロイします:
spring-petclinic-appディレクトリに petclinic-spec.yaml という名前の新しいYAMLファイルを作成します。このファイルには、Kubernetesでアプリケーションのデプロイメントを設定するために使用するキーと値が格納されます。
このファイルに、以下の重要なキーと値を含めます:
キー
値
備考
metadata.name
spring-petclinic
デプロイの名前
metadata.namespace
petclinic
アプリケーションをデプロイする名前空間
spec.template.spec.containers
- name: petclinic-app
アプリケーションのコンテナの名前
spec.template.spec.containers
image: ghcr.io/pavolloffay/spring-petclinic:latest
Spring Petclinicアプリケーションのイメージ
spec.template.metadata.annotations
instrumentation.opentelemetry.io/inject-java: "true"
Java アプリケーション用の Splunk OpenTelemetry ゼロコードインストルメンテーションを有効化します
これらのキーと値を追加すると、petclinic-spec.yamlファイルは次の例のようになります:
apiVersion: apps/v1 kind: Deployment metadata: name: spring-petclinic namespace: petclinic spec: selector: matchLabels: app: spring-petclinic template: metadata: labels: app: spring-petclinic annotations: # Activates zero-code instrumentation for the Java application instrumentation.opentelemetry.io/inject-java: "true" spec: containers: - name: petclinic-app # Java application to instrument image: ghcr.io/pavolloffay/spring-petclinic:latest imagePullPolicy: Always
次のコマンドを実行して、アプリケーションのデプロイを開始します:
kubectl apply -n petclinic -f spring-petclinic-app/petclinic-spec.yaml
このコマンドは、
spring-petclinic
という新しいデプロイメントと、類似する名前のポッドの実行を開始します。
これで、Spring PetClinic JavaアプリケーションをKubernetesポッドにデプロイできました。
デプロイを検証する 🔗
すべてが正しく実行されていることを確認します。アプリケーションポッド上で次のコマンドを実行して、<pod-name>
をSpring Petclinicのアプリケーションポッド名に置き換えます:
kubectl describe pod -n petclinic <pod-name>
出力には、initContainer
という名前の opentelemetry-auto-instrumentation-java
が表示されています:
Name: spring-petclinic-65b9764597-lwvkl
Namespace: petclinic
Priority: 0
Service Account: default
Node: minikube/192.168.49.2
Start Time: Wed, 20 Dec 2023 12:55:02 -0600
Labels: app=spring-petclinic
pod-template-hash=65b9764597
Annotations: instrumentation.opentelemetry.io/inject-java: true
Status: Running
IP: 10.244.0.9
IPs:
IP: 10.244.0.9
Controlled By: ReplicaSet/spring-petclinic-65b9764597
Init Containers:
opentelemetry-auto-instrumentation-java:
Container ID: docker://1b4a6275e8c3936febc3a5b0dd785e484061d9a0c2f8f1e4b17e9c347797a483
Image: ghcr.io/signalfx/splunk-otel-java/splunk-otel-java:v1.30.0
Image ID: docker-pullable://ghcr.io/signalfx/splunk-otel-java/splunk-otel-java@sha256:bb3de9e5d7f3577888f547903b62e281885961e3a49baebfb83b6239824ab5a7
この出力には、環境変数 OTEL
もいくつか表示されます:
Environment:
JAVA_TOOL_OPTIONS: -javaagent:/otel-auto-instrumentation-java/javaagent.jar
SPLUNK_OTEL_AGENT: (v1:status.hostIP)
OTEL_SERVICE_NAME: spring-petclinic
OTEL_EXPORTER_OTLP_ENDPOINT: http://$(SPLUNK_OTEL_AGENT):4317
OTEL_RESOURCE_ATTRIBUTES_POD_NAME: spring-petclinic-65b9764597-lwvkl (v1:metadata.name)
OTEL_RESOURCE_ATTRIBUTES_NODE_NAME: (v1:spec.nodeName)
OTEL_PROPAGATORS: tracecontext,baggage,b3
OTEL_RESOURCE_ATTRIBUTES: splunk.zc.method=splunk-otel-java:v1.30.0,k8s.container.name=petclinic-app,k8s.deployment.name=spring-petclinic,k8s.namespace.name=petclinic,k8s.node.name=$(OTEL_RESOURCE_ATTRIBUTES_NODE_NAME),k8s.pod.name=$(OTEL_RESOURCE_ATTRIBUTES_POD_NAME),k8s.replicaset.name=spring-petclinic-65b9764597,service.version=latest
注釈
initContainer
または OTEL
環境が表示されない場合は、kubectl rollout restart -n petclinic <pod-name>
を使用してアプリケーションポッドを再起動してください。Javaアプリケーションをデプロイする前に、OpenTelemetry Collectorポッドがアクティブかつ稼働中である必要があります。
Spring PetClinic UIにアクセスする 🔗
Spring PetClinic UIにアクセスするには、以下のステップに従ってください:
spring-petclinic
アプリケーションにNodePortサービスを作成します:kubectl expose deployment/spring-petclinic --type="NodePort" --port 8080
NodePortを取得します:
kubectl describe svc spring-petclinic | grep "NodePort"
ブラウザで、
http://<host>:<nodeport>
にアクセスしてください。
次のステップ 🔗
これでアプリケーションが実行され、Splunk Application Performance Monitoring(APM)でのデータ表示を開始する準備が整いました。パート 3:Splunk APMでデータを表示する を参照してください。