3.3. 権限とテナントの設定
TempoStack または TempoMonolithic インスタンスをインストールする前に、1 つ以上のテナントを定義し、テナントの読み取りおよび書き込みアクセス権を設定する必要があります。このような認可設定は、Kubernetes のロールベースアクセス制御 (RBAC) のクラスターロールとクラスターロールバインディングを使用して設定できます。デフォルトでは、どのユーザーにも読み取り権限または書き込み権限は付与されません。詳細は、「テナントの読み取り権限の設定」および「テナントの書き込み権限の設定」を参照してください。
Red Hat build of OpenTelemetry の OpenTelemetry Collector は、データの書き込み用のサービスアカウントと RBAC を使用して、トレースデータを TempoStack または TempoMonolithic インスタンスに送信できます。
| Component | Tempo Gateway サービス | OpenShift OAuth | TokenReview API | SubjectAccessReview API |
|---|---|---|---|---|
| Authentication | X | X | X | |
| 認可 | X | X |
3.3.1. テナントの読み取り権限の設定 リンクのコピーリンクがクリップボードにコピーされました!
テナントの読み取り権限は、Web コンソールの Administrator ビューまたはコマンドラインから設定できます。
前提条件
-
cluster-adminロールを持つクラスター管理者として、OpenShift Container Platform Web コンソールにログインしている。 -
Red Hat OpenShift Dedicated の場合、
dedicated-adminロールを持つアカウントを使用してログインしている。
手順
任意の値を指定した
tenantNameおよびtenantIdパラメーターをTempoStackカスタムリソース (CR) に追加して、テナントを定義します。TempoStackCR のテナントの例apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: redmetrics spec: # ... tenants: mode: openshift authentication: - tenantName: dev1 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:authenticated1 - 1
- 認証されたユーザー全員に、トレースデータの読み取り権限を付与します。
3.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-collector1 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-collector1 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セクションで指定したエクスポーター。
-
トレーシングパイプラインサービスに、