Здесь описывается решение, в котором вы храните файлы yaml в репозитории GitHub отдельно от репозитория, в котором хранится код вашего проекта. Итак, два репозитория:
- Репозиторий проекта GitHub
- Инфраструктурный репозиторий GitHub (IaC)
Я предполагаю, что затем Flux указывает на репозиторий инфраструктуры, чтобы, когда там вносятся изменения, Flux встраивал кластер с желаемыми изменениями, которые теперь объявлены в репозитории. (Мы используем ArgoCD). Когда вы вносите изменения в репозиторий проекта, действие GitHub создает новый образ (с новым тегом) и отправляет его в ваш реестр контейнеров Azure.
Затем вы спрашиваете, как сообщить инструменту CI / CD (например, Flux) о новом теге изображения, чтобы он мог получить новое изображение.
Рекомендуется рассмотреть возможность использования Kustomize для управления обновлением тега в репозитории инфраструктуры, чтобы инструмент CI/CD автоматически обнаруживал это изменение в репозитории и соответствующим образом обновлял кластер, используя новый образ.
Для этого потребуется следующее:
Добавьте файл Kustomization.yaml в репозиторий инфраструктуры, который содержит а) манифесты yaml, описывающие вашу инфраструктуру для проекта, и б) тег изображения, который нужно заменить.
apiVersion: kustomize.config.k8s.io/v1beta1
вид: Кастомизация
Ресурсы:
- ресурс1.yaml
- ресурс2.yaml
- ...
картинки:
- name: имя изображения в манифесте развертывания
newTag: подлежащий замене
Затем в рабочем процессе GitHub Action в репозитории проекта используйте действие action/checkout@v2, чтобы получить удаленный репозиторий инфраструктуры. Затем добавьте действие imranismail/setup-kustomize@v1 и используйте его для замены вкладки изображения. Затем отправьте изменения обратно в репозиторий инфраструктуры. Пример ниже, измените в соответствии с вашей ситуацией:
построить шаги здесь
развертывать:
потребности: построить
запуски: ubuntu-последняя
шаги:
- имя: Checkout удаленное репо
использует: action/checkout@v2
с:
репозиторий: {ваш репозиторий на github}
токен: ${{ secrets.INFRA_REPO_TOKEN }}
путь: инфра-репо
- имя: Настройка Kutomize
использует: imranismail/setup-kustomize@v1
с:
настроенная версия: "3.6.1"
- name: Выключить тег изображения
запустить: |
cd infra-repo/{имя репозитория}
настроить изменить набор изображений {имя изображения}: {тег}
- имя: Зафиксировать и нажать
запустить: |
cd infra-repo/{имя репозитория}
git config --local user.email [email protected]
git config --local user.name github-действия
git commit -am «обновляет тег изображения»
git push
Эти релевантные ссылки также должны предоставить вам информацию, необходимую для правильного построения вашего рабочего процесса: