Как обновить пароль для репозитория AWS ECR в Kubernetes?
Я создал частный реестр докеров с помощью AWS ECR. Я хочу использовать его с кластером Kubernetes, управляемым Rancher, но пароль к реестру меняется AWS каждые 12 часов. Как сохранить его в секрете в кластере?
1 ответ
Самый простой способ создать и обновить секрет реестра Docker в Rancher 2.x для репозитория AWS ECR — настроить задание CRON, которое использует AWS CLI и Kubectl.
- Войдите на хост-компьютер, на котором работает кластер.
- Установите интерфейс командной строки AWS и настройте его для использования роли IAM, которая может читать учетные данные ECR.
- Проверьте конфигурацию CLI с помощью этой команды:
aws ecr --region <регион_вашего_ecr> get-login-password
- Установите kubectl и настройте его с помощью yaml для кластера, в котором вы хотите определить секрет, затем запустите
kubectl get pods
чтобы убедиться, что все в порядке. - Создайте такой сценарий оболочки (необходимо удалить, поскольку по какой-то причине нет возможности обновить/перезаписать секрет):
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 часов (AWS сбрасывает пароль каждые 12 часов, так что на всякий случай).
Секрет будет отображаться в проекте по умолчанию для кластера и будет использоваться каждый раз, когда Kubernetes захочет сделать что-то, связанное с вашим реестром ECR.