OpenTelemetry クイックスタート

OpenTelemetryは、Cloud Native Computing Foundation (CNCF)の監視のためのフレームワークです。マイクロサービスがメトリクス、ログ、およびトレースを提供できるようにします。

SUSE Security Admission Controllerのコンポーネントは、OpenTelemetry SDKを使用して、データをOpenTelemetryコレクター(エージェントと呼ばれる)に報告します。

このガイドでは、公式Kubernetes Helmチャートを使用して、`sidecar`モードでOpenTelemetryコレクターをデプロイする方法を説明します。

これはOpenTelemetryを使用したシンプルなデプロイメントパターンです。最終的なセットアップは次のようになります:

  • Admission Controllerスタック(ポリシーサーバー、コントローラー)の各PodにはOpenTelemetryサイドカーがあります。

  • サイドカーは、OpenTelemetryプロトコル(OTLP)を介してAdmission Controllerコンポーネントからトレースおよび監視情報を受信します。

  • OpenTelemetryコレクター:

    • トレースイベントを中央のJaegerインスタンスに送信します。

    • 特定のポートでPrometheusメトリクスを公開します。

Admission Controller Helmチャートは、OpenTelemetryコレクターのすべての可能なデプロイメントシナリオをカバーしていません。Admission Controllerを構成して、OpenTelemetryコレクターにデータを送信することも可能です。そのシナリオに関するドキュメントは、カスタム OpenTelemetryガイドにあります。

最初にKubernetesクラスターにOpenTelemetryをデプロイし、次のセクションでトレースとメトリクスに特に対処できるようにします。

Kubernetesクラスターのセットアップ

このセクションには、テレメトリのクイックスタート用のKubernetesクラスターを作成するための手順が記載されています。

すでにKubernetesクラスターが利用可能な場合は、このセクションをスキップしても構いません。

minikubeを使用してテスト用のKubernetesクラスターを作成できます。

Minikubeには多くのバックエンドがありますが、この場合はlibvirtに依存するkvm2ドライバーを使用できます。

`libvirtd`が正しくマシン上で実行されていると仮定して、次のコマンドを発行します:

minikube start --driver=kvm2

コマンドは、次のような出力を生成します。

$ minikube start --driver=kvm2
😄  minikube v1.23.2 on Opensuse-Leap 15.3
✨  Using the kvm2 driver based on user configuration
👍  Starting control plane node minikube in cluster minikube
🔥  Creating kvm2 VM (CPUs=2, Memory=6000MB, Disk=20000MB) ...
🐳  Preparing Kubernetes v1.22.2 on Docker 20.10.8 ...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

クラスターが準備完了になったら、ガイドの残りの部分を続けることができます。

Traefikをインストールする

次のテレメトリガイドでは、Kubernetes `Ingress`リソースを使用してJaeger UIを公開する際に、TraefikをIngressコントローラーとして使用します。

Helmチャートを使用してTraefikをインストールします。

helm registry login dp.apps.rancher.io \
  --username <your-username> \
  --password <your-token>
kubectl create namespace traefik

kubectl create secret docker-registry application-collection \
  --namespace traefik \
  --docker-server=dp.apps.rancher.io \
  --docker-username=<your-username> \
  --docker-password=<your-token>

helm install --wait \
  --namespace traefik \
  --version 41.7.1 \
  --set fullnameOverride=traefik \
  --set global.imagePullSecrets={application-collection} \
  traefik oci://dp.apps.rancher.io/charts/traefik-proxy

次のガイドでは、`Ingress`を使用して標準のKubernetesを作成し、`ingressClassName: traefik`を使用してJaeger Query UIをTraefikサービス経由でルーティングします。

Traefikをインストールしたくない場合、トレースガイドではJaegerに直接アクセスするためのフォールバックとして`kubectl port-forward`を保持します。

OpenTelemetryをインストールする

最新のサポートされているコンポーネントバージョンについては、依存関係マトリックスを参照してください。

OpenTelemetry Collectorサイドカーの自動注入をPolicyServerポッドに管理するために、OpenTelemetry Operatorを使用します。

OpenTelemetry Operatorは、クラスター内にcert-managerのインストールを必要とします。

kubectl create namespace cert-manager

kubectl create secret docker-registry application-collection \
  --namespace cert-manager \
  --docker-server=dp.apps.rancher.io \
  --docker-username=<your-username> \
  --docker-password=<your-token>

helm install --wait \
    --namespace cert-manager \
    --set crds.enabled=true \
    --set global.imagePullSecrets={application-collection} \
    --version 1.21.2 \
    cert-manager oci://dp.apps.rancher.io/charts/cert-manager

cert-managerが実行されていると、OpenTelemetryオペレーターHelmチャートをインストールできます。

執筆時点(2024年11月11日)で、最新のOpenTelemetryオペレーターのチャートバージョンは`0.65.0`です。

kubectl create namespace open-telemetry

kubectl create secret docker-registry application-collection \
  --namespace open-telemetry \
  --docker-server=dp.apps.rancher.io \
  --docker-username=<your-username> \
  --docker-password=<your-token>

helm install --wait \
  --namespace open-telemetry \
  --version 0.124.1 \
  --set global.imagePullSecrets={application-collection} \
  --set manager.collectorImage.tag=0.160.0-contrib \
  my-opentelemetry-operator oci://dp.apps.rancher.io/charts/opentelemetry-operator

OpenTelemetryの統合

次の章に進んで、アプリケーションメトリクス(Prometheus統合を通じて)およびアプリケーショントレーシング(Jaeger統合を通じて)を有効にすることができます。