Здесь описывается решение, в котором вы храните файлы 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 github-actions@github.com
      git config --local user.name github-действия
      git commit -am «обновляет тег изображения»
      git push
Эти релевантные ссылки также должны предоставить вам информацию, необходимую для правильного построения вашего рабочего процесса: