3.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.2.1. Security Token Service を使用する Amazon S3 ストレージの設定

Security Token Service (STS) と AWS Command Line Interface (AWS CLI) を使用して、Amazon S3 ストレージをセットアップできます。必要に応じて、Cloud Credential Operator (CCO) を使用することもできます。

重要

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

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

前提条件

  • AWS CLI の最新バージョンがインストールされている。
  • CCO を使用する場合は、クラスターに CCO がインストールおよび設定されている。

手順

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

    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_tempo>:tempo-<tempo_custom_resource_name>" 
    2
    
                  "system:serviceaccount:<openshift_project_for_tempo>:tempo-<tempo_custom_resource_name>-query-frontend"
               ]
             }
           }
         }
        ]
    }
    Copy to Clipboard

    1
    OpenShift Container Platform で設定した OpenID Connect (OIDC) プロバイダー。
    2
    TempoStack または TempoMonolithic インスタンスのいずれかを作成する namespace。<tempo_custom_resource_name> は、TempoStack または TempoMonolithic カスタムリソースで定義する metadata 名に置き換えます。
    ヒント

    次のコマンドを実行して、OIDC プロバイダーの値を取得することもできます。

    $ oc get authentication cluster -o json | jq -r '.spec.serviceAccountIssuer' | sed 's~http[s]*://~~g'
    Copy to Clipboard
  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
    Copy to Clipboard
  4. 作成した AWS IAM ロールに AWS IAM ポリシーをアタッチします。これを行うには、次のコマンドを実行します。

    $ aws iam attach-role-policy \
          --role-name "tempo-s3-access" \
          --policy-arn "arn:aws:iam::aws:policy/AmazonS3FullAccess"
    Copy to Clipboard
  5. CCO を使用していない場合は、このステップをスキップしてください。CCO を使用している場合は、Tempo Operator のクラウドプロバイダー環境を設定します。これを行うには、次のコマンドを実行します。

    $ oc patch subscription <tempo_operator_sub> \ 
    1
    
              -n <tempo_operator_namespace> \ 
    2
    
              --type='merge' -p '{"spec": {"config": {"env": [{"name": "ROLEARN", "value": "'"<role_arn>"'"}]}}}' 
    3
    Copy to Clipboard
    1
    Tempo Operator サブスクリプションの名前。
    2
    Tempo Operator の namespace。
    3
    AWS STS では、Tempo Operator サブスクリプションに ROLEARN 環境変数を追加する必要があります。<role_arn> 値として、ステップ 3 で作成した AWS IAM ロールの Amazon Resource Name (ARN) を追加します。
  6. OpenShift Container Platform で、次のように、キーを使用してオブジェクトストレージシークレットを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: <secret_name>
    stringData:
      bucket: <s3_bucket_name>
      region: <s3_region>
      role_arn: <s3_role_arn>
    type: Opaque
    Copy to Clipboard
  7. オブジェクトストレージシークレットが作成されたら、Distributed Tracing Platform インスタンスの関連するカスタムリソースを次のように更新します。

    TempoStack カスタムリソースの例

    apiVersion: tempo.grafana.com/v1alpha1
    kind: TempoStack
    metadata:
      name: <name>
      namespace: <namespace>
    spec:
    # ...
      storage:
        secret: 
    1
    
          name: <secret_name>
          type: s3
          credentialMode: token-cco 
    2
    
    # ...
    Copy to Clipboard

    1
    前のステップで作成したシークレット。
    2
    CCO を使用していない場合は、この行を省略します。CCO を使用している場合は、token-cco 値とともにこのパラメーターを追加します。

    TempoMonolithic カスタムリソースの例

    apiVersion: tempo.grafana.com/v1alpha1
    kind: TempoMonolithic
    metadata:
      name: <name>
      namespace: <namespace>
    spec:
    # ...
      storage:
        traces:
          backend: s3
          s3:
            secret: <secret_name> 
    1
    
            credentialMode: token-cco 
    2
    
    # ...
    Copy to Clipboard

    1
    前のステップで作成したシークレット。
    2
    CCO を使用していない場合は、この行を省略します。CCO を使用している場合は、token-cco 値とともにこのパラメーターを追加します。

3.2.2. Security Token Service を使用した Azure ストレージの設定

Azure Command Line Interface (Azure CLI) を使用して、Security Token Service (STS) を備えた Azure ストレージをセットアップできます。

重要

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

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

前提条件

  • Azure CLI の最新バージョンがインストールされている。
  • Azure ストレージアカウントを作成している。
  • Azure Blob ストレージコンテナーを作成している。

手順

  1. 次のコマンドを実行して、Azure マネージドアイデンティティーを作成します。

    $ az identity create \
      --name <identity_name> \ 
    1
    
      --resource-group <resource_group> \ 
    2
    
      --location <region> \ 
    3
    
      --subscription <subscription_id> 
    4
    Copy to Clipboard
    1
    マネージドアイデンティティーに選択した名前。
    2
    アイデンティティーを作成する Azure リソースグループ。
    3
    Azure リージョン。リソースグループと同じリージョンである必要があります。
    4
    Azure サブスクリプション ID。
  2. Query Frontend を除く Distributed Tracing Platform のすべてのコンポーネントで使用するために、OpenShift Container Platform サービスアカウントのフェデレーションアイデンティティー認証情報を作成します。これを行うには、次のコマンドを実行します。

    $ az identity federated-credential create \ 
    1
    
      --name <credential_name> \ 
    2
    
      --identity-name <identity_name> \
      --resource-group <resource_group> \
      --issuer <oidc_provider> \ 
    3
    
      --subject <tempo_service_account_subject> \ 
    4
    
      --audiences <audience> 
    5
    Copy to Clipboard
    1
    フェデレーションアイデンティティー認証情報を使用すると、OpenShift Container Platform サービスアカウントは、シークレットを保存したり、Azure サービスプリンシパルアイデンティティーを使用したりすることなく、Azure マネージドアイデンティティーとして認証できます。
    2
    フェデレーション認証情報に選択した名前。
    3
    クラスターの OpenID Connect (OIDC) プロバイダーの URL。
    4
    system:serviceaccount:<namespace>:tempo-<tempostack_instance_name> 形式のクラスターのサービスアカウントサブジェクト。
    5
    フェデレーションアイデンティティー認証情報に対して発行されたトークンを検証するために使用される、想定されるオーディエンス。これは通常、api://AzureADTokenExchange に設定されます。
    ヒント

    次のコマンドを実行すると、クラスターの OpenID Connect (OIDC) 発行者の URL を取得できます。

    $ oc get authentication cluster -o json | jq -r .spec.serviceAccountIssuer
    Copy to Clipboard
  3. Distributed Tracing Platform の Query Frontend コンポーネントで使用するために、OpenShift Container Platform サービスアカウントのフェデレーションアイデンティティー認証情報を作成します。これを行うには、次のコマンドを実行します。

    $ az identity federated-credential create \ 
    1
    
      --name <credential_name>-frontend \ 
    2
    
      --identity-name <identity_name> \
      --resource-group <resource_group> \
      --issuer <cluster_issuer> \
      --subject <tempo_service_account_query_frontend_subject> \ 
    3
    
      --audiences <audience> | jq
    Copy to Clipboard
    1
    フェデレーションアイデンティティー認証情報を使用すると、OpenShift Container Platform サービスアカウントは、シークレットを保存したり、Azure サービスプリンシパルアイデンティティーを使用したりすることなく、Azure マネージドアイデンティティーとして認証できます。
    2
    フロントエンドフェデレーションアイデンティティー認証情報に選択した名前。
    3
    system:serviceaccount:<namespace>:tempo-<tempostack_instance_name> 形式のクラスターのサービスアカウントサブジェクト。
  4. 作成された Azure マネージドアイデンティティーの Azure サービスプリンシパルアイデンティティーに、Storage Blob Data Contributor ロールを割り当てます。これを行うには、次のコマンドを実行します。

    $ az role assignment create \
      --assignee <assignee_name> \ 
    1
    
      --role "Storage Blob Data Contributor" \
      --scope "/subscriptions/<subscription_id>
    Copy to Clipboard
    1
    ステップ 1 で作成した Azure マネージドアイデンティティーの Azure サービスプリンシパルアイデンティティー。
    ヒント

    次のコマンドを実行すると、<assignee_name> の値を取得できます。

    $ az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'" | jq -r --arg idName <identity_name> '.[] | select(.displayName == $idName) | .appId'`
    Copy to Clipboard
  5. ステップ 1 で作成した Azure マネージドアイデンティティーのクライアント ID を取得します。

    CLIENT_ID=$(az identity show \
      --name <identity_name> \ 
    1
    
      --resource-group <resource_group> \ 
    2
    
      --query clientId \
      -o tsv)
    Copy to Clipboard
    1
    ステップ 1 の <identity_name> 値をコピーして貼り付けます。
    2
    ステップ 1 の <resource_group> 値をコピーして貼り付けます。
  6. Azure Workload Identity Federation (WIF) 用の OpenShift Container Platform シークレットを作成します。これを行うには、次のコマンドを実行します。

    $ oc create -n <tempo_namespace> secret generic azure-secret \
      --from-literal=container=<azure_storage_azure_container> \ 
    1
    
      --from-literal=account_name=<azure_storage_azure_accountname> \ 
    2
    
      --from-literal=client_id=<client_id> \ 
    3
    
      --from-literal=audience=<audience> \ 
    4
    
      --from-literal=tenant_id=<tenant_id> 
    5
    Copy to Clipboard
    1
    Azure Blob Storage コンテナーの名前。
    2
    Azure Storage アカウントの名前。
    3
    前のステップで取得したマネージドアイデンティティーのクライアント ID。
    4
    オプション: デフォルトは api://AzureADTokenExchange です。
    5
    Azure テナント ID。
  7. オブジェクトストレージシークレットが作成されたら、Distributed Tracing Platform インスタンスの関連するカスタムリソースを次のように更新します。

    TempoStack カスタムリソースの例

    apiVersion: tempo.grafana.com/v1alpha1
    kind: TempoStack
    metadata:
      name: <name>
      namespace: <namespace>
    spec:
    # ...
      storage:
        secret: 
    1
    
          name: <secret_name>
          type: azure
    # ...
    Copy to Clipboard

    1
    前のステップで作成したシークレット。

    TempoMonolithic カスタムリソースの例

    apiVersion: tempo.grafana.com/v1alpha1
    kind: TempoMonolithic
    metadata:
      name: <name>
      namespace: <namespace>
    spec:
    # ...
      storage:
        traces:
          backend: azure
          azure:
            secret: <secret_name> 
    1
    
    # ...
    Copy to Clipboard

    1
    前のステップで作成したシークレット。

3.2.3. Security Token Service を使用した Google Cloud ストレージのセットアップ

Google Cloud CLI を使用して、Security Token Service (STS) を利用する Google Cloud Storage (GCS) をセットアップできます。

重要

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

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

前提条件

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

手順

  1. Google Cloud Platform (GCP) に GCS バケットを作成します。
  2. Google の Identity and Access Management (IAM) を使用して、サービスアカウントを作成または再利用します。

    SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts create <iam_service_account_name> \ 
    1
    
        --display-name="Tempo Account" \
        --project <project_id>  \ 
    2
    
        --format='value(email)' \
        --quiet)
    Copy to Clipboard
    1
    GCP 上のサービスアカウントの名前。
    2
    GCP 上のサービスアカウントのプロジェクト ID。
  3. 必要な GCP ロールを、プロジェクトレベルで作成されたサービスアカウントにバインドします。これを行うには、次のコマンドを実行します。

    $ gcloud projects add-iam-policy-binding <project_id> \
        --member "serviceAccount:$SERVICE_ACCOUNT_EMAIL" \
        --role "roles/storage.objectAdmin"
    Copy to Clipboard
  4. クラスターに関連付けられている Google Cloud Workload Identity Pool の POOL_ID 値を取得します。この値を取得する方法は環境によって異なるため、次のコマンドは単なる例です。

    $ OIDC_ISSUER=$(oc get authentication.config cluster -o jsonpath='{.spec.serviceAccountIssuer}') \
    &&
      POOL_ID=$(echo "$OIDC_ISSUER" | awk -F'/' '{print $NF}' | sed 's/-oidc$//')
    Copy to Clipboard
  5. IAM ポリシーバインディングを追加します。これを行うには、次のコマンドを実行します。

    $ gcloud iam service-accounts add-iam-policy-binding "$SERVICE_ACCOUNT_EMAIL" \ 
    1
    
      --role="roles/iam.workloadIdentityUser" \
      --member="principal://iam.googleapis.com/projects/<project_number>/locations/global/workloadIdentityPools/<pool_id>/subject/system:serviceaccount:<tempo_namespace>:tempo-<tempo_name>" \
      --project=<project_id> \
      --quiet \
    &&
      gcloud iam service-accounts add-iam-policy-binding "$SERVICE_ACCOUNT_EMAIL" \
      --role="roles/iam.workloadIdentityUser" \
      --member="principal://iam.googleapis.com/projects/<project_number>/locations/global/workloadIdentityPools/<pool_id>/subject/system:serviceaccount:<tempo_namespace>:tempo-<tempo_name>-query-frontend" \
      --project=<project_id> \
      --quiet
    &&
      gcloud storage buckets add-iam-policy-binding "gs://$BUCKET_NAME" \
      --role="roles/storage.admin" \
      --member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \
      --condition=None
    Copy to Clipboard
    1
    $SERVICE_ACCOUNT_EMAIL は、ステップ 2 のコマンドの出力です。
  6. TempoStack カスタムリソースで使用するストレージシークレットの key.json キーの認証情報ファイルを作成します。これを行うには、次のコマンドを実行します。

    $ gcloud iam workload-identity-pools create-cred-config \
        "projects/<project_number>/locations/global/workloadIdentityPools/<pool_id>/providers/<provider_id>" \
        --service-account="$SERVICE_ACCOUNT_EMAIL" \
        --credential-source-file=/var/run/secrets/storage/serviceaccount/token \ 
    1
    
        --credential-source-type=text \
        --output-file=<output_file_path> 
    2
    Copy to Clipboard
    1
    Operator はこのパスからトークンをマウントするため、credential-source-file パラメーターは常に /var/run/secrets/storage/serviceaccount/token パスを指している必要があります。
    2
    出力ファイルを保存するためのパス。
  7. 次のコマンドを実行して、正しいオーディエンスを取得します。

    $ gcloud iam workload-identity-pools providers describe "$PROVIDER_NAME" --format='value(oidc.allowedAudiences[0])'
    Copy to Clipboard
  8. 次のコマンドを実行して、Distributed Tracing Platform のストレージシークレットを作成します。

    $ oc -n <tempo_namespace> create secret generic gcs-secret \
      --from-literal=bucketname="<bucket_name>" \ 
    1
    
      --from-literal=audience="<audience>" \      
    2
    
      --from-file=key.json=<output_file_path>    
    3
    Copy to Clipboard
    1
    Google Cloud Storage のバケット名。
    2
    前のステップで取得したオーディエンス。
    3
    ステップ 6 で作成した認証情報ファイル。
  9. オブジェクトストレージシークレットが作成されたら、Distributed Tracing Platform インスタンスの関連するカスタムリソースを次のように更新します。

    TempoStack カスタムリソースの例

    apiVersion: tempo.grafana.com/v1alpha1
    kind: TempoStack
    metadata:
      name: <name>
      namespace: <namespace>
    spec:
    # ...
      storage:
        secret: 
    1
    
          name: <secret_name>
          type: gcs
    # ...
    Copy to Clipboard

    1
    前のステップで作成したシークレット。

    TempoMonolithic カスタムリソースの例

    apiVersion: tempo.grafana.com/v1alpha1
    kind: TempoMonolithic
    metadata:
      name: <name>
      namespace: <namespace>
    spec:
    # ...
      storage:
        traces:
          backend: gcs
          gcs:
            secret: <secret_name> 
    1
    
    # ...
    Copy to Clipboard

    1
    前のステップで作成したシークレット。

3.2.4. 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}'
    Copy to Clipboard
  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>"
    Copy to Clipboard
  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
    Copy to Clipboard
  5. OpenShift Container Platform で、TempoStack カスタムリソースのストレージセクションを次のように設定します。

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

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat