我正在努力解决使用 S3 存储桶进行灭霸的想法。
从配置中可以看出,我们必须为 S3 存储桶提供访问权限和密钥,但它们是直接编写的,因为代码存储在 git 中,因此任何人都可以访问存储桶。
有没有将它们作为 kubernetes 机密提供?我正在尝试在 EKS 上运行 prometheus-operator
谢谢,
我正在努力解决使用 S3 存储桶进行灭霸的想法。
从配置中可以看出,我们必须为 S3 存储桶提供访问权限和密钥,但它们是直接编写的,因为代码存储在 git 中,因此任何人都可以访问存储桶。
有没有将它们作为 kubernetes 机密提供?我正在尝试在 EKS 上运行 prometheus-operator
谢谢,
对于 EKS >= 1.13,您可以使用IAM Role for Service Account。它的要点是首先创建一个可以访问 S3 存储桶的 IAM 角色,并更新信任策略以信任 EKS 集群的 OIDC 身份提供者sts:AssumeRoleWithWebIdentity
。然后,您在 EKS 中使用 IAM 角色的 ARN ( ) 创建和注释服务账户eks.amazonaws.com/role-arn: <IAM_ROLE_ARN>
,并将此服务账户分配给您的 pod。此后,从 pod 中的 SDK 到 AWS 的 API 调用(SDK 必须sts:AssumeRoleWithWebIdentity
在凭证链中支持)将在 IAM 角色的情况下完成。
对于 Prometheus 和 Thanos,您需要注释 Prometheus 副本 pod(供 Thanos sidecar 容器使用 IAM 角色)和 Thanos 存储网关 pod 使用的服务帐户。
更多细节可以在AWS 官方文档中找到。
假设您想明确地传递带有身份验证数据的存储桶配置,那么您可以使用两个命令行选项来实现:
--objstore.config-file=FILEPATH
--objstore.config=CONFIG_CONTENTS
使用 1. 您可以挂载秘密并将 thanos 指向该位置使用 2 您可以使用 env 变量并将秘密加载到该变量中,例如:
- args:
- sidecar
(...)
- --objstore.config=$(OBJSTORE_CONFIG)
env:
- name: OBJSTORE_CONFIG
valueFrom:
secretKeyRef:
key: thanos-bucket.yaml
name: thanos-service-account
还有其他一些使用身份信息的方法,它们是特定于云的。我不熟悉 AWS 产品,所以我会向您 推荐 thanos 文档