第3章 distributed tracing platform (Tempo)


3.1. インストール

distributed tracing platform (Tempo) のインストール手順は以下のとおりです。

  1. Tempo Operator をインストールします。
  2. サポートされているオブジェクトストアを設定し、オブジェクトストアの認証情報のシークレットを作成します。
  3. 権限とテナントを設定します。
  4. ユースケースに応じて次のデプロイメントを選択してインストールします。

    • マイクロサービスモードの TempoStack インスタンス
    • モノリシックモードの TempoMonolithic インスタンス

3.1.1. Tempo Operator のインストール

Tempo Operator は、Web コンソールまたはコマンドラインを使用してインストールできます。

3.1.1.1. Web コンソールを使用した Tempo Operator のインストール

Tempo Operator は、Web コンソールの Administrator ビューからインストールできます。

前提条件

  • cluster-admin ロールを持つクラスター管理者として、OpenShift Container Platform Web コンソールにログインしている。
  • Red Hat OpenShift Dedicated の場合、dedicated-admin ロールを持つアカウントを使用してログインしている。
  • サポートされているプロバイダーによる必要なオブジェクトストレージ Red Hat OpenShift Data FoundationMinIOAmazon S3Azure Blob StorageGoogle Cloud Storage の設定が完了している。詳細は、「オブジェクトストレージのセットアップ」を参照してください。

    警告

    オブジェクトストレージは必須ですが、distributed tracing platform (Tempo) には含まれていません。distributed tracing platform (Tempo) をインストールする前に、サポートされているプロバイダーによるオブジェクトストレージを選択して設定する必要があります。

手順

  1. Operators OperatorHub に移動し、Tempo Operator を検索します。
  2. Red Hat が提供 する Tempo Operator を選択します。

    重要

    次の選択は、この Operator のデフォルトのプリセットです。

    • Update channel stable
    • Installation mode All namespaces on the cluster
    • Installed Namespace openshift-tempo-operator
    • Update approval Automatic
  3. Enable Operator recommended cluster monitoring on this Namespace チェックボックスを選択します。
  4. Install Install View Operator を選択します。

検証

  • インストール済み Operator ページの Details タブの ClusterServiceVersion details で、インストールの StatusSucceeded であることを確認します。

3.1.1.2. CLI を使用した Tempo Operator のインストール

Tempo Operator はコマンドラインからインストールできます。

前提条件

  • cluster-admin ロールを持つクラスター管理者によるアクティブな OpenShift CLI (oc) セッション。

    ヒント
    • OpenShift CLI (oc) のバージョンが最新であり、OpenShift Container Platform バージョンと一致していることを確認してください。
    • oc login を実行します。

      $ oc login --username=<your_username>
  • サポートされているプロバイダーによる必要なオブジェクトストレージ Red Hat OpenShift Data FoundationMinIOAmazon S3Azure Blob StorageGoogle Cloud Storage の設定が完了している。詳細は、「オブジェクトストレージのセットアップ」を参照してください。

    警告

    オブジェクトストレージは必須ですが、distributed tracing platform (Tempo) には含まれていません。distributed tracing platform (Tempo) をインストールする前に、サポートされているプロバイダーによるオブジェクトストレージを選択して設定する必要があります。

手順

  1. 以下のコマンドを実行して、Tempo Operator のプロジェクトを作成します。

    $ oc apply -f - << EOF
    apiVersion: project.openshift.io/v1
    kind: Project
    metadata:
      labels:
        kubernetes.io/metadata.name: openshift-tempo-operator
        openshift.io/cluster-monitoring: "true"
      name: openshift-tempo-operator
    EOF
  2. 以下のコマンドを実行して、Operator グループを作成します。

    $ oc apply -f - << EOF
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: openshift-tempo-operator
      namespace: openshift-tempo-operator
    spec:
      upgradeStrategy: Default
    EOF
  3. 以下のコマンドを実行して、サブスクリプションを作成します。

    $ oc apply -f - << EOF
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: tempo-product
      namespace: openshift-tempo-operator
    spec:
      channel: stable
      installPlanApproval: Automatic
      name: tempo-product
      source: redhat-operators
      sourceNamespace: openshift-marketplace
    EOF

検証

  • 次のコマンドを実行して、Operator のステータスを確認します。

    $ oc get csv -n openshift-tempo-operator

3.1.2. オブジェクトストレージのセットアップ

サポートされているオブジェクトストレージを設定する際に、次の設定パラメーターを使用できます。

重要

オブジェクトストレージを使用するには、TempoStack または TempoMonolithic インスタンスをデプロイする前に、サポートされているオブジェクトストアを設定し、オブジェクトストアの認証情報のシークレットを作成する必要があります。

表3.1 必須のシークレットパラメーター
ストレージプロバイダー

Secret パラメーター

Red Hat OpenShift Data Foundation

name: tempostack-dev-odf # example

bucket: <bucket_name> # requires an ObjectBucketClaim

endpoint: https://s3.openshift-storage.svc

access_key_id: <data_foundation_access_key_id>

access_key_secret: <data_foundation_access_key_secret>

MinIO

MinIO Operator を参照してください。

name: tempostack-dev-minio # example

bucket: <minio_bucket_name> # MinIO documentation

endpoint: <minio_bucket_endpoint>

access_key_id: <minio_access_key_id>

access_key_secret: <minio_access_key_secret>

Amazon S3

name: tempostack-dev-s3 # example

bucket: <s3_bucket_name> # Amazon S3 documentation

endpoint: <s3_bucket_endpoint>

access_key_id: <s3_access_key_id>

access_key_secret: <s3_access_key_secret>

Security Token Service (STS) を使用する Amazon S3

name: tempostack-dev-s3 # example

bucket: <s3_bucket_name> # Amazon S3 documentation

region: <s3_region>

role_arn: <s3_role_arn>

Microsoft Azure Blob Storage

name: tempostack-dev-azure # example

container: <azure_blob_storage_container_name> # Microsoft Azure documentation

account_name: <azure_blob_storage_account_name>

account_key: <azure_blob_storage_account_key>

Google Cloud Storage on Google Cloud Platform (GCP)

name: tempostack-dev-gcs # example

bucketname: <google_cloud_storage_bucket_name> # requires a bucket created in a GCP project

key.json: <path/to/key.json> # requires a service account in the bucket’s GCP project for GCP authentication

3.1.2.1. Security Token Service を使用する Amazon S3 ストレージの設定

Security Token Service (STS) を使用する Amazon S3 ストレージは、AWS コマンドラインインターフェイス (AWS CLI) を使用して設定できます。

重要

Security Token Service を使用する Amazon S3 ストレージは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

前提条件

  • AWS CLI の最新バージョンがインストールされている。

手順

  1. AWS S3 バケットを作成します。
  2. AWS IAM ロール (次のステップで作成) と TempoStack インスタンスのサービスアカウントとの信頼関係を設定する AWS IAM ポリシー用に、次の trust.json ファイルを作成します。

    {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Federated": "arn:aws:iam::${<aws_account_id>}:oidc-provider/${<oidc_provider>}" 1
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
              "StringEquals": {
                "${OIDC_PROVIDER}:sub": [
                  "system:serviceaccount:${<openshift_project_for_tempostack>}:tempo-${<tempostack_cr_name>}" 2
                  "system:serviceaccount:${<openshift_project_for_tempostack>}:tempo-${<tempostack_cr_name>}-query-frontend"
               ]
             }
           }
         }
        ]
    }
    1
    OpenShift Container Platform で設定した OIDC プロバイダー。設定した OIDC プロバイダーの値は、コマンド $ oc get authentication cluster -o json | jq -r '.spec.serviceAccountIssuer' | sed 'shttp[s]*://~g' を実行して取得することもできます。
    2
    TempoStack インスタンスを作成する namespace。
  3. 作成した trust.json ポリシーファイルをアタッチして AWS IAM ロールを作成します。

    $ aws iam create-role \
          --role-name "tempo-s3-access" \
          --assume-role-policy-document "file:///tmp/trust.json" \
          --query Role.Arn \
          --output text
  4. 作成したロールに AWS IAM ポリシーをアタッチします。

    $ aws iam attach-role-policy \
          --role-name "tempo-s3-access" \
          --policy-arn "arn:aws:iam::aws:policy/AmazonS3FullAccess"
  5. OpenShift Container Platform で、次のように、キーを使用してオブジェクトストレージシークレットを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: minio-test
    stringData:
      bucket: <s3_bucket_name>
      region: <s3_region>
      role_arn: <s3_role_arn>
    type: Opaque

3.1.2.2. IBM Cloud Object Storage の設定

OpenShift CLI (oc) を使用して IBM Cloud Object Storage をセットアップできます。

前提条件

  • OpenShift CLI (oc) の最新バージョンをインストールした。詳細は、設定: CLI ツール の「OpenShift CLI の使用を開始する」を参照してください。
  • IBM Cloud Command Line Interface (ibmcloud) の最新バージョンをインストールした。詳細は、IBM Cloud Docs の「Getting started with the IBM Cloud CLI」を参照してください。
  • IBM Cloud Object Storage を設定した。詳細は、IBM Cloud Docs の「Choosing a plan and creating an instance」を参照してください。

    • IBM Cloud Platform アカウントを持っている。
    • IBM Cloud Object Storage のプランを発注した。
    • IBM Cloud Object Storage のインスタンスを作成した。

手順

  1. IBM Cloud でオブジェクトストアバケットを作成します。
  2. IBM Cloud で、次のコマンドを実行して、オブジェクトストアバケットに接続するためのサービスキーを作成します。

    $ ibmcloud resource service-key-create <tempo_bucket> Writer \
    --instance-name <tempo_bucket> --parameters '{"HMAC":true}'
  3. IBM Cloud で、次のコマンドを実行して、バケット認証情報を含むシークレットを作成します。

    $ oc -n <namespace> create secret generic <ibm_cos_secret> \
      --from-literal=bucket="<tempo_bucket>" \
      --from-literal=endpoint="<ibm_bucket_endpoint>" \
      --from-literal=access_key_id="<ibm_bucket_access_key>" \
      --from-literal=access_key_secret="<ibm_bucket_secret_key>"
  4. OpenShift Container Platform で、次のように、キーを使用してオブジェクトストレージシークレットを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: <ibm_cos_secret>
    stringData:
      bucket: <tempo_bucket>
      endpoint: <ibm_bucket_endpoint>
      access_key_id: <ibm_bucket_access_key>
      access_key_secret: <ibm_bucket_secret_key>
    type: Opaque
  5. OpenShift Container Platform で、TempoStack カスタムリソースのストレージセクションを次のように設定します。

    apiVersion: tempo.grafana.com/v1alpha1
    kind: TempoStack
    # ...
    spec:
    # ...
      storage:
        secret:
          name: <ibm_cos_secret> 1
          type: s3
    # ...
    1
    IBM Cloud Storage のアクセスキーとシークレットキーが含まれるシークレットの名前。

3.1.3. 権限とテナントの設定

TempoStack または TempoMonolithic インスタンスをインストールする前に、1 つ以上のテナントを定義し、テナントの読み取りおよび書き込みアクセス権を設定する必要があります。このような認可設定は、Kubernetes のロールベースアクセス制御 (RBAC) のクラスターロールとクラスターロールバインディングを使用して設定できます。デフォルトでは、どのユーザーにも読み取り権限または書き込み権限は付与されません。詳細は、「テナントの読み取り権限の設定」および「テナントの書き込み権限の設定」を参照してください。

注記

Red Hat build of OpenTelemetry の OpenTelemetry Collector は、データの書き込み用のサービスアカウントと RBAC を使用して、トレースデータを TempoStack または TempoMonolithic インスタンスに送信できます。

表3.2 認証および認可
コンポーネントTempo Gateway サービスOpenShift OAuthTokenReview APISubjectAccessReview API

認証

X

X

X

 

認可

X

  

X

3.1.3.1. テナントの読み取り権限の設定

テナントの読み取り権限は、Web コンソールの Administrator ビューまたはコマンドラインから設定できます。

前提条件

  • cluster-admin ロールを持つクラスター管理者として、OpenShift Container Platform Web コンソールにログインしている。
  • Red Hat OpenShift Dedicated の場合、dedicated-admin ロールを持つアカウントを使用してログインしている。

手順

  1. 任意の値を指定した tenantName および tenantId パラメーターを TempoStack カスタムリソース (CR) に追加して、テナントを定義します。

    TempoStack CR のテナントの例

    apiVersion: tempo.grafana.com/v1alpha1
    kind: TempoStack
    metadata:
      name: redmetrics
    spec:
    # ...
      tenants:
        mode: openshift
        authentication:
          - tenantName: dev 1
            tenantId: "1610b0c3-c509-4592-a256-a1871353dbfa" 2
    # ...

    1
    ユーザーが選択した tenantName 値。
    2
    ユーザーが選択した tenantId 値。
  2. トレースを読み取るための読み取り (get) 権限を持つクラスターロールにテナントを追加します。

    ClusterRole リソースの RBAC 設定の例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: tempostack-traces-reader
    rules:
      - apiGroups:
          - 'tempo.grafana.com'
        resources: 1
          - dev
          - prod
        resourceNames:
          - traces
        verbs:
          - 'get' 2

    1
    この例では、前のステップで tenantName パラメーターを使用して定義したテナント (dev および prod) をリストします。
    2
    リストしたテナントの読み取り操作を有効にします。
  3. 上記ステップのクラスターロールのクラスターロールバインディングを定義して、認証されたユーザーにトレースデータの読み取り権限を付与します。

    ClusterRoleBinding リソースの RBAC 設定の例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: tempostack-traces-reader
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: tempostack-traces-reader
    subjects:
      - kind: Group
        apiGroup: rbac.authorization.k8s.io
        name: system:authenticated 1

    1
    認証されたユーザー全員に、トレースデータの読み取り権限を付与します。

3.1.3.2. テナントの書き込み権限の設定

テナントの書き込み権限は、Web コンソールの Administrator ビューまたはコマンドラインから設定できます。

前提条件

  • cluster-admin ロールを持つクラスター管理者として、OpenShift Container Platform Web コンソールにログインしている。
  • Red Hat OpenShift Dedicated の場合、dedicated-admin ロールを持つアカウントを使用してログインしている。
  • OpenTelemetry Collector をインストールし、権限を持つ許可済みのサービスアカウントを使用するように Collector を設定した。詳細は、Red Hat build of OpenTelemetry ドキュメントの「必要な RBAC リソースの自動作成」を参照してください。

手順

  1. OpenTelemetry Collector で使用するためのサービスアカウントを作成します。

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: otel-collector
      namespace: <project_of_opentelemetry_collector_instance>
  2. トレースを書き込むための書き込み (create) 権限を持つクラスターロールにテナントを追加します。

    ClusterRole リソースの RBAC 設定の例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: tempostack-traces-write
    rules:
      - apiGroups:
          - 'tempo.grafana.com'
        resources: 1
          - dev
        resourceNames:
          - traces
        verbs:
          - 'create' 2

    1
    テナントをリスト表示します。
    2
    書き込み操作を有効にします。
  3. OpenTelemetry Collector のサービスアカウントを割り当てるためのクラスターロールバインディングを定義して、OpenTelemetry Collector に書き込み権限を付与します。

    ClusterRoleBinding リソースの RBAC 設定の例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: tempostack-traces
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: tempostack-traces-write
    subjects:
      - kind: ServiceAccount
        name: otel-collector 1
        namespace: otel

    1
    前のステップで作成したサービスアカウント。これは、クライアントがトレースデータをエクスポートするときに使用されます。
  4. OpenTelemetryCollector カスタムリソースを次のように設定します。

    • トレーシングパイプラインサービスに、bearertokenauth エクステンションと有効なトークンを追加します。
    • otlp/otlphttp エクスポーターにテナント名を X-Scope-OrgID ヘッダーとして追加します。
    • 有効な認証局ファイルを使用して TLS を有効にします。

      OpenTelemetry CR 設定のサンプル

      apiVersion: opentelemetry.io/v1beta1
      kind: OpenTelemetryCollector
      metadata:
        name: cluster-collector
        namespace: <project_of_tempostack_instance>
      spec:
        mode: deployment
        serviceAccount: otel-collector 1
        config: |
            extensions:
              bearertokenauth: 2
                filename: "/var/run/secrets/kubernetes.io/serviceaccount/token" 3
            exporters:
              otlp/dev: 4
                endpoint: sample-gateway.tempo.svc.cluster.local:8090
                tls:
                  insecure: false
                  ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt" 5
                auth:
                  authenticator: bearertokenauth
                headers:
                  X-Scope-OrgID: "dev" 6
              otlphttp/dev: 7
                endpoint: https://sample-gateway.<project_of_tempostack_instance>.svc.cluster.local:8080/api/traces/v1/dev
                tls:
                  insecure: false
                  ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt"
                auth:
                  authenticator: bearertokenauth
                headers:
                  X-Scope-OrgID: "dev"
            service:
              extensions: [bearertokenauth]
              pipelines:
                traces:
                  exporters: [otlp/dev] 8
      
      # ...

      1
      書き込み権限が設定されたサービスアカウント。
      2
      サービスアカウントトークンを使用するためのベアラートークンエクステンション。
      3
      サービスアカウントトークン。このトークンは、ベアラートークンヘッダーとして、クライアントによりトレーシングパイプラインサービスに送信されます。
      4
      OTLP gRPC Exporter (otlp/dev) または OTLP HTTP Exporter (otlphttp/dev) のいずれかを指定します。
      5
      有効なサービス CA ファイルを使用して TLS を有効にします。
      6
      テナント名を含むヘッダー。
      7
      OTLP gRPC Exporter (otlp/dev) または OTLP HTTP Exporter (otlphttp/dev) のいずれかを指定します。
      8
      CR の exporters セクションで指定したエクスポーター。

3.1.4. TempoStack インスタンスのインストール

TempoStack インスタンスは、Web コンソールまたはコマンドラインを使用してインストールできます。

3.1.4.1. Web コンソールを使用した TempoStack インスタンスのインストール

Web コンソールの Administrator ビューから TempoStack インスタンスをインストールできます。

前提条件

  • cluster-admin ロールを持つクラスター管理者として、OpenShift Container Platform Web コンソールにログインしている。
  • Red Hat OpenShift Dedicated の場合、dedicated-admin ロールを持つアカウントを使用してログインしている。
  • サポートされているプロバイダーによる必要なオブジェクトストレージ Red Hat OpenShift Data FoundationMinIOAmazon S3Azure Blob StorageGoogle Cloud Storage の設定が完了している。詳細は、「オブジェクトストレージのセットアップ」を参照してください。

    警告

    オブジェクトストレージは必須ですが、distributed tracing platform (Tempo) には含まれていません。distributed tracing platform (Tempo) をインストールする前に、サポートされているプロバイダーによるオブジェクトストレージを選択して設定する必要があります。

  • 1 つ以上のテナントを定義し、読み取りおよび書き込み権限を設定した。詳細は、「テナントの読み取り権限の設定」および「テナントの書き込み権限の設定」を参照してください。

手順

  1. Home Projects Create Project に移動して、後続のステップで作成する TempoStack インスタンス用に任意のプロジェクトを作成します。
  2. Workloads Secrets Create From YAML に移動して、TempoStack インスタンス用に作成したプロジェクトに、オブジェクトストレージバケットのシークレットを作成します。詳細は、「オブジェクトストレージのセットアップ」を参照してください。

    Amazon S3 および MinIO ストレージのシークレット例

    apiVersion: v1
    kind: Secret
    metadata:
      name: minio-test
    stringData:
      endpoint: http://minio.minio.svc:9000
      bucket: tempo
      access_key_id: tempo
      access_key_secret: <secret>
    type: Opaque

  3. TempoStack インスタンスを作成します。

    注記

    同じクラスター上の別々のプロジェクトに、複数の TempoStack インスタンスを作成できます。

    1. Operators Installed Operators に移動します。
    2. TempoStack Create TempoStack YAML view の順に選択します。
    3. YAML view で、TempoStack カスタムリソース (CR) をカスタマイズします。

      AWS S3 および MinIO ストレージと 2 つのテナント用の TempoStack CR の例

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack 1
      metadata:
        name: simplest
        namespace: <project_of_tempostack_instance> 2
      spec:
        storage: 3
          secret: 4
            name: <secret_name> 5
            type: <secret_provider> 6
        storageSize: <value>Gi 7
        resources:
          total:
            limits:
              memory: 2Gi
              cpu: 2000m
        tenants:
          mode: openshift 8
          authentication: 9
            - tenantName: dev 10
              tenantId: "1610b0c3-c509-4592-a256-a1871353dbfa" 11
            - tenantName: prod
              tenantId: "1610b0c3-c509-4592-a256-a1871353dbfb"
        template:
          gateway:
            enabled: true 12
          queryFrontend:
            jaegerQuery:
              enabled: true 13

      1
      この CR は、HTTP および OpenTelemetry Protocol (OTLP) 経由で Jaeger Thrift を受信するように設定された TempoStack デプロイメントを作成します。
      2
      TempoStack デプロイメント用に選択した namespace。
      3
      トレースを保存するためのストレージを指定します。
      4
      前提条件の 1 つとして設定したオブジェクトストレージ用に、ステップ 2 で作成したシークレット。
      5
      シークレットの metadata セクションにある name フィールドの値。たとえば、minio です。
      6
      この値には、Azure Blob Storage の場合は azure、Google Cloud Storage の場合は gcs、Amazon S3、MinIO、または Red Hat OpenShift Data Foundation の場合は s3 を使用できます。たとえば、s3 です。
      7
      Tempo Write-Ahead Logging (WAL) の永続ボリューム要求のサイズ。デフォルトは 10Gi です。たとえば、1Gi のように指定します。
      8
      値は openshift である必要があります。
      9
      テナントのリスト。
      10
      テナント名。データを取り込む際に X-Scope-OrgId ヘッダーで指定する必要があります。
      11
      テナントの一意の識別子。TempoStack デプロイメントのライフサイクル全体を通じて一意である必要があります。distributed tracing platform (Tempo) は、この ID を使用して、オブジェクトストレージ内のオブジェクトに接頭辞を付けます。UUID または tempoName フィールドの値を再利用できます。
      12
      認証と認可を実行するゲートウェイを有効にします。Jaeger UI は http://<gateway_ingress>/api/traces/v1/<tenant_name>/search で公開されます。
      13
      ルート経由でデータを視覚化する Jaeger UI を公開します。
    4. Create を選択します。

検証

  1. Project: ドロップダウンリストを使用して、TempoStack インスタンスのプロジェクトを選択します。
  2. Operators Installed Operators に移動して、TempoStack インスタンスの StatusCondition: Ready であることを確認します。
  3. Workloads Pods に移動して、TempoStack インスタンスのすべてのコンポーネント Pod が稼働していることを確認します。
  4. Tempo コンソールにアクセスします。

    1. Networking Routes に移動し、Ctrl+Ftempo を検索します。
    2. Location 列で URL を開き、Tempo コンソールにアクセスします。

      注記

      Tempo コンソールをインストールした直後は、Tempo コンソールにトレースデータは表示されません。

3.1.4.2. CLI を使用した TempoStack インスタンスのインストール

コマンドラインから TempoStack インスタンスをインストールできます。

前提条件

  • cluster-admin ロールを持つクラスター管理者によるアクティブな OpenShift CLI (oc) セッション。

    ヒント
    • OpenShift CLI (oc) のバージョンが最新であり、OpenShift Container Platform バージョンと一致していることを確認してください。
    • oc login コマンドを実行します。

      $ oc login --username=<your_username>
  • サポートされているプロバイダーによる必要なオブジェクトストレージ Red Hat OpenShift Data FoundationMinIOAmazon S3Azure Blob StorageGoogle Cloud Storage の設定が完了している。詳細は、「オブジェクトストレージのセットアップ」を参照してください。

    警告

    オブジェクトストレージは必須ですが、distributed tracing platform (Tempo) には含まれていません。distributed tracing platform (Tempo) をインストールする前に、サポートされているプロバイダーによるオブジェクトストレージを選択して設定する必要があります。

  • 1 つ以上のテナントを定義し、読み取りおよび書き込み権限を設定した。詳細は、「テナントの読み取り権限の設定」および「テナントの書き込み権限の設定」を参照してください。

手順

  1. 次のコマンドを実行して、後続の手順で作成する TempoStack インスタンス用に選択したプロジェクトを作成します。

    $ oc apply -f - << EOF
    apiVersion: project.openshift.io/v1
    kind: Project
    metadata:
      name: <project_of_tempostack_instance>
    EOF
  2. 次のコマンドを実行して、TempoStack インスタンス用に作成したプロジェクトでオブジェクトストレージバケットのシークレットを作成します。

    $ oc apply -f - << EOF
    <object_storage_secret>
    EOF

    詳細は、「オブジェクトストレージのセットアップ」を参照してください。

    Amazon S3 および MinIO ストレージのシークレット例

    apiVersion: v1
    kind: Secret
    metadata:
      name: minio-test
    stringData:
      endpoint: http://minio.minio.svc:9000
      bucket: tempo
      access_key_id: tempo
      access_key_secret: <secret>
    type: Opaque

  3. TempoStack インスタンス用に作成したプロジェクトに TempoStack インスタンスを作成します。

    注記

    同じクラスター上の別々のプロジェクトに、複数の TempoStack インスタンスを作成できます。

    1. TempoStack カスタムリソース (CR) をカスタマイズします。

      AWS S3 および MinIO ストレージと 2 つのテナント用の TempoStack CR の例

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack 1
      metadata:
        name: simplest
        namespace: <project_of_tempostack_instance> 2
      spec:
        storage: 3
          secret: 4
            name: <secret_name> 5
            type: <secret_provider> 6
        storageSize: <value>Gi 7
        resources:
          total:
            limits:
              memory: 2Gi
              cpu: 2000m
        tenants:
          mode: openshift 8
          authentication: 9
            - tenantName: dev 10
              tenantId: "1610b0c3-c509-4592-a256-a1871353dbfa" 11
            - tenantName: prod
              tenantId: "1610b0c3-c509-4592-a256-a1871353dbfb"
        template:
          gateway:
            enabled: true 12
          queryFrontend:
            jaegerQuery:
              enabled: true 13

      1
      この CR は、HTTP および OpenTelemetry Protocol (OTLP) 経由で Jaeger Thrift を受信するように設定された TempoStack デプロイメントを作成します。
      2
      TempoStack デプロイメント用に選択した namespace。
      3
      トレースを保存するためのストレージを指定します。
      4
      前提条件の 1 つとして設定したオブジェクトストレージ用に、ステップ 2 で作成したシークレット。
      5
      シークレットの metadata セクションにある name フィールドの値。たとえば、minio です。
      6
      この値には、Azure Blob Storage の場合は azure、Google Cloud Storage の場合は gcs、Amazon S3、MinIO、または Red Hat OpenShift Data Foundation の場合は s3 を使用できます。たとえば、s3 です。
      7
      Tempo Write-Ahead Logging (WAL) の永続ボリューム要求のサイズ。デフォルトは 10Gi です。たとえば、1Gi のように指定します。
      8
      値は openshift である必要があります。
      9
      テナントのリスト。
      10
      テナント名。データを取り込む際に X-Scope-OrgId ヘッダーで指定する必要があります。
      11
      テナントの一意の識別子。TempoStack デプロイメントのライフサイクル全体を通じて一意である必要があります。distributed tracing platform (Tempo) は、この ID を使用して、オブジェクトストレージ内のオブジェクトに接頭辞を付けます。UUID または tempoName フィールドの値を再利用できます。
      12
      認証と認可を実行するゲートウェイを有効にします。Jaeger UI は http://<gateway_ingress>/api/traces/v1/<tenant_name>/search で公開されます。
      13
      ルート経由でデータを視覚化する Jaeger UI を公開します。
    2. 次のコマンドを実行して、カスタマイズされた CR を適用します。

      $ oc apply -f - << EOF
      <tempostack_cr>
      EOF

検証

  1. 次のコマンドを実行して、すべての TempoStack componentsstatusRunningconditionstype: Ready になっていることを確認します。

    $ oc get tempostacks.tempo.grafana.com simplest -o yaml
  2. 次のコマンドを実行して、すべての TempoStack コンポーネント Pod が稼働していることを確認します。

    $ oc get pods
  3. Tempo コンソールにアクセスします。

    1. 以下のコマンドを実行してルートの詳細をクエリーします。

      $ oc get route
    2. Web ブラウザーで https://<route_from_previous_step> を開きます。

      注記

      Tempo コンソールをインストールした直後は、Tempo コンソールにトレースデータは表示されません。

3.1.5. TempoMonolithic インスタンスのインストール

重要

TempoMonolithic インスタンスはテクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

TempoMonolithic インスタンスは、Web コンソールまたはコマンドラインを使用してインストールできます。

TempoMonolithic カスタムリソース (CR) は、モノリシックモードで Tempo デプロイメントを作成します。コンパクター、ディストリビューター、インジェスター、クエリアー、クエリーフロントエンドなど、Tempo デプロイメントのすべてのコンポーネントが、単一のコンテナーに含まれます。

TempoMonolithic インスタンスは、インメモリーストレージ、永続ボリューム、またはオブジェクトストレージへのトレースの保存をサポートしています。

モノリシックモードでの Tempo デプロイメントは、小規模なデプロイメント、デモンストレーション、テスト、および Red Hat OpenShift distributed tracing platform (Jaeger) オールインワンデプロイメントの移行パスとして推奨されます。

注記

Tempo のモノリシックデプロイメントは水平方向にスケーリングできません。水平スケーリングが必要な場合は、マイクロサービスモードでの Tempo デプロイメント用の TempoStack CR を使用してください。

3.1.5.1. Web コンソールを使用した TempoMonolithic インスタンスのインストール

重要

TempoMonolithic インスタンスはテクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

Web コンソールの Administrator ビューから TempoMonolithic インスタンスをインストールできます。

前提条件

  • cluster-admin ロールを持つクラスター管理者として、OpenShift Container Platform Web コンソールにログインしている。
  • Red Hat OpenShift Dedicated の場合、dedicated-admin ロールを持つアカウントを使用してログインしている。
  • 1 つ以上のテナントを定義し、読み取りおよび書き込み権限を設定した。詳細は、「テナントの読み取り権限の設定」および「テナントの書き込み権限の設定」を参照してください。

手順

  1. Home Projects Create Project に移動して、後続のステップで作成する TempoMonolithic インスタンス用に任意のプロジェクトを作成します。
  2. トレースの保存に使用するサポート対象のストレージのタイプ (インメモリーストレージ、永続ボリューム、オブジェクトストレージ) を決定します。

    重要

    オブジェクトストレージは、distributed tracing platform (Tempo) には含まれていません。そのため、サポートされているプロバイダー (Red Hat OpenShift Data FoundationMinIOAmazon S3Azure Blob Storage、または Google Cloud Storage) によるオブジェクトストアを設定する必要があります。

    また、オブジェクトストレージを選択するには、TempoMonolithic インスタンス用に作成したプロジェクトにオブジェクトストレージバケットのシークレットを作成する必要があります。これは、Workloads Secrets Create From YAML で実行できます。

    詳細は、「オブジェクトストレージのセットアップ」を参照してください。

    Amazon S3 および MinIO ストレージのシークレット例

    apiVersion: v1
    kind: Secret
    metadata:
      name: minio-test
    stringData:
      endpoint: http://minio.minio.svc:9000
      bucket: tempo
      access_key_id: tempo
      access_key_secret: <secret>
    type: Opaque

  3. TempoMonolithic インスタンスを作成します。

    注記

    同じクラスター上の別々のプロジェクトに複数の TempoMonolithic インスタンスを作成できます。

    1. Operators Installed Operators に移動します。
    2. TempoMonolithic Create TempoMonolithic YAML view を選択します。
    3. YAML view で、TempoMonolithic カスタムリソース (CR) をカスタマイズします。

      TempoMonolithic CR の例

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoMonolithic 1
      metadata:
        name: <metadata_name>
        namespace: <project_of_tempomonolithic_instance> 2
      spec:
        storage: 3
          traces:
            backend: <supported_storage_type> 4
            size: <value>Gi 5
            s3: 6
              secret: <secret_name> 7
          tls: 8
            enabled: true
            caName: <ca_certificate_configmap_name> 9
        jaegerui:
          enabled: true 10
          route:
            enabled: true 11
        resources: 12
          total:
            limits:
              memory: <value>Gi
              cpu: <value>m
        multitenancy:
          enabled: true
          mode: openshift
          authentication: 13
            - tenantName: dev 14
              tenantId: "1610b0c3-c509-4592-a256-a1871353dbfa" 15
            - tenantName: prod
              tenantId: "1610b0c3-c509-4592-a256-a1871353dbfb"

      1
      この CR は、OTLP プロトコルでトレースの取り込みを行う TempoMonolithic デプロイメントを作成します。
      2
      TempoMonolithic デプロイメント用に選択した namespace。
      3
      トレースを保存するためのストレージを指定します。
      4
      トレースを保存するストレージのタイプ (インメモリーストレージ、永続ボリューム、またはオブジェクトストレージ)。永続ボリュームの値は pv です。オブジェクトストレージの値は、使用するオブジェクトストアのタイプに応じて、s3gcs、または azure が受け入れられます。デフォルト値は、tmpfs インメモリーストレージの memory です。これは、Pod がシャットダウンするとデータが保持されないため、開発、テスト、デモ、および概念検証用の環境にのみ適しています。
      5
      メモリーサイズ: インメモリーストレージの場合、これは tmpfs ボリュームのサイズを意味します。デフォルトは 2Gi です。永続ボリュームの場合、これは永続ボリューム要求のサイズを意味します。デフォルトは 10Gi です。オブジェクトストレージの場合、これは Tempo Write-Ahead Logging (WAL) の永続ボリューム要求のサイズを意味し、デフォルトは 10Gi です。
      6
      オプション: オブジェクトストレージの場合、オブジェクトストレージのタイプ。使用するオブジェクトストアのタイプに応じて、s3gcs、および azure が値として受け入れられます。
      7
      オプション: オブジェクトストレージの場合、ストレージシークレットの metadata 内の name の値。ストレージシークレットは、TempoMonolithic インスタンスと同じ namespace にあり、「表 1. 必要なシークレットパラメーター」(「オブジェクトストレージのセットアップ」セクションを参照) で指定えているフィールドを含んでいる必要があります。
      8
      オプション:
      9
      オプション: CA 証明書を含む ConfigMap オブジェクトの名前。
      10
      ルート経由でデータを視覚化する Jaeger UI を公開します。
      11
      Jaeger UI のルートの作成を有効にします。
      12
      オプション:
      13
      テナントをリスト表示します。
      14
      データを取り込む際の X-Scope-OrgId ヘッダーからのテナント名。
      15
      テナントの一意の識別子。TempoMonolithic デプロイメントのライフサイクル全体を通じて一意である必要があります。この ID は、オブジェクトストレージ内のオブジェクトの接頭辞として追加されます。UUID または tempoName フィールドの値を再利用できます。
    4. Create を選択します。

検証

  1. Project: ドロップダウンリストを使用して、TempoMonolithic インスタンスのプロジェクトを選択します。
  2. Operator Installed Operator に移動して、TempoMonolithic インスタンスの StatusCondition: Ready であることを確認します。
  3. Workloads Pod に移動して、TempoMonolithic インスタンスの Pod が実行中であることを確認します。
  4. Jaeger UI にアクセスします。

    1. Networking Routes に移動し、Ctrl+F を押して jaegerui を検索します。

      注記

      Jaeger UI は、tempo-<metadata_name_of_TempoMonolithic_CR>-jaegerui ルートを使用します。

    2. Location 列で URL を開き、Jaeger UI にアクセスします。
  5. TempoMonolithic インスタンスの Pod の準備ができたら、クラスター内の tempo-<metadata_name_of_TempoMonolithic_CR>:4317 (OTLP/gRPC) および tempo-<metadata_name_of_TempoMonolithic_CR>:4318 (OTLP/HTTP) エンドポイントにトレースを送信できます。

    Tempo API は、クラスター内の tempo-<metadata_name_of_TempoMonolithic_CR>:3200 エンドポイントで利用できます。

3.1.5.2. CLI を使用した TempoMonolithic インスタンスのインストール

重要

TempoMonolithic インスタンスはテクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

コマンドラインから TempoMonolithic インスタンスをインストールできます。

前提条件

  • cluster-admin ロールを持つクラスター管理者によるアクティブな OpenShift CLI (oc) セッション。

    ヒント
    • OpenShift CLI (oc) のバージョンが最新であり、OpenShift Container Platform バージョンと一致していることを確認してください。
    • oc login コマンドを実行します。

      $ oc login --username=<your_username>
  • 1 つ以上のテナントを定義し、読み取りおよび書き込み権限を設定した。詳細は、「テナントの読み取り権限の設定」および「テナントの書き込み権限の設定」を参照してください。

手順

  1. 次のコマンドを実行して、後続のステップで作成する TempoMonolithic インスタンス用に任意のプロジェクトを作成します。

    $ oc apply -f - << EOF
    apiVersion: project.openshift.io/v1
    kind: Project
    metadata:
      name: <project_of_tempomonolithic_instance>
    EOF
  2. トレースの保存に使用するサポート対象のストレージのタイプ (インメモリーストレージ、永続ボリューム、オブジェクトストレージ) を決定します。

    重要

    オブジェクトストレージは、distributed tracing platform (Tempo) には含まれていません。そのため、サポートされているプロバイダー (Red Hat OpenShift Data FoundationMinIOAmazon S3Azure Blob Storage、または Google Cloud Storage) によるオブジェクトストアを設定する必要があります。

    また、オブジェクトストレージを選択するには、TempoMonolithic インスタンス用に作成したプロジェクトにオブジェクトストレージバケットのシークレットを作成する必要があります。これを行うには、次のコマンドを実行します。

    $ oc apply -f - << EOF
    <object_storage_secret>
    EOF

    詳細は、「オブジェクトストレージのセットアップ」を参照してください。

    Amazon S3 および MinIO ストレージのシークレット例

    apiVersion: v1
    kind: Secret
    metadata:
      name: minio-test
    stringData:
      endpoint: http://minio.minio.svc:9000
      bucket: tempo
      access_key_id: tempo
      access_key_secret: <secret>
    type: Opaque

  3. TempoMonolithic インスタンス用に作成したプロジェクト内に TempoMonolithic インスタンスを作成します。

    ヒント

    同じクラスター上の別々のプロジェクトに複数の TempoMonolithic インスタンスを作成できます。

    1. TempoMonolithic カスタムリソース (CR) をカスタマイズします。

      TempoMonolithic CR の例

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoMonolithic 1
      metadata:
        name: <metadata_name>
        namespace: <project_of_tempomonolithic_instance> 2
      spec:
        storage: 3
          traces:
            backend: <supported_storage_type> 4
            size: <value>Gi 5
            s3: 6
              secret: <secret_name> 7
          tls: 8
            enabled: true
            caName: <ca_certificate_configmap_name> 9
        jaegerui:
          enabled: true 10
          route:
            enabled: true 11
        resources: 12
          total:
            limits:
              memory: <value>Gi
              cpu: <value>m
        multitenancy:
          enabled: true
          mode: openshift
          authentication: 13
            - tenantName: dev 14
              tenantId: "1610b0c3-c509-4592-a256-a1871353dbfa" 15
            - tenantName: prod
              tenantId: "1610b0c3-c509-4592-a256-a1871353dbfb"

      1
      この CR は、OTLP プロトコルでトレースの取り込みを行う TempoMonolithic デプロイメントを作成します。
      2
      TempoMonolithic デプロイメント用に選択した namespace。
      3
      トレースを保存するためのストレージを指定します。
      4
      トレースを保存するストレージのタイプ (インメモリーストレージ、永続ボリューム、またはオブジェクトストレージ)。永続ボリュームの値は pv です。オブジェクトストレージの値は、使用するオブジェクトストアのタイプに応じて、s3gcs、または azure が受け入れられます。デフォルト値は、tmpfs インメモリーストレージの memory です。これは、Pod がシャットダウンするとデータが保持されないため、開発、テスト、デモ、および概念検証用の環境にのみ適しています。
      5
      メモリーサイズ: インメモリーストレージの場合、これは tmpfs ボリュームのサイズを意味します。デフォルトは 2Gi です。永続ボリュームの場合、これは永続ボリューム要求のサイズを意味します。デフォルトは 10Gi です。オブジェクトストレージの場合、これは Tempo Write-Ahead Logging (WAL) の永続ボリューム要求のサイズを意味し、デフォルトは 10Gi です。
      6
      オプション: オブジェクトストレージの場合、オブジェクトストレージのタイプ。使用するオブジェクトストアのタイプに応じて、s3gcs、および azure が値として受け入れられます。
      7
      オプション: オブジェクトストレージの場合、ストレージシークレットの metadata 内の name の値。ストレージシークレットは、TempoMonolithic インスタンスと同じ namespace にあり、「表 1. 必要なシークレットパラメーター」(「オブジェクトストレージのセットアップ」セクションを参照) で指定えているフィールドを含んでいる必要があります。
      8
      オプション:
      9
      オプション: CA 証明書を含む ConfigMap オブジェクトの名前。
      10
      ルート経由でデータを視覚化する Jaeger UI を公開します。
      11
      Jaeger UI のルートの作成を有効にします。
      12
      オプション:
      13
      テナントをリスト表示します。
      14
      データを取り込む際の X-Scope-OrgId ヘッダーからのテナント名。
      15
      テナントの一意の識別子。TempoMonolithic デプロイメントのライフサイクル全体を通じて一意である必要があります。この ID は、オブジェクトストレージ内のオブジェクトの接頭辞として追加されます。UUID または tempoName フィールドの値を再利用できます。
    2. 次のコマンドを実行して、カスタマイズされた CR を適用します。

      $ oc apply -f - << EOF
      <tempomonolithic_cr>
      EOF

検証

  1. 次のコマンドを実行して、すべての TempoMonolithic componentsstatusRunning であり、conditionstype: Ready であることを確認します。

    $ oc get tempomonolithic.tempo.grafana.com <metadata_name_of_tempomonolithic_cr> -o yaml
  2. 次のコマンドを実行して、TempoMonolithic インスタンスの Pod が実行中であることを確認します。

    $ oc get pods
  3. Jaeger UI にアクセスします。

    1. 次のコマンドを実行して、tempo-<metadata_name_of_tempomonolithic_cr>-jaegerui ルートのルート詳細をクエリーします。

      $ oc get route
    2. Web ブラウザーで https://<route_from_previous_step> を開きます。
  4. TempoMonolithic インスタンスの Pod の準備ができたら、クラスター内の tempo-<metadata_name_of_tempomonolithic_cr>:4317 (OTLP/gRPC) および tempo-<metadata_name_of_tempomonolithic_cr>:4318 (OTLP/HTTP) エンドポイントにトレースを送信できます。

    Tempo API は、クラスター内の tempo-<metadata_name_of_tempomonolithic_cr>:3200 エンドポイントで利用できます。

3.1.6. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.