Kubernetesデプロイ

既存のKubernetesクラスターにデモをデプロイするのに役立つOpenTelemetry Demo Helmチャートを提供しています。

チャートを使用するにはHelmをインストールする必要があります。 利用を開始するには、Helmのドキュメントを参照してください。

前提条件

  • Kubernetes 1.24以上
  • アプリケーション向けに6GBの空きRAM
  • Helm 3.14以上(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

kubectlを使用してインストール

次のコマンドは、デモアプリケーションをKubernetesクラスターにインストールします。

kubectl create --namespace otel-demo -f https://raw.githubusercontent.com/open-telemetry/opentelemetry-demo/main/kubernetes/opentelemetry-demo.yaml

デモの使用

デモアプリケーションでは、Kubernetesクラスターの外部に公開されているサービスが必要です。 kubectl port-forwardコマンドを使用するか、任意のデプロイ済みのIngressリソースを使用してサービスタイプ(例: LoadBalancer)を設定することで、サービスをローカルシステムに公開できます。

kubectl port-forwardを使用してサービスを公開する

frontend-proxyサービスを公開するには、次のコマンドを使用します(defaultをHelmチャートのリリースnamespaceに置き換えます)。

kubectl --namespace default port-forward svc/frontend-proxy 8080:8080

frontend-proxyをport-forwardで設定すると、次のURLにアクセスできます。

ServiceまたはIngress構成を使用してデモコンポーネントを公開する

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]

ベンダーのバックエンドによっては、認証のために追加のパラメーターが必要になる場合があるため、ベンダーのドキュメントを確認してください。 一部のバックエンドでは異なるエクスポーターが必要です。 エクスポーターとドキュメントはopentelemetry-collector-contrib/exporterで入手できます。

カスタムvalueファイルmy-values-file.yamlを使用してHelmチャートをインストールするには、次のコマンドを使用します。

helm install my-otel-demo open-telemetry/opentelemetry-demo --values my-values-file.yaml