×

安装分布式跟踪平台 (Tempo) 需要 Tempo Operator,并选择最适合您用例的部署类型。

  • 对于微服务模式,请在专用 OpenShift 项目中部署 TempoStack 实例。

  • 对于单体模式,请在专用 OpenShift 项目中部署 TempoMonolithic 实例。

使用对象存储需要在部署 TempoStack 或 TempoMonolithic 实例之前设置受支持的对象存储并为对象存储凭据创建密钥。

安装 Tempo Operator

您可以使用 Web 控制台或命令行安装 Tempo Operator。

使用 Web 控制台安装 Tempo Operator

您可以从 Web 控制台的**管理员**视图安装 Tempo Operator。

先决条件
  • 您已以具有 `cluster-admin` 角色的集群管理员身份登录到 OpenShift Container Platform Web 控制台。

  • 对于 Red Hat OpenShift Dedicated,您必须使用具有 `dedicated-admin` 角色的帐户登录。

  • 您已完成受支持提供商所需的对象存储设置:Red Hat OpenShift Data FoundationMinIOAmazon S3Azure Blob StorageGoogle Cloud Storage。有关更多信息,请参见“对象存储设置”。

    对象存储是必需的,并且不包含在分布式跟踪平台 (Tempo) 中。您必须在安装分布式跟踪平台 (Tempo) 之前选择并设置受支持提供商的对象存储。

步骤
  1. 转到**Operators** → **OperatorHub** 并搜索 `Tempo Operator`。

  2. 选择由 Red Hat 提供的**Tempo Operator**。

    以下选项是此 Operator 的默认预设

    • **更新通道** → **稳定**

    • **安装模式** → **集群上的所有命名空间**

    • **已安装命名空间** → **openshift-tempo-operator**

    • **更新批准** → **自动**

  3. 选择**启用此命名空间上的 Operator 推荐集群监控**复选框。

  4. 选择**安装** → **安装** → **查看 Operator**。

验证
  • 在已安装 Operator 页面的**详细信息**选项卡中,在**ClusterServiceVersion 详细信息**下,验证安装**状态**是否为**成功**。

使用 CLI 安装 Tempo Operator

您可以从命令行安装 Tempo Operator。

先决条件
  • 由具有 `cluster-admin` 角色的集群管理员进行的活动 OpenShift CLI (oc) 会话。

    • 确保您的 OpenShift CLI (oc) 版本是最新的,并且与您的 OpenShift Container Platform 版本匹配。

    • 运行 oc login

      $ oc login --username=<your_username>
  • 您已完成受支持提供商所需的对象存储设置:Red Hat OpenShift Data FoundationMinIOAmazon S3Azure Blob StorageGoogle Cloud Storage。有关更多信息,请参见“对象存储设置”。

    对象存储是必需的,并且不包含在分布式跟踪平台 (Tempo) 中。您必须在安装分布式跟踪平台 (Tempo) 之前选择并设置受支持提供商的对象存储。

步骤
  1. 通过运行以下命令创建 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
  2. 通过运行以下命令创建 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
  3. 通过运行以下命令创建订阅

    $ 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

安装 TempoStack 实例

您可以使用 Web 控制台或命令行安装 TempoStack 实例。

使用 Web 控制台安装 TempoStack 实例

您可以从 Web 控制台的**管理员**视图安装 TempoStack 实例。

先决条件
  • 您已以具有 `cluster-admin` 角色的集群管理员身份登录到 OpenShift Container Platform Web 控制台。

  • 对于 Red Hat OpenShift Dedicated,您必须使用具有 `dedicated-admin` 角色的帐户登录。

  • 您已完成受支持提供商所需的对象存储设置:Red Hat OpenShift Data FoundationMinIOAmazon S3Azure Blob StorageGoogle Cloud Storage。有关更多信息,请参见“对象存储设置”。

    对象存储是必需的,并且不包含在分布式跟踪平台 (Tempo) 中。您必须在安装分布式跟踪平台 (Tempo) 之前选择并设置受支持提供商的对象存储。

步骤
  1. 转到**主页** → **项目** → **创建项目**,为后续步骤中将创建的 TempoStack 实例创建一个您选择的项目。

  2. 转到**工作负载** → **密钥** → **创建** → **从 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
  3. 创建 TempoStack 实例。

    您可以在同一集群上的不同项目中创建多个 TempoStack 实例。

    1. 转到**运算符** → **已安装的运算符**。

    2. 选择**TempoStack** → **创建 TempoStack** → **YAML 视图**。

    3. 在**YAML 视图**中,自定义TempoStack自定义资源 (CR)

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: sample
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: <value>Gi (1)
        storage:
          secret: (2)
            name: <secret_name> (3)
            type: <secret_provider> (4)
          tls: (5)
            enabled: true
            caName: <ca_certificate_configmap_name> (6)
        template:
          queryFrontend:
            jaegerQuery:
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route
        resources: (7)
          total:
            limits:
              memory: <value>Gi
              cpu: <value>m
      1 Tempo WAL 的持久卷声明大小。默认为10Gi
      2 您在步骤 2 中为已设置为先决条件之一的对象存储创建的密钥。
      3 密钥metadata中的name的值。
      4 可接受的值包括:Azure Blob Storage 为azure;Google Cloud Storage 为gcs;Amazon S3、MinIO 或 Red Hat OpenShift Data Foundation 为s3
      5 可选。
      6 可选:包含 CA 证书的ConfigMap对象的名称。
      7 可选。
      AWS S3 和 MinIO 存储的TempoStack CR 示例
      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: simplest
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: 1Gi
        storage: (1)
          secret:
            name: minio-test
            type: s3
        resources:
          total:
            limits:
              memory: 2Gi
              cpu: 2000m
        template:
          queryFrontend:
            jaegerQuery: (2)
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route
      1 在此示例中,对象存储已设置为先决条件之一,并且对象存储密钥已在步骤 2 中创建。
      2 在此示例中部署的堆栈配置为通过 HTTP 接收 Jaeger Thrift 和 OpenTelemetry 协议 (OTLP),这允许使用 Jaeger UI 可视化数据。
    4. 选择**创建**。

验证
  1. 使用**项目:**下拉列表选择**TempoStack**实例的项目。

  2. 转到**运算符** → **已安装的运算符**以验证**TempoStack**实例的**状态**是否为**条件:就绪**。

  3. 转到**工作负载** → **Pod**以验证**TempoStack**实例的所有组件 Pod 是否正在运行。

  4. 访问 Tempo 控制台

    1. 转到**网络** → **路由**并按Ctrl+F搜索tempo

    2. 在**位置**列中,打开 URL 以访问 Tempo 控制台。

      安装 Tempo 控制台后,Tempo 控制台最初不显示任何跟踪数据。

使用 CLI 安装 TempoStack 实例

您可以从命令行安装 TempoStack 实例。

先决条件
  • 由具有 `cluster-admin` 角色的集群管理员进行的活动 OpenShift CLI (oc) 会话。

    • 确保您的 OpenShift CLI (oc) 版本是最新的,并且与您的 OpenShift Container Platform 版本匹配。

    • 运行oc login命令

      $ oc login --username=<your_username>
  • 您已完成受支持提供商所需的对象存储设置:Red Hat OpenShift Data FoundationMinIOAmazon S3Azure Blob StorageGoogle Cloud Storage。有关更多信息,请参见“对象存储设置”。

    对象存储是必需的,并且不包含在分布式跟踪平台 (Tempo) 中。您必须在安装分布式跟踪平台 (Tempo) 之前选择并设置受支持提供商的对象存储。

步骤
  1. 运行以下命令以创建您选择的项目,用于您将在后续步骤中创建的 TempoStack 实例

    $ oc apply -f - << EOF
    apiVersion: project.openshift.io/v1
    kind: Project
    metadata:
      name: <project_of_tempostack_instance>
    EOF
  2. 在您为 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
  3. 在您为其创建的项目中创建 TempoStack 实例

    您可以在同一集群上的不同项目中创建多个 TempoStack 实例。

    1. 自定义TempoStack自定义资源 (CR)

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: sample
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: <value>Gi (1)
        storage:
          secret: (2)
            name: <secret_name> (3)
            type: <secret_provider> (4)
          tls: (5)
            enabled: true
            caName: <ca_certificate_configmap_name> (6)
        template:
          queryFrontend:
            jaegerQuery:
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route
        resources: (7)
          total:
            limits:
              memory: <value>Gi
              cpu: <value>m
      1 Tempo WAL 的持久卷声明大小。默认为10Gi
      2 您在步骤 2 中为已设置为先决条件之一的对象存储创建的密钥。
      3 密钥metadata中的name的值。
      4 可接受的值包括:Azure Blob Storage 为azure;Google Cloud Storage 为gcs;Amazon S3、MinIO 或 Red Hat OpenShift Data Foundation 为s3
      5 可选。
      6 可选:包含 CA 证书的ConfigMap对象的名称。
      7 可选。
      AWS S3 和 MinIO 存储的TempoStack CR 示例
      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: simplest
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: 1Gi
        storage: (1)
          secret:
            name: minio-test
            type: s3
        resources:
          total:
            limits:
              memory: 2Gi
              cpu: 2000m
        template:
          queryFrontend:
            jaegerQuery: (2)
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route
      1 在此示例中,对象存储已设置为先决条件之一,并且对象存储密钥已在步骤 2 中创建。
      2 在此示例中部署的堆栈配置为通过 HTTP 接收 Jaeger Thrift 和 OpenTelemetry 协议 (OTLP),这允许使用 Jaeger UI 可视化数据。
    2. 通过运行以下命令应用自定义的 CR

      $ oc apply -f - << EOF
      <tempostack_cr>
      EOF
验证
  1. 通过运行以下命令验证所有 TempoStack componentsstatus 是否为Running,并且conditions 是否为type: Ready

    $ oc get tempostacks.tempo.grafana.com simplest -o yaml
  2. 通过运行以下命令验证所有 TempoStack 组件 Pod 是否正在运行

    $ oc get pods
  3. 访问 Tempo 控制台

    1. 通过运行以下命令查询路由详细信息

      $ oc get route
    2. 在 Web 浏览器中打开https://<route_from_previous_step>

      安装 Tempo 控制台后,Tempo 控制台最初不显示任何跟踪数据。

安装 TempoMonolithic 实例

TempoMonolithic 实例仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

您可以使用 Web 控制台或命令行安装 TempoMonolithic 实例。

TempoMonolithic自定义资源 (CR) 以单体模式创建 Tempo 部署。Tempo 部署的所有组件(例如压缩器、分发器、摄取器、查询器和查询前端)都包含在一个容器中。

TempoMonolithic 实例支持将跟踪存储在内存存储、持久卷或对象存储中。

对于小型部署、演示、测试以及作为 Red Hat OpenShift 分布式跟踪平台 (Jaeger) 一体化部署的迁移路径,建议使用单体模式的 Tempo 部署。

Tempo 的单体部署不会水平扩展。如果您需要水平扩展,请使用TempoStack CR 以微服务模式进行 Tempo 部署。

使用 Web 控制台安装 TempoMonolithic 实例

TempoMonolithic 实例仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

您可以从 Web 控制台的**管理员**视图安装 TempoMonolithic 实例。

先决条件
  • 您已以具有 `cluster-admin` 角色的集群管理员身份登录到 OpenShift Container Platform Web 控制台。

  • 对于 Red Hat OpenShift Dedicated,您必须使用具有 `dedicated-admin` 角色的帐户登录。

步骤
  1. 转到**主页** → **项目** → **创建项目**,为后续步骤中将创建的**TempoMonolithic**实例创建一个您选择的项目。

  2. 确定要使用哪种类型的支持存储来存储跟踪:内存存储、持久卷或对象存储。

    分布式跟踪平台 (Tempo) 不包含对象存储,需要通过受支持的提供商设置对象存储:Red Hat OpenShift Data FoundationMinIOAmazon S3Azure Blob StorageGoogle Cloud Storage

    此外,选择对象存储需要在您为**TempoMonolithic**实例创建的项目中为您的对象存储桶创建一个密钥。您可以在**工作负载** → **密钥** → **创建** → **从 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
  3. 创建一个**TempoMonolithic**实例

    您可以在同一集群上的不同项目中创建多个**TempoMonolithic**实例。

    1. 转到**运算符** → **已安装的运算符**。

    2. 选择**TempoMonolithic** → **创建 TempoMonolithic** → **YAML 视图**。

    3. 在**YAML 视图**中,自定义TempoMonolithic自定义资源 (CR)。

      以下TempoMonolithic CR 创建一个 TempoMonolithic 部署,通过 OTLP/gRPC 和 OTLP/HTTP 进行跟踪摄取,将跟踪存储在受支持的存储类型中,并通过路由公开 Jaeger UI

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoMonolithic
      metadata:
        name: <metadata_name>
        namespace: <project_of_tempomonolithic_instance>
      spec:
        storage:
          traces:
            backend: <supported_storage_type> (1)
            size: <value>Gi (2)
            s3: (3)
              secret: <secret_name> (4)
          tls: (5)
            enabled: true
            caName: <ca_certificate_configmap_name> (6)
        jaegerui:
          enabled: true (7)
          route:
            enabled: true (8)
        resources: (9)
          total:
            limits:
              memory: <value>Gi
              cpu: <value>m
      1 用于存储跟踪的存储类型:内存存储、持久卷或对象存储。持久卷的值为pv。对象存储的可接受值为s3gcsazure,具体取决于所使用的对象存储类型。tmpfs内存存储的默认值为memory,这仅适用于开发、测试、演示和概念验证环境,因为当 Pod 关闭时数据不会持久化。
      2 内存大小:对于内存存储,这意味着tmpfs卷的大小,默认为2Gi。对于持久卷,这意味着持久卷声明的大小,默认为10Gi。对于对象存储,这意味着 Tempo WAL 的持久卷声明的大小,默认为10Gi
      3 可选:对于对象存储,对象存储的类型。可接受的值为s3gcsazure,具体取决于所使用的对象存储类型。
      4 可选:对于对象存储,存储密钥的metadataname的值。存储密钥必须与 TempoMonolithic 实例位于相同的命名空间中,并且包含“对象存储设置”部分“表 1. 必需的密钥参数”中指定字段。
      5 可选。
      6 可选:包含 CA 证书的ConfigMap对象的名称。
      7 启用 Jaeger UI。
      8 启用为 Jaeger UI 创建路由。
      9 可选。
    4. 选择**创建**。

验证
  1. 使用项目:下拉列表选择TempoMonolithic实例的项目。

  2. 转到操作符已安装的操作符,以验证TempoMonolithic实例的状态是否为条件:就绪

  3. 转到工作负载Pod,以验证TempoMonolithic实例的 Pod 是否正在运行。

  4. 访问 Jaeger UI

    1. 转到网络路由,并按Ctrl+F搜索jaegerui

      Jaeger UI 使用tempo-<TempoMonolithic_CR 的元数据名称>-jaegerui路由。

    2. 位置列中,打开 URL 以访问 Jaeger UI。

  5. TempoMonolithic实例的 Pod 就绪后,您可以将跟踪发送到集群内的tempo-<TempoMonolithic_CR 的元数据名称>:4317 (OTLP/gRPC) 和tempo-<TempoMonolithic_CR 的元数据名称>:4318 (OTLP/HTTP) 端点。

    Tempo API 可在集群内的tempo-<TempoMonolithic_CR 的元数据名称>:3200端点访问。

使用 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>
步骤
  1. 运行以下命令以创建您选择的项目,用于您将在后续步骤中创建的 TempoMonolithic 实例

    $ oc apply -f - << EOF
    apiVersion: project.openshift.io/v1
    kind: Project
    metadata:
      name: <project_of_tempomonolithic_instance>
    EOF
  2. 确定要使用哪种类型的支持存储来存储跟踪:内存存储、持久卷或对象存储。

    分布式跟踪平台 (Tempo) 不包含对象存储,需要通过受支持的提供商设置对象存储:Red Hat OpenShift Data FoundationMinIOAmazon S3Azure Blob StorageGoogle 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
  3. 在您为其创建的项目中创建 TempoMonolithic 实例。

    您可以在同一集群的单独项目中创建多个 TempoMonolithic 实例。

    1. 自定义TempoMonolithic自定义资源 (CR)。

      以下TempoMonolithic CR 创建一个 TempoMonolithic 部署,通过 OTLP/gRPC 和 OTLP/HTTP 进行跟踪摄取,将跟踪存储在受支持的存储类型中,并通过路由公开 Jaeger UI

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoMonolithic
      metadata:
        name: <metadata_name>
        namespace: <project_of_tempomonolithic_instance>
      spec:
        storage:
          traces:
            backend: <supported_storage_type> (1)
            size: <value>Gi (2)
            s3: (3)
              secret: <secret_name> (4)
          tls: (5)
            enabled: true
            caName: <ca_certificate_configmap_name> (6)
        jaegerui:
          enabled: true (7)
          route:
            enabled: true (8)
        resources: (9)
          total:
            limits:
              memory: <value>Gi
              cpu: <value>m
      1 用于存储跟踪的存储类型:内存存储、持久卷或对象存储。持久卷的值为pv。对象存储的可接受值为s3gcsazure,具体取决于所使用的对象存储类型。tmpfs内存存储的默认值为memory,这仅适用于开发、测试、演示和概念验证环境,因为当 Pod 关闭时数据不会持久化。
      2 内存大小:对于内存存储,这意味着tmpfs卷的大小,默认为2Gi。对于持久卷,这意味着持久卷声明的大小,默认为10Gi。对于对象存储,这意味着 Tempo WAL 的持久卷声明的大小,默认为10Gi
      3 可选:对于对象存储,对象存储的类型。可接受的值为s3gcsazure,具体取决于所使用的对象存储类型。
      4 可选:对于对象存储,存储密钥的metadataname的值。存储密钥必须与 TempoMonolithic 实例位于相同的命名空间中,并且包含“对象存储设置”部分“表 1. 必需的密钥参数”中指定字段。
      5 可选。
      6 可选:包含 CA 证书的ConfigMap对象的名称。
      7 启用 Jaeger UI。
      8 启用为 Jaeger UI 创建路由。
      9 可选。
    2. 通过运行以下命令应用自定义的 CR

      $ oc apply -f - << EOF
      <tempomonolithic_cr>
      EOF
验证
  1. 通过运行以下命令验证所有 TempoMonolithic 组件状态是否为运行中,并且条件是否为类型:就绪

    $ oc get tempomonolithic.tempo.grafana.com <metadata_name_of_tempomonolithic_cr> -o yaml
  2. 运行以下命令以验证 TempoMonolithic 实例的 Pod 是否正在运行

    $ oc get pods
  3. 访问 Jaeger UI

    1. 通过运行以下命令查询tempo-<tempomonolithic_cr 的元数据名称>-jaegerui路由的路由详细信息

      $ oc get route
    2. 在 Web 浏览器中打开https://<route_from_previous_step>

  4. 当 TempoMonolithic 实例的 Pod 就绪后,您可以将跟踪发送到集群内的tempo-<tempomonolithic_cr 的元数据名称>:4317 (OTLP/gRPC) 和tempo-<tempomonolithic_cr 的元数据名称>:4318 (OTLP/HTTP) 端点。

    Tempo API 可在集群内的tempo-<tempomonolithic_cr 的元数据名称>:3200端点访问。

对象存储设置

设置支持的对象存储时,您可以使用以下配置参数。

表 1. 必需的密钥参数
存储提供商 密钥参数

Red Hat OpenShift 数据基金会

name: tempostack-dev-odf # 示例

bucket: <bucket_name> # 需要 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 操作符

name: tempostack-dev-minio # 示例

bucket: <minio_bucket_name> # MinIO 文档

endpoint: <minio_bucket_endpoint>

access_key_id: <minio_access_key_id>

access_key_secret: <minio_access_key_secret>

Amazon S3

name: tempostack-dev-s3 # 示例

bucket: <s3_bucket_name> # Amazon S3 文档

endpoint: <s3_bucket_endpoint>

access_key_id: <s3_access_key_id>

access_key_secret: <s3_access_key_secret>

带有安全令牌服务 (STS) 的 Amazon S3

name: tempostack-dev-s3 # 示例

bucket: <s3_bucket_name> # Amazon S3 文档

region: <s3_region>

role_arn: <s3_role_arn>

Microsoft Azure Blob 存储

name: tempostack-dev-azure # 示例

container: <azure_blob_storage_container_name> # Microsoft Azure 文档

account_name: <azure_blob_storage_account_name>

account_key: <azure_blob_storage_account_key>

Google Cloud Platform (GCP) 上的 Google Cloud Storage

name: tempostack-dev-gcs # 示例

bucketname: <google_cloud_storage_bucket_name> # 需要在 GCP 项目中创建的 存储桶

key.json: <path/to/key.json> # 需要在存储桶的 GCP 项目中为 GCP 身份验证创建一个 服务帐户

使用安全令牌服务设置 Amazon S3 存储

您可以使用 AWS 命令行界面 (AWS CLI) 设置带有安全令牌服务 (STS) 的 Amazon S3 存储。

带有安全令牌服务的 Amazon S3 存储仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且功能可能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您提前访问即将推出的产品功能,使客户能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

先决条件
  • 您已安装最新版本的 AWS CLI。

步骤
  1. 创建一个 AWS S3 存储桶。

  2. 为 AWS IAM 策略创建以下trust.json文件,该策略将在下一步中为 AWS IAM 角色(与 TempoStack 实例的服务帐户创建)建立信任关系

    {
        "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"
               ]
             }
           }
         }
        ]
    }
    1 您已在 OpenShift Container Platform 上配置的 OIDC 提供程序。您还可以通过运行以下命令获取已配置的 OIDC 提供程序值:$ oc get authentication cluster -o json | jq -r '.spec.serviceAccountIssuer' | sed 'shttp[s]*://~g'
    2 您打算在其中创建 TempoStack 实例的命名空间。
  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
  4. 将 AWS IAM 策略附加到已创建的角色

    $ aws iam attach-role-policy \
          --role-name "tempo-s3-access" \
          --policy-arn "arn:aws:iam::aws:policy/AmazonS3FullAccess"
  5. 在 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