第3章 distributed tracing platform (Tempo)
3.1. インストール
distributed tracing platform (Tempo) のインストール手順は以下のとおりです。
- Tempo Operator をインストールします。
- サポートされているオブジェクトストアを設定し、オブジェクトストアの認証情報のシークレットを作成します。
- 権限とテナントを設定します。
ユースケースに応じて次のデプロイメントを選択してインストールします。
-
マイクロサービスモードの
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 Foundation、MinIO、Amazon S3、Azure Blob Storage、Google Cloud Storage の設定が完了している。詳細は、「オブジェクトストレージのセットアップ」を参照してください。
警告オブジェクトストレージは必須ですが、distributed tracing platform (Tempo) には含まれていません。distributed tracing platform (Tempo) をインストールする前に、サポートされているプロバイダーによるオブジェクトストレージを選択して設定する必要があります。
手順
-
Operators
OperatorHub に移動し、 Tempo Operator
を検索します。 Red Hat が提供 する Tempo Operator を選択します。
重要次の選択は、この Operator のデフォルトのプリセットです。
-
Update channel
stable -
Installation mode
All namespaces on the cluster -
Installed Namespace
openshift-tempo-operator -
Update approval
Automatic
-
Update channel
- Enable Operator recommended cluster monitoring on this Namespace チェックボックスを選択します。
-
Install
Install View Operator を選択します。
検証
- インストール済み Operator ページの Details タブの ClusterServiceVersion details で、インストールの Status が Succeeded であることを確認します。
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>
-
OpenShift CLI (
サポートされているプロバイダーによる必要なオブジェクトストレージ Red Hat OpenShift Data Foundation、MinIO、Amazon S3、Azure Blob Storage、Google Cloud Storage の設定が完了している。詳細は、「オブジェクトストレージのセットアップ」を参照してください。
警告オブジェクトストレージは必須ですが、distributed tracing platform (Tempo) には含まれていません。distributed tracing platform (Tempo) をインストールする前に、サポートされているプロバイダーによるオブジェクトストレージを選択して設定する必要があります。
手順
以下のコマンドを実行して、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
以下のコマンドを実行して、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
以下のコマンドを実行して、サブスクリプションを作成します。
$ 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
インスタンスをデプロイする前に、サポートされているオブジェクトストアを設定し、オブジェクトストアの認証情報のシークレットを作成する必要があります。
ストレージプロバイダー |
---|
Secret パラメーター |
|
MinIO |
MinIO Operator を参照してください。
|
Amazon S3 |
|
Security Token Service (STS) を使用する Amazon S3 |
|
Microsoft Azure Blob Storage |
|
Google Cloud Storage on Google Cloud Platform (GCP) |
|
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 の最新バージョンがインストールされている。
手順
- AWS S3 バケットを作成します。
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" ] } } } ] }
作成した
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 attach-role-policy \ --role-name "tempo-s3-access" \ --policy-arn "arn:aws:iam::aws:policy/AmazonS3FullAccess"
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 のインスタンスを作成した。
手順
- 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: Opaque
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 のアクセスキーとシークレットキーが含まれるシークレットの名前。
関連情報
- OpenShift CLI の使用を開始する
- Getting started with the IBM Cloud CLI (IBM Cloud Docs)
- Choosing a plan and creating an instance (IBM Cloud Docs)
- Getting started with IBM Cloud Object Storage: Before you begin (IBM Cloud Docs)
3.1.3. 権限とテナントの設定
TempoStack
または TempoMonolithic
インスタンスをインストールする前に、1 つ以上のテナントを定義し、テナントの読み取りおよび書き込みアクセス権を設定する必要があります。このような認可設定は、Kubernetes のロールベースアクセス制御 (RBAC) のクラスターロールとクラスターロールバインディングを使用して設定できます。デフォルトでは、どのユーザーにも読み取り権限または書き込み権限は付与されません。詳細は、「テナントの読み取り権限の設定」および「テナントの書き込み権限の設定」を参照してください。
Red Hat build of OpenTelemetry の OpenTelemetry Collector は、データの書き込み用のサービスアカウントと RBAC を使用して、トレースデータを TempoStack
または TempoMonolithic
インスタンスに送信できます。
コンポーネント | Tempo Gateway サービス | OpenShift OAuth | TokenReview API | SubjectAccessReview API |
---|---|---|---|---|
認証 | X | X | X | |
認可 | X | X |
3.1.3.1. テナントの読み取り権限の設定
テナントの読み取り権限は、Web コンソールの Administrator ビューまたはコマンドラインから設定できます。
前提条件
-
cluster-admin
ロールを持つクラスター管理者として、OpenShift Container Platform Web コンソールにログインしている。 -
Red Hat OpenShift Dedicated の場合、
dedicated-admin
ロールを持つアカウントを使用してログインしている。
手順
任意の値を指定した
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 # ...
トレースを読み取るための読み取り (
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
上記ステップのクラスターロールのクラスターロールバインディングを定義して、認証されたユーザーにトレースデータの読み取り権限を付与します。
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 リソースの自動作成」を参照してください。
手順
OpenTelemetry Collector で使用するためのサービスアカウントを作成します。
apiVersion: v1 kind: ServiceAccount metadata: name: otel-collector namespace: <project_of_opentelemetry_collector_instance>
トレースを書き込むための書き込み (
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
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
- 前のステップで作成したサービスアカウント。これは、クライアントがトレースデータをエクスポートするときに使用されます。
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 Foundation、MinIO、Amazon S3、Azure Blob Storage、Google Cloud Storage の設定が完了している。詳細は、「オブジェクトストレージのセットアップ」を参照してください。
警告オブジェクトストレージは必須ですが、distributed tracing platform (Tempo) には含まれていません。distributed tracing platform (Tempo) をインストールする前に、サポートされているプロバイダーによるオブジェクトストレージを選択して設定する必要があります。
- 1 つ以上のテナントを定義し、読み取りおよび書き込み権限を設定した。詳細は、「テナントの読み取り権限の設定」および「テナントの書き込み権限の設定」を参照してください。
手順
-
Home
Projects Create Project に移動して、後続のステップで作成する TempoStack インスタンス用に任意のプロジェクトを作成します。 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
TempoStack インスタンスを作成します。
注記同じクラスター上の別々のプロジェクトに、複数の TempoStack インスタンスを作成できます。
-
Operators
Installed Operators に移動します。 -
TempoStack
Create TempoStack YAML view の順に選択します。 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 を公開します。
- Create を選択します。
-
Operators
検証
- Project: ドロップダウンリストを使用して、TempoStack インスタンスのプロジェクトを選択します。
-
Operators
Installed Operators に移動して、TempoStack インスタンスの Status が Condition: Ready であることを確認します。 -
Workloads
Pods に移動して、TempoStack インスタンスのすべてのコンポーネント Pod が稼働していることを確認します。 Tempo コンソールにアクセスします。
-
Networking
Routes に移動し、Ctrl+F で tempo
を検索します。 Location 列で URL を開き、Tempo コンソールにアクセスします。
注記Tempo コンソールをインストールした直後は、Tempo コンソールにトレースデータは表示されません。
-
Networking
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>
-
OpenShift CLI (
サポートされているプロバイダーによる必要なオブジェクトストレージ Red Hat OpenShift Data Foundation、MinIO、Amazon S3、Azure Blob Storage、Google Cloud Storage の設定が完了している。詳細は、「オブジェクトストレージのセットアップ」を参照してください。
警告オブジェクトストレージは必須ですが、distributed tracing platform (Tempo) には含まれていません。distributed tracing platform (Tempo) をインストールする前に、サポートされているプロバイダーによるオブジェクトストレージを選択して設定する必要があります。
- 1 つ以上のテナントを定義し、読み取りおよび書き込み権限を設定した。詳細は、「テナントの読み取り権限の設定」および「テナントの書き込み権限の設定」を参照してください。
手順
次のコマンドを実行して、後続の手順で作成する TempoStack インスタンス用に選択したプロジェクトを作成します。
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: name: <project_of_tempostack_instance> EOF
次のコマンドを実行して、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
TempoStack インスタンス用に作成したプロジェクトに TempoStack インスタンスを作成します。
注記同じクラスター上の別々のプロジェクトに、複数の TempoStack インスタンスを作成できます。
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 を公開します。
次のコマンドを実行して、カスタマイズされた CR を適用します。
$ oc apply -f - << EOF <tempostack_cr> EOF
検証
次のコマンドを実行して、すべての TempoStack
components
のstatus
がRunning
、conditions
がtype: Ready
になっていることを確認します。$ oc get tempostacks.tempo.grafana.com simplest -o yaml
次のコマンドを実行して、すべての TempoStack コンポーネント Pod が稼働していることを確認します。
$ oc get pods
Tempo コンソールにアクセスします。
以下のコマンドを実行してルートの詳細をクエリーします。
$ oc get route
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 つ以上のテナントを定義し、読み取りおよび書き込み権限を設定した。詳細は、「テナントの読み取り権限の設定」および「テナントの書き込み権限の設定」を参照してください。
手順
-
Home
Projects Create Project に移動して、後続のステップで作成する TempoMonolithic インスタンス用に任意のプロジェクトを作成します。 トレースの保存に使用するサポート対象のストレージのタイプ (インメモリーストレージ、永続ボリューム、オブジェクトストレージ) を決定します。
重要オブジェクトストレージは、distributed tracing platform (Tempo) には含まれていません。そのため、サポートされているプロバイダー (Red Hat OpenShift Data Foundation、MinIO、Amazon S3、Azure 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
TempoMonolithic インスタンスを作成します。
注記同じクラスター上の別々のプロジェクトに複数の TempoMonolithic インスタンスを作成できます。
-
Operators
Installed Operators に移動します。 -
TempoMonolithic
Create TempoMonolithic YAML view を選択します。 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
です。オブジェクトストレージの値は、使用するオブジェクトストアのタイプに応じて、s3
、gcs
、またはazure
が受け入れられます。デフォルト値は、tmpfs
インメモリーストレージのmemory
です。これは、Pod がシャットダウンするとデータが保持されないため、開発、テスト、デモ、および概念検証用の環境にのみ適しています。 - 5
- メモリーサイズ: インメモリーストレージの場合、これは
tmpfs
ボリュームのサイズを意味します。デフォルトは2Gi
です。永続ボリュームの場合、これは永続ボリューム要求のサイズを意味します。デフォルトは10Gi
です。オブジェクトストレージの場合、これは Tempo Write-Ahead Logging (WAL) の永続ボリューム要求のサイズを意味し、デフォルトは10Gi
です。 - 6
- オプション: オブジェクトストレージの場合、オブジェクトストレージのタイプ。使用するオブジェクトストアのタイプに応じて、
s3
、gcs
、および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
フィールドの値を再利用できます。
- Create を選択します。
-
Operators
検証
- Project: ドロップダウンリストを使用して、TempoMonolithic インスタンスのプロジェクトを選択します。
-
Operator
Installed Operator に移動して、TempoMonolithic インスタンスの Status が Condition: Ready であることを確認します。 -
Workloads
Pod に移動して、TempoMonolithic インスタンスの Pod が実行中であることを確認します。 Jaeger UI にアクセスします。
Networking
Routes に移動し、Ctrl+F を押して jaegerui
を検索します。注記Jaeger UI は、
tempo-<metadata_name_of_TempoMonolithic_CR>-jaegerui
ルートを使用します。- Location 列で URL を開き、Jaeger UI にアクセスします。
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>
-
OpenShift CLI (
- 1 つ以上のテナントを定義し、読み取りおよび書き込み権限を設定した。詳細は、「テナントの読み取り権限の設定」および「テナントの書き込み権限の設定」を参照してください。
手順
次のコマンドを実行して、後続のステップで作成する TempoMonolithic インスタンス用に任意のプロジェクトを作成します。
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: name: <project_of_tempomonolithic_instance> EOF
トレースの保存に使用するサポート対象のストレージのタイプ (インメモリーストレージ、永続ボリューム、オブジェクトストレージ) を決定します。
重要オブジェクトストレージは、distributed tracing platform (Tempo) には含まれていません。そのため、サポートされているプロバイダー (Red Hat OpenShift Data Foundation、MinIO、Amazon S3、Azure 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
TempoMonolithic インスタンス用に作成したプロジェクト内に TempoMonolithic インスタンスを作成します。
ヒント同じクラスター上の別々のプロジェクトに複数の TempoMonolithic インスタンスを作成できます。
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
です。オブジェクトストレージの値は、使用するオブジェクトストアのタイプに応じて、s3
、gcs
、またはazure
が受け入れられます。デフォルト値は、tmpfs
インメモリーストレージのmemory
です。これは、Pod がシャットダウンするとデータが保持されないため、開発、テスト、デモ、および概念検証用の環境にのみ適しています。 - 5
- メモリーサイズ: インメモリーストレージの場合、これは
tmpfs
ボリュームのサイズを意味します。デフォルトは2Gi
です。永続ボリュームの場合、これは永続ボリューム要求のサイズを意味します。デフォルトは10Gi
です。オブジェクトストレージの場合、これは Tempo Write-Ahead Logging (WAL) の永続ボリューム要求のサイズを意味し、デフォルトは10Gi
です。 - 6
- オプション: オブジェクトストレージの場合、オブジェクトストレージのタイプ。使用するオブジェクトストアのタイプに応じて、
s3
、gcs
、および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
フィールドの値を再利用できます。
次のコマンドを実行して、カスタマイズされた CR を適用します。
$ oc apply -f - << EOF <tempomonolithic_cr> EOF
検証
次のコマンドを実行して、すべての TempoMonolithic
components
のstatus
がRunning
であり、conditions
がtype: Ready
であることを確認します。$ oc get tempomonolithic.tempo.grafana.com <metadata_name_of_tempomonolithic_cr> -o yaml
次のコマンドを実行して、TempoMonolithic インスタンスの Pod が実行中であることを確認します。
$ oc get pods
Jaeger UI にアクセスします。
次のコマンドを実行して、
tempo-<metadata_name_of_tempomonolithic_cr>-jaegerui
ルートのルート詳細をクエリーします。$ oc get route
-
Web ブラウザーで
https://<route_from_previous_step>
を開きます。
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
エンドポイントで利用できます。