パート 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クラスターにデプロイします:
-
petclinic-spec.yaml という名前の spring-petclinic-app ディレクトリに新しい YAML ファイルを作成します。このファイルには、Kubernetesでアプリケーションデプロイメントを設定するために使用するキーと値が格納されます。
-
このファイルに、以下の重要なキーと値を含めます:
キー
値
注意事項
metadata.namespring-petclinicデプロイの名前
metadata.namespacepetclinicアプリケーションをデプロイする名前空間
spec.template.spec.containers- name: petclinic-appアプリケーションのコンテナの名前
spec.template.spec.containersimage: ghcr.io/pavolloffay/spring-petclinic:latestSpring Petclinicアプリケーションのイメージ
spec.template.metadata.annotationsinstrumentation.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 でデータを表示する」を参照してください。