Рейтинг:0

Как настроить Flux для развертывания последнего тега образа для каждой сборки?

флаг cn

Я добавил действия github для создания образа докера для каждой последней фиксации и отправки его в наш реестр контейнеров в Azure.

Мы создали файлы yaml для развертывания образа Docker в kubernetes на Azure. И развернул поток для автоматической синхронизации при любых изменениях в файлах yaml.

Как установить поток получить последний образ из реестра контейнеров, когда появится новая сборка?

флаг au
Не уверен, что я компетентен написать ответ, так как мы используем ArgoCD с AKS и ACR вместо Flux. Однако на всякий случай мы используем действие Kustomize gh со стандартным действием проверки ( imranismail/setup-kustomize@v1 ) для обновления тега изображения в репозитории удаленной инфраструктуры.
Sara June avatar
флаг cn
Мы все еще находимся на стадии POC, поэтому вы можете указать мне соответствующие ссылки на компакт-диске ARGO, тогда я попробую выполнить проект с этим
флаг au
Чуть позже я напишу это как ответ и вставлю соответствующие ссылки. Я думаю, что это в равной степени относится и к Flux.
Рейтинг:2
флаг au

Здесь описывается решение, в котором вы храните файлы yaml в репозитории GitHub отдельно от репозитория, в котором хранится код вашего проекта. Итак, два репозитория:

  1. Репозиторий проекта GitHub
  2. Инфраструктурный репозиторий 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

Эти релевантные ссылки также должны предоставить вам информацию, необходимую для правильного построения вашего рабочего процесса:

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.