Принудительное развертывание на Rancher, когда AWS CodeBuild создает новый образ контейнера

У меня есть кластер Rancher 2.5, работающий на AWS EKS. Мой CI выполняется в CodeBuild через веб-перехватчик к репозиторию Github. Файл buildspec.yml отлично работает для запуска сборки, маркировки контейнеров и последующей отправки их в мой частный реестр на AWS ECR, но я не нашел простого способа затем запустить обновление развертывания в кластере, чтобы сообщить ему доступна новая версия контейнера. Как мне это сделать?

1 ответ

Для этого вам нужно получить файл kubeconfig от Rancher и поместить его куда-нибудь в репозиторий github, который клонируется CodeBuild. Затем вы изменяете файл buildspec.yml, добавляя команду или команды после успешного завершения сборки, изображений были помечены и отправлены в реестр, чтобы развернуть контейнер(ы) в кластере. В большинстве случаев это означает, что это произойдет в самом конце раздела post_build файла buildspec.yml. Что-то вроде этого:

      - kubectl set image deployment <your_deployment> <your_deployment>=<docker_registry_or_your_private_registry>/<your_container>:<the_tag_you_just_created> --record=true --kubeconfig=<location_of_kubeconfig_in_the_repo>

Это вызовет изменение, но имейте в виду, что новый тег должен отличаться от тега, который в настоящее время используется в развертывании. В противном случае ничего не произойдет, поскольку K8S считает, что развертывание не требуется, если тег тот же. Вот почему использование:latestв ваших тегах с этим не сработает, и это вообще плохая идея.

Другие вопросы по тегам