【问题标题】:Thanos S3 Config灭霸 S3 配置
【发布时间】:2021-01-08 22:55:13
【问题描述】:

我正在努力了解如何使用 S3 存储桶进行灭霸。

从配置中可以看出,我们必须为 S3 存储桶提供访问权限和密钥,但它们是直接编写的,因为代码存储在 git 中,因此任何人都可以访问存储桶。

有没有将它们作为 kubernetes 机密提供?我正在尝试在 EKS 上运行 prometheus-operator

谢谢,

【问题讨论】:

    标签: prometheus prometheus-operator thanos


    【解决方案1】:

    对于 EKS >= 1.13,您可以使用 IAM Role for Service Account。它的要点是首先创建一个可以访问 S3 存储桶的 IAM 角色,并更新信任策略以信任 EKS 集群的 OIDC 身份提供者sts:AssumeRoleWithWebIdentity。然后,您使用 IAM 角色 (eks.amazonaws.com/role-arn: <IAM_ROLE_ARN>) 的 ARN 在 EKS 中创建和注释服务账户,并将此服务账户分配给您的 pod。此后,从 pod 内的 SDK 对 AWS 的 API 调用(SDK 必须支持凭证链中的sts:AssumeRoleWithWebIdentity)将在代入 IAM 角色的情况下完成。

    对于 Prometheus 和 Thanos,您需要注释 Prometheus 副本 pod(供 Thanos sidecar 容器使用 IAM 角色)和 Thanos 存储网关 pod 使用的服务帐户。

    更多详情请见AWS official docs

    【讨论】:

      【解决方案2】:

      假设您想明确地传递带有身份验证数据的存储桶配置,那么您可以使用 thanos 的两个命令行选项来实现:

      1. --objstore.config-file=FILEPATH
      2. --objstore.config=CONFIG_CONTENTS

      使用 1. 你可以挂载秘密并将灭霸指向那个位置 使用 2,您可以使用 env 变量并将机密加载到该变量中,例如:

            - args:
              - sidecar
      (...)
              - --objstore.config=$(OBJSTORE_CONFIG)                                                                                                                                                                                                                                   
              env:
              - name: OBJSTORE_CONFIG
                valueFrom:
                  secretKeyRef:
                    key: thanos-bucket.yaml
                    name: thanos-service-account
      

      还有一些其他方式可以使用特定于云的身份信息。我不熟悉 AWS 产品,所以我会向您推荐 thanos docs

      【讨论】:

        猜你喜欢
        • 2020-09-05
        • 2020-07-20
        • 2021-01-19
        • 2021-06-23
        • 2021-06-20
        • 1970-01-01
        • 1970-01-01
        • 2021-02-02
        • 1970-01-01
        相关资源
        最近更新 更多