3.2. オブジェクトストレージのセットアップ
サポートされているオブジェクトストレージを設定する際に、次の設定パラメーターを使用できます。
オブジェクトストレージを使用するには、TempoStack または TempoMonolithic インスタンスをデプロイする前に、サポートされているオブジェクトストアを設定し、オブジェクトストアの認証情報のシークレットを作成する必要があります。
| ストレージプロバイダー |
|---|
| Secret パラメーター |
|
|
| MinIO |
| MinIO Operator を参照してください。
|
| Amazon S3 |
|
|
| Security Token Service (STS) を使用する Amazon S3 |
|
|
| Microsoft Azure Blob Storage |
|
|
| Google Cloud Storage on Google Cloud |
|
|
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 がインストールおよび設定されている。
手順
- AWS S3 バケットを作成します。
次のステップで作成する 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" ] } } } ] }ヒント次のコマンドを実行して、OIDC プロバイダーの値を取得することもできます。
$ oc get authentication cluster -o json | jq -r '.spec.serviceAccountIssuer' | sed 's~http[s]*://~~g'作成した
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作成した AWS IAM ロールに AWS IAM ポリシーをアタッチします。これを行うには、次のコマンドを実行します。
$ aws iam attach-role-policy \ --role-name "tempo-s3-access" \ --policy-arn "arn:aws:iam::aws:policy/AmazonS3FullAccess"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 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オブジェクトストレージシークレットが作成されたら、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-cco2 # ...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-cco2 # ...
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 ストレージコンテナーを作成している。
手順
次のコマンドを実行して、Azure マネージドアイデンティティーを作成します。
$ az identity create \ --name <identity_name> \1 --resource-group <resource_group> \2 --location <region> \3 --subscription <subscription_id>4 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 - 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.serviceAccountIssuerDistributed 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作成された Azure マネージドアイデンティティーの Azure サービスプリンシパルアイデンティティーに、Storage Blob Data Contributor ロールを割り当てます。これを行うには、次のコマンドを実行します。
$ az role assignment create \ --assignee <assignee_name> \1 --role "Storage Blob Data Contributor" \ --scope "/subscriptions/<subscription_id>- 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'`ステップ 1 で作成した Azure マネージドアイデンティティーのクライアント ID を取得します。
CLIENT_ID=$(az identity show \ --name <identity_name> \1 --resource-group <resource_group> \2 --query clientId \ -o tsv)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 オブジェクトストレージシークレットが作成されたら、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 # ...- 1
- 前のステップで作成したシークレット。
TempoMonolithicカスタムリソースの例apiVersion: tempo.grafana.com/v1alpha1 kind: TempoMonolithic metadata: name: <name> namespace: <namespace> spec: # ... storage: traces: backend: azure azure: secret: <secret_name>1 # ...- 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 の最新バージョンがインストールされている。
手順
- Google Cloud に GCS バケットを作成します。
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)必要な Google Cloud ロールを、プロジェクトレベルで作成されたサービスアカウントにバインドします。これを行うには、次のコマンドを実行します。
$ gcloud projects add-iam-policy-binding <project_id> \ --member "serviceAccount:$SERVICE_ACCOUNT_EMAIL" \ --role "roles/storage.objectAdmin"クラスターに関連付けられている 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$//')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- 1
$SERVICE_ACCOUNT_EMAILは、ステップ 2 のコマンドの出力です。
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 次のコマンドを実行して、正しいオーディエンスを取得します。
$ gcloud iam workload-identity-pools providers describe "$PROVIDER_NAME" --format='value(oidc.allowedAudiences[0])'次のコマンドを実行して、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 オブジェクトストレージシークレットが作成されたら、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 # ...- 1
- 前のステップで作成したシークレット。
TempoMonolithicカスタムリソースの例apiVersion: tempo.grafana.com/v1alpha1 kind: TempoMonolithic metadata: name: <name> namespace: <namespace> spec: # ... storage: traces: backend: gcs gcs: secret: <secret_name>1 # ...- 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 のインスタンスを作成した。
手順
- IBM Cloud でオブジェクトストアバケットを作成します。
IBM Cloud で、次のコマンドを実行して、オブジェクトストアバケットに接続するためのサービスキーを作成します。
$ ibmcloud resource service-key-create <tempo_bucket> Writer \ --instance-name <tempo_bucket> --parameters '{"HMAC":true}'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>"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: OpaqueOpenShift Container Platform で、
TempoStackカスタムリソースのストレージセクションを次のように設定します。apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack # ... spec: # ... storage: secret: name: <ibm_cos_secret>1 type: s3 # ...- 1
- IBM Cloud Storage のアクセスキーとシークレットキーが含まれるシークレットの名前。