如何在 Kubernetes 中更新 AWS ECR 存储库的密码?

如何在 Kubernetes 中更新 AWS ECR 存储库的密码?

我使用 AWS ECR 创建了一个私有 Docker 注册表。我想将其与 Rancher 管理的 Kubernetes 集群一起使用,但 AWS 每 12 小时会更改一次注册表的密码。如何将其作为集群中的机密保持更新?

答案1

在 Rancher 2.x 中为 AWS ECR repo 创建和更新 docker-registry secret 的最简单方法是设置使用 AWS CLI 和 Kubectl 的 CRON 作业。

  • 登录集群运行的主机
  • 安装 AWS CLI 并将其配置为使用可以读取 ECR 凭证的 IAM 角色。
  • 使用以下命令测试 CLI 配置:

aws ecr --region <你的ecr区域> 获取登录密码

  • 安装 kubectl 并使用您想要定义秘密的集群的 yaml 对其进行配置,然后运行kubectl get pods以确保一切正常。
  • 创建一个像这样的 shell 脚本(删除是必要的,因为由于某种原因无法更新/覆盖秘密):
kubectl delete secret <name_of_the_docker_registry_secret>
kubectl create secret docker-registry <name_of_the_docker_registry_secret> \
  --docker-server=<your_ecr_registry_uri> \
  --docker-username=AWS \
  --docker-password=$(aws ecr --region <your_ecr's_region> get-login-password) \
  --docker-email=<your_notification_email>
  • 设置一个 cron 作业,每 6 小时运行一次此 shell 脚本(AWS 每 12 小时重置一次密码,以确保安全)。

该密钥将显示在集群的默认项目中,并且每当 Kubernetes 想要执行与您的 ECR 注册表相关的事情时都会使用它。

相关内容