对象存储
Tempo Operator 支持 AWS S3、Azure、GCS、Minio 和 OpenShift Data Foundation 作为 TempoStack 的对象存储。
AWS S3
要求
- 在 AWS 上创建一个存储桶。
静态令牌安装
创建一个包含以下键的对象存储密钥
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
是密钥名称。
- 通过引用密钥名称和类型为
s3
来创建一个 TempoStack 实例
spec:
storage:
secret:
name: tempostack-dev-s3
type: s3
AWS 安全令牌服务 (STS) 安装
- 创建一个自定义 AWS IAM 角色,并与 Tempo 的 Kubernetes
ServiceAccount
建立信任关系
{
"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"
]
}
}
}
]
}
- 创建一个 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 attach-role-policy \
--role-name "tempo-s3-access" \
--policy-arn "arn:aws:iam::aws:policy/AmazonS3FullAccess"
创建一个包含以下键的对象存储密钥
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
是密钥名称。
- 通过引用密钥名称和类型为
s3
来创建一个 TempoStack 实例
spec:
storage:
secret:
name: tempostack-dev-s3
type: s3
Azure
要求
- 在 Azure 上创建一个存储桶。
安装
创建一个包含以下键的对象存储密钥
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
是密钥名称。
- 通过引用密钥名称和类型为
azure
来创建一个 TempoStack 实例
spec:
storage:
secret:
name: tempostack-dev-azure
type: azure
Google Cloud Storage
要求
安装
将从 GCP 收到的服务帐号凭据复制到文件
key.json
中。创建一个包含键
bucketname
和key.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
被复制到的文件路径。
- 通过引用密钥名称和类型为
gcs
来创建一个 TempoStack 实例
spec:
storage:
secret:
name: tempostack-dev-gcs
type: gcs
MinIO
要求
在您的集群上部署 MinIO,例如使用MinIO Operator 或其他方法。
使用 CLI 在 MinIO 上创建一个存储桶。
安装
创建一个包含以下键的对象存储密钥
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
是密钥名称。
- 通过引用密钥名称和类型为
s3
来创建一个 TempoStack 实例
spec:
storage:
secret:
name: tempostack-dev-minio
type: s3
OpenShift Data Foundation
要求
在您的集群上部署OpenShift Data Foundation。
通过 ObjectBucketClaim 创建一个存储桶。
安装
创建一个包含以下键的对象存储密钥
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_NAME
、ACCESS_KEY_ID
和 ACCESS_KEY_SECRET
的值。
- 通过引用密钥名称和类型为
s3
来创建一个 TempoStack 实例
spec:
storage:
secret:
name: tempostack-dev-odf
type: s3