远程存储访问授权

    在 AWS 云环境中,不同的类型的 Kubernetes 集群提供了不同的权限授予方式。本文分别介绍以下三种权限授予配置方式。

    AWS 的客户端支持读取进程环境变量中的 以及 AWS_SECRET_ACCESS_KEY 来获取与之相关联的用户或者角色的权限。

    创建 s3-secret secret,在以下命令中使用 AWS 账号的 AccessKey 和 SecretKey 进行授权。该 secret 存放用于访问 S3 兼容存储的凭证。

    通过将用户的 IAM 角色与所运行的 Pod 资源进行绑定,使 Pod 中运行的进程获得角色所拥有的权限,这种授权方式是由 提供。

    注意

    • 使用该授权模式时,可以参考 kube2iam 文档在 Kubernetes 集群中创建 kube2iam 环境,并且部署 TiDB Operator 以及 TiDB 集群。
    • 该模式不适用于 网络模式,请确保参数 spec.tikv.hostNetwork 的值为 false
    1. 创建 IAM 角色:

      可以参考 AWS 官方文档来为账号创建一个 IAM 角色,并且通过 为 IAM 角色赋予需要的权限。由于 需要访问 AWS 的 S3 存储,所以这里给 IAM 赋予了 AmazonS3FullAccess 的权限。

    远程存储访问授权 - 图2注意

    arn:aws:iam::123456789012:role/user 为步骤 1 中创建的 IAM 角色。

    通过将用户的 IAM 角色与 Kubeneters 中的 资源进行绑定, 从而使得使用该 ServiceAccount 账号的 Pod 都拥有该角色所拥有的权限,这种授权方式由 EKS Pod Identity Webhook 服务提供。

    使用该授权模式时,可以参考 创建 EKS 集群,并且部署 TiDB Operator 以及 TiDB 集群。

    1. 在集群上为服务帐户启用 IAM 角色:

    2. 创建 IAM 角色:

      可以参考 AWS 官方文档创建一个 IAM 角色,为角色赋予 AmazonS3FullAccess 的权限,并且编辑角色的 Trust relationships

    3. 绑定 IAM 到 ServiceAccount 资源上:

    4. 将 ServiceAccount 绑定到 TiKV Pod:

      将 修改为 tidb-backup-manager,等到 TiKV Pod 重启后,查看 Pod 的 serviceAccountName 是否有变化。

    注意

    arn:aws:iam::123456789012:role/user 为步骤 2 中创建的 IAM 角色。

    GCS 账号授权