菜单
开源

对象存储

Tempo Operator 支持 AWS S3AzureGCSMinioOpenShift Data Foundation 作为 TempoStack 的对象存储。

AWS S3

要求

静态令牌安装

  1. 创建一个包含以下键的对象存储密钥

    控制台
    kubectl create secret generic tempostack-dev-s3 \
      --from-literal=bucket="<BUCKET_NAME>" \
      --from-literal=endpoint="<AWS_BUCKET_ENDPOINT>" \
      --from-literal=access_key_id="<AWS_ACCESS_KEY_ID>" \
      --from-literal=access_key_secret="<AWS_ACCESS_KEY_SECRET>"

其中 tempostack-dev-s3 是密钥名称。

  1. 通过引用密钥名称和类型为 s3 来创建一个 TempoStack 实例
yaml
spec:
  storage:
    secret:
      name: tempostack-dev-s3
      type: s3

AWS 安全令牌服务 (STS) 安装

  1. 创建一个自定义 AWS IAM 角色,并与 Tempo 的 Kubernetes ServiceAccount 建立信任关系
yaml
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_PROVIDER}"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "${OIDC_PROVIDER}:sub": [
            "system:serviceaccount:${TEMPOSTACK_NS}:tempo-${TEMPOSTACK_NAME}",
            "system:serviceaccount:${TEMPOSTACK_NS}:tempo-${TEMPOSTACK_NAME}-query-frontend"
         ]
       }
     }
   }
  ]
}
  1. 创建一个 AWS IAM 角色
yaml
aws iam create-role \
  --role-name "tempo-s3-access" \
  --assume-role-policy-document "file:///tmp/trust.json" \
  --query Role.Arn \
  --output text
  1. 为该角色附加特定策略
yaml
aws iam attach-role-policy \
  --role-name "tempo-s3-access" \
  --policy-arn "arn:aws:iam::aws:policy/AmazonS3FullAccess"
  1. 创建一个包含以下键的对象存储密钥

    控制台
    kubectl create secret generic tempostack-dev-s3 \
      --from-literal=bucket="<BUCKET_NAME>" \
      --from-literal=region="<AWS_REGION>" \
      --from-literal=role_arn="<ROLE ARN>"

其中 tempostack-dev-s3 是密钥名称。

  1. 通过引用密钥名称和类型为 s3 来创建一个 TempoStack 实例
yaml
spec:
  storage:
    secret:
      name: tempostack-dev-s3
      type: s3

Azure

要求

安装

  1. 创建一个包含以下键的对象存储密钥

    控制台
    kubectl create secret generic tempostack-dev-azure \
      --from-literal=container="<AZURE_CONTAINER_NAME>" \
      --from-literal=account_name="<AZURE_ACCOUNT_NAME>" \
      --from-literal=account_key="<AZURE_ACCOUNT_KEY>"

其中 tempostack-dev-azure 是密钥名称。

  1. 通过引用密钥名称和类型为 azure 来创建一个 TempoStack 实例
yaml
spec:
  storage:
    secret:
      name: tempostack-dev-azure
      type: azure

Google Cloud Storage

要求

  • 在 Google Cloud Platform 上创建一个项目
  • 在同一项目下创建一个存储桶
  • 在同一项目下创建一个服务帐号用于 GCP 认证。

安装

  1. 将从 GCP 收到的服务帐号凭据复制到文件 key.json 中。

  2. 创建一个包含键 bucketnamekey.json 的对象存储密钥,如下所示

    控制台
    kubectl create secret generic tempostack-dev-gcs \
      --from-literal=bucketname="<BUCKET_NAME>" \
      --from-file=key.json="<PATH/TO/KEY.JSON>"

其中 tempostack-dev-gcs 是密钥名称,<BUCKET_NAME> 是在要求步骤中创建的存储桶名称,<PATH/TO/KEY.JSON>key.json 被复制到的文件路径。

  1. 通过引用密钥名称和类型为 gcs 来创建一个 TempoStack 实例
yaml
spec:
  storage:
    secret:
      name: tempostack-dev-gcs
      type: gcs

MinIO

要求

  • 在您的集群上部署 MinIO,例如使用MinIO Operator 或其他方法。

  • 使用 CLI 在 MinIO 上创建一个存储桶

安装

  1. 创建一个包含以下键的对象存储密钥

    控制台
    kubectl create secret generic tempostack-dev-minio \
      --from-literal=bucket="<BUCKET_NAME>" \
      --from-literal=endpoint="<MINIO_BUCKET_ENDPOINT>" \
      --from-literal=access_key_id="<MINIO_ACCESS_KEY_ID>" \
      --from-literal=access_key_secret="<MINIO_ACCESS_KEY_SECRET>"

其中 tempostack-dev-minio 是密钥名称。

  1. 通过引用密钥名称和类型为 s3 来创建一个 TempoStack 实例
yaml
spec:
  storage:
    secret:
      name: tempostack-dev-minio
      type: s3

OpenShift Data Foundation

要求

安装

  1. 创建一个包含以下键的对象存储密钥

    控制台
    kubectl create secret generic tempostack-dev-odf \
      --from-literal=bucket="<BUCKET_NAME>" \
      --from-literal=endpoint="https://s3.openshift-storage.svc" \
      --from-literal=access_key_id="<ACCESS_KEY_ID>" \
      --from-literal=access_key_secret="<ACCESS_KEY_SECRET>"

其中 tempostack-dev-odf 是密钥名称。您可以从 ObjectBucketClaim 附带的密钥中复制 BUCKET_NAMEACCESS_KEY_IDACCESS_KEY_SECRET 的值。

  1. 通过引用密钥名称和类型为 s3 来创建一个 TempoStack 实例
yaml
spec:
  storage:
    secret:
      name: tempostack-dev-odf
      type: s3