#kubernetes #deployment #configmap #argocd #gitops
Вопрос:
Я хочу повторно развернуть приложение в k8s с использованием GitOps(ArgoCD) в случае изменения только карты конфигурации, как ArgoCD поймет, чтобы перезапустить контейнер, как мы все знаем, без перезапуска контейнера новая карта конфигурации не вступит в силу.
Сценарий — Если один контейнер запущен из ArgoCD, и мне нужно изменить файл yaml configmap в GitHub, и ArgoCD автоматически поймет и синхронизирует обновленные значения, но контейнер не перезапустится, так как мы не изменяем файлы Yaml развертывания, поэтому как карта конфигурации вступит в силу в контейнере
Ответ №1:
Нашел обходной путь для вышеуказанного вопроса, мы можем включить параметр(Номер сборки Дженкинса) в качестве переменной env в конфигурацию развертывания, и он будет обновляться при каждой сборке из конвейера CI, поэтому в случае изменения конфигурации только в репозитории Git развертывание также будет развернуто, потому что параметр Номер сборки изменится после запуска конвейеров, и, как мы все знаем, ArgoCD автоматически запустится, как только любое изменение будет выполнено в репозитории Git, подключенном к ArgoCD
Ответ №2:
Сам ArgoCD не справляется с этим, однако другие инструменты могут это сделать. С помощью Helm это обычно обрабатывается внутри диаграммы путем хэширования содержимого конфигурации в аннотации в шаблоне модуля. Kustomize предлагает конфигурационную карту и генераторы секретов, которые помещают хэш в имя объекта и переписывают шаблон модуля, чтобы включить его. Существуют также операторские решения, такие как Reloader, который выполняет аналогичный трюк с Helm, но через оператора.