Kubernetesデプロイ
既存のKubernetesクラスターにデモをデプロイするのに役立つOpenTelemetry Demo Helmチャートを提供しています。
チャートを使用するにはHelmをインストールする必要があります。 利用を開始するには、Helmのドキュメントを参照してください。
前提条件
- Kubernetes 1.24以上
- アプリケーション向けに6GBの空きRAM
- Helm 3.14以上(Helmインストール方法のみ)
Helmを使用してインストール(推奨)
OpenTelemetry Helmリポジトリを追加します。
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
my-otel-demoというリリース名でチャートをインストールするには、次のコマンドを実行します。
helm install my-otel-demo open-telemetry/opentelemetry-demo
OpenTelemetry Demo Helmチャートは、あるバージョンから別のバージョンにアップグレードすることをサポートしていません。 チャートをアップグレードする必要がある場合は、最初に既存のリリースを削除してから新しいバージョンをインストールする必要があります。
OpenTelemetry Demo Helmチャートのバージョン0.11.0以上では、以下に記載されているすべての使用方法を実行できます。
kubectlを使用してインストール
次のコマンドは、デモアプリケーションをKubernetesクラスターにインストールします。
kubectl create --namespace otel-demo -f https://raw.githubusercontent.com/open-telemetry/opentelemetry-demo/main/kubernetes/opentelemetry-demo.yaml
OpenTelemetry Demo Kubernetesマニフェストは、あるバージョンから別のバージョンにアップグレードすることをサポートしていません。 デモをアップグレードする必要がある場合は、最初に既存のリソースを削除してから新しいバージョンをインストールする必要があります。
これらのマニフェストは、Helmチャートから生成されており、利便性のために提供されています。 Helmチャートを使用してインストールすることをお勧めします。
デモの使用
デモアプリケーションでは、Kubernetesクラスターの外部に公開されているサービスが必要です。
kubectl port-forwardコマンドを使用するか、任意のデプロイ済みのIngressリソースを使用してサービスタイプ(例: LoadBalancer)を設定することで、サービスをローカルシステムに公開できます。
kubectl port-forwardを使用してサービスを公開する
frontend-proxyサービスを公開するには、次のコマンドを使用します(defaultをHelmチャートのリリースnamespaceに置き換えます)。
kubectl --namespace default port-forward svc/frontend-proxy 8080:8080
kubectl port-forwardは、プロセスが終了するまでポートをプロキシします。
kubectl port-forwardを使用するたびに、個別のターミナルセッションを作成し、完了したらCtrl-Cを使用してプロセスを終了する必要がある場合があります。
frontend-proxyをport-forwardで設定すると、次のURLにアクセスできます。
- Web store: http://localhost:8080/
- Grafana: http://localhost:8080/grafana/
- Load Generator UI: http://localhost:8080/loadgen/
- Jaeger UI: http://localhost:8080/jaeger/ui/
- Flagd configurator UI: http://localhost:8080/feature
ServiceまたはIngress構成を使用してデモコンポーネントを公開する
追加の構成オプションを指定するために、Helmチャートをインストールする際にvaluesファイルを使用することをお勧めします。
Ingressリソースの構成
Kubernetesクラスターには、LoadBalancerのサービスタイプまたはIngressリソースを有効にするための適切なインフラストラクチャのコンポーネントが備わっていない場合があります。 これらの構成オプションを使用する前に、クラスターが適切にサポートされていることを確認してください。
各デモコンポーネント(例:frontend-proxy)は、Kubernetesのサービスタイプを設定できます。
デフォルトでは作成されませんが、各コンポーネントのingressプロパティを使用して有効化および構成できます。
frontend-proxyコンポーネントをIngressリソースを使用するように構成するには、valuesファイルに次の内容を指定します。
components:
frontend-proxy:
ingress:
enabled: true
annotations: {}
hosts:
- host: otel-demo.my-domain.com
paths:
- path: /
pathType: Prefix
port: 8080
一部のIngressコントローラーでは、特別なアノテーションやサービスタイプが必要です。 より詳細な情報については、Ingressコントローラーのドキュメントを参照してください。
サービスタイプの構成
各デモコンポーネント(例:frontend-proxy)は、Kubernetesのサービスタイプを設定する方法を提供します。
デフォルトではClusterIPですが、各コンポーネントのservice.typeプロパティを使用して変更できます。
frontend-proxyコンポーネントをLoadBalancerサービスタイプを使用するように構成するには、valuesファイルに次の内容を指定します。
components:
frontend-proxy:
service:
type: LoadBalancer
ブラウザテレメトリーの構成
ブラウザからスパンを適切に収集するには、OpenTelemetry Collectorが公開されている場所も指定する必要があります。
frontend-proxyは、コレクターへのルートをパス接頭辞/otlp-httpで定義します。
次の環境変数をfrontendコンポーネントに設定することで、コレクターのエンドポイントを設定できます。
components:
frontend:
envOverrides:
- name: PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
value: http://otel-demo.my-domain.com/otlp-http/v1/traces
独自のバックエンドを使用する
おそらく、すでにお持ちのオブザーバビリティバックエンド(例:既存のJaeger、Zipkin、または選択したベンダーのインスタンス)のデモアプリケーションとしてWebストアを使用したい場合があるでしょう。
OpenTelemetry Collectorの設定はHelmチャートで公開されています。 追加した設定はすべてデフォルトの設定にマージされます。 これを使用して独自のエクスポーターを追加し、必要なパイプラインに追加できます。
opentelemetry-collector:
config:
exporters:
otlphttp/example:
endpoint: <your-endpoint-url>
service:
pipelines:
traces:
exporters: [spanmetrics, otlphttp/example]
Helmを使用してYAML値をマージする場合、オブジェクトはマージされ、配列は置き換えられます。
spanmetricsエクスポーターは、上書きされた場合tracesパイプラインのエクスポーターの配列に含める必要があります。
このエクスポーターを含めていない場合、エラーが発生します。
ベンダーのバックエンドによっては、認証のために追加のパラメーターが必要になる場合があるため、ベンダーのドキュメントを確認してください。 一部のバックエンドでは異なるエクスポーターが必要です。 エクスポーターとドキュメントはopentelemetry-collector-contrib/exporterで入手できます。
カスタムvalueファイルmy-values-file.yamlを使用してHelmチャートをインストールするには、次のコマンドを使用します。
helm install my-otel-demo open-telemetry/opentelemetry-demo --values my-values-file.yaml
フィードバック
このページは役に立ちましたか?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!