3.4. 安装 TempoStack 实例
您可以使用 Web 控制台或命令行安装 TempoStack 实例。
3.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。如需更多信息,请参阅"对象存储设置"。
警告对象存储是必需的,且不包含在分布式跟踪平台中。在安装分布式 Tracing Platform 前,您必须由支持的供应商选择和设置对象存储。
- 您已定义一个或多个租户,并配置了读写权限。如需更多信息,请参阅"配置租户的读取权限"和"配置租户的写入权限"。
流程
-
进入 Home
Projects Create Project,为在后续步骤中创建的 TempoStack 实例创建一个项目。 进入 Workloads
Secrets Create From YAML,在您为 TempoStack 实例创建的项目中为您的对象存储桶创建一个 secret。如需更多信息,请参阅"对象存储设置"。 Amazon S3 和 MinIO 存储的 secret 示例
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
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
Copy to Clipboard Copied! 创建 TempoStack 实例。
注意您可以在同一集群中的独立项目中创建多个 TempoStack 实例。
-
进入 Operators
Installed Operators。 -
选择 TempoStack
Create TempoStack YAML view。 在 YAML 视图中,自定义
TempoStack
自定义资源(CR):AWS S3 和 MinIO 存储和两个租户的
TempoStack
CR 示例apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest namespace: <project_of_tempostack_instance> spec: storage: secret: name: <secret_name> type: <secret_provider> storageSize: <value>Gi resources: total: limits: memory: 2Gi cpu: 2000m tenants: mode: openshift authentication: - tenantName: dev tenantId: "1610b0c3-c509-4592-a256-a1871353dbfa" - tenantName: prod tenantId: "1610b0c3-c509-4592-a256-a1871353dbfb" template: gateway: enabled: true queryFrontend: jaegerQuery: enabled: true
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 Copy to Clipboard Copied! - 1
- 此 CR 创建一个 TempoStack 部署,它被配置为通过 HTTP 和 OpenTelemetry 协议(OTLP)接收 Jaeger Thrift。
- 2
- 为 TempoStack 部署选择的命名空间。
- 3
- 指定用于存储 trace 的存储。
- 4
- 您在第 2 步中创建的 secret,用于作为其中一个先决条件设置的对象存储。
- 5
- secret 的
metadata
部分中的name
字段的值。例如:minio
。 - 6
- 可接受的值是
azure
(Azure Blob Storage),gcs
(Google Cloud Storage)和s3
(Amazon S3, MinIO, 或 Red Hat OpenShift Data Foundation)。例如:s3
。 - 7
- Tempo Write-Ahead Logging (WAL) 的持久性卷声明的大小。默认值为
10Gi
。例如:1Gi
。 - 8
- 该值必须是
openshift
。 - 9
- 租户列表。
- 10
- 租户名称,在分离数据时在
X-Scope-OrgId
标头中提供。 - 11
- 租户的唯一标识符。在 TempoStack 部署的生命周期内必须是唯一的。分布式追踪平台使用此 ID 为对象存储中的对象添加前缀。您可以重复使用 UUID 或
tempoName
字段的值。 - 12
- 启用执行身份验证和授权的网关。The 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 控制台安装后显示 trace 数据。
-
进入 Networking
3.4.2. 使用 CLI 安装 TempoStack 实例
您可以从命令行安装 TempoStack 实例。
先决条件
集群管理员具有
cluster-admin
角色的活跃 OpenShift CLI (oc
) 会话。提示-
确保您的 OpenShift CLI (
oc
) 版本为最新版本,并与您的 OpenShift Container Platform 版本匹配。 运行
oc login
命令:oc login --username=<your_username>
$ oc login --username=<your_username>
Copy to Clipboard Copied!
-
确保您的 OpenShift CLI (
您已完成由支持的供应商设置所需的对象存储:Red Hat OpenShift Data Foundation, MinIO, Amazon S3, Azure Blob Storage, Google Cloud Storage。如需更多信息,请参阅"对象存储设置"。
警告对象存储是必需的,且不包含在分布式跟踪平台中。在安装分布式 Tracing Platform 前,您必须由支持的供应商选择和设置对象存储。
- 您已定义一个或多个租户,并配置了读写权限。如需更多信息,请参阅"配置租户的读取权限"和"配置租户的写入权限"。
流程
运行以下命令,为您将在后续步骤中创建的 TempoStack 实例创建您选择的项目:
oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: name: <project_of_tempostack_instance> EOF
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: name: <project_of_tempostack_instance> EOF
Copy to Clipboard Copied! 在您为 TempoStack 实例创建的项目中,运行以下命令来为您的对象存储桶创建一个 secret:
oc apply -f - << EOF <object_storage_secret> EOF
$ oc apply -f - << EOF <object_storage_secret> EOF
Copy to Clipboard Copied! 如需更多信息,请参阅"对象存储设置"。
Amazon S3 和 MinIO 存储的 secret 示例
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
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
Copy to Clipboard Copied! 在为您创建的项目中创建一个 TempoStack 实例:
注意您可以在同一集群中的独立项目中创建多个 TempoStack 实例。
自定义
TempoStack
自定义资源(CR):AWS S3 和 MinIO 存储和两个租户的
TempoStack
CR 示例apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest namespace: <project_of_tempostack_instance> spec: storage: secret: name: <secret_name> type: <secret_provider> storageSize: <value>Gi resources: total: limits: memory: 2Gi cpu: 2000m tenants: mode: openshift authentication: - tenantName: dev tenantId: "1610b0c3-c509-4592-a256-a1871353dbfa" - tenantName: prod tenantId: "1610b0c3-c509-4592-a256-a1871353dbfb" template: gateway: enabled: true queryFrontend: jaegerQuery: enabled: true
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 Copy to Clipboard Copied! - 1
- 此 CR 创建一个 TempoStack 部署,它被配置为通过 HTTP 和 OpenTelemetry 协议(OTLP)接收 Jaeger Thrift。
- 2
- 为 TempoStack 部署选择的命名空间。
- 3
- 指定用于存储 trace 的存储。
- 4
- 您在第 2 步中创建的 secret,用于作为其中一个先决条件设置的对象存储。
- 5
- secret 的
metadata
部分中的name
字段的值。例如:minio
。 - 6
- 可接受的值是
azure
(Azure Blob Storage),gcs
(Google Cloud Storage)和s3
(Amazon S3, MinIO, 或 Red Hat OpenShift Data Foundation)。例如:s3
。 - 7
- Tempo Write-Ahead Logging (WAL) 的持久性卷声明的大小。默认值为
10Gi
。例如:1Gi
。 - 8
- 该值必须是
openshift
。 - 9
- 租户列表。
- 10
- 租户名称,在分离数据时在
X-Scope-OrgId
标头中提供。 - 11
- 租户的唯一标识符。在 TempoStack 部署的生命周期内必须是唯一的。分布式追踪平台使用此 ID 为对象存储中的对象添加前缀。您可以重复使用 UUID 或
tempoName
字段的值。 - 12
- 启用执行身份验证和授权的网关。The Jaeger UI 通过
http://<gateway_ingress>/api/traces/v1/<tenant_name>/search
公开。 - 13
- 公开 Jaeger UI,它通过路由视觉化数据。
运行以下命令来应用自定义 CR:
oc apply -f - << EOF <tempostack_cr> EOF
$ oc apply -f - << EOF <tempostack_cr> EOF
Copy to Clipboard Copied!
验证
运行以下命令,验证所有 TempoStack
组件
的状态
是否为Running
,并且条件
为type: Ready
:oc get tempostacks.tempo.grafana.com simplest -o yaml
$ oc get tempostacks.tempo.grafana.com simplest -o yaml
Copy to Clipboard Copied! 运行以下命令,验证所有 TempoStack 组件 pod 是否正在运行:
oc get pods
$ oc get pods
Copy to Clipboard Copied! 访问 Tempo 控制台:
运行以下命令来查询路由详情:
oc get route
$ oc get route
Copy to Clipboard Copied! 在网页浏览器中打开
https://<route_from_previous_step>
。注意Tempo 控制台最初不会在 Tempo 控制台安装后显示 trace 数据。