Введение
Argo CD – популярная реализация открытого исходного кода для выполнения непрерывной доставки GitOps поверх Kubernetes. Ваши приложения, определения, конфигурации и среды должны быть декларативными и контролироваться версиями. Также развертывание приложений и управление их жизненным циклом должно быть автоматизированным, аудиторным и понятным. Все это можно сделать с помощью Argo.
Argo CD придерживается тех же шаблонов и принципов GitOps, следовательно, поддерживает состояние вашего кластера, используя декларативный подход. Синхронизация происходит через репозиторий Git, где хранятся ваши манифесты Kubernetes. Манифесты Kubernetes могут быть указаны несколькими способами:
- Приложения Kustomize.
- Чарты Helm.
- Приложения Ksonnet.
- Файлы Jsonnet.
- Простая директория YAML/json манифестов.
- Любой пользовательский инструмент управления конфигурацией, настроенный как плагин управления конфигурацией.
Как и каждое приложение, запущенное в кластере Kubernetes, Argo CD настраивается с помощью определений пользовательских ресурсов (CRD), хранящихся внутри YAML-манифестов. Самый важный из них – это CRD Application. В приложении Argo CD вы определяете, какой репозиторий Git должен использоваться для синхронизации с каким кластером Kubernetes. Это может быть тот же кластер Kubernetes, где развернут Argo CD, или внешний.
Argo CD реализован как контроллер Kubernetes, который непрерывно отслеживает работающие приложения и сравнивает текущее (или актуальное) состояние с желаемым целевым состоянием (как указано в репозитории Git). Развернутое приложение, у которого актуальное состояние отличается от целевого, считается OutOfSync
. Argo CD отображает и визуализирует различия, предоставляя возможности автоматической или ручной синхронизации актуального состояния обратно к желаемому целевому состоянию.
Argo CD предлагает множество функций, наиболее заметные из которых:
- Поддержка нескольких инструментов управления конфигурациями/шаблонизации, таких как:
Kustomize
,Helm
,Ksonnet
,Jsonnet
,plain-YAML
. - Способность управлять и развертывать на нескольких кластерах.
- Интеграция SSO (
OIDC
,OAuth2
,LDAP
,SAML 2.0
,GitHub
,GitLab
,Microsoft
,LinkedIn
). - Многопользовательский режим и политики RBAC для авторизации.
- Анализ статуса здоровья ресурсов приложения.
- Откат/Откатить к любой настроенной конфигурации приложения, зафиксированной в репозитории Git.
- Автоматизированное обнаружение и визуализация “дрейфа” конфигурации.
- Веб-интерфейс, предоставляющий в реальном времени обзор активности приложения.
- Интерфейс командной строки для автоматизации и интеграции с CI.
- Интеграция с вебхуками (GitHub, BitBucket, GitLab).
- Хуки PreSync, Sync, PostSync для поддержки сложных развертываний приложений (например, blue/green и обновления по канарейкам).
- Метрики Prometheus.
В этом руководстве вы узнаете, как:
- Использовать
Helm
для развёртыванияArgo CD
на ваш кластерDOKS
. - Синхронизировать состояние приложений вашего кластера Kubernetes с репозиторием
Git
(используя принципыGitOps
). - Развертывать и управлять приложениями через Argo CD.
По завершении всех шагов этого руководства у вас должен быть кластер DOKS
с развернутым Argo CD
, который будет:
- Обрабатывать согласование кластера, через CRD-объекты Application.
- Управлять выпусками Helm, используя источники Helm, определенные внутри объектов CRD приложений.
Обзор DOKS и Argo CD для Helm Releases
Ниже приведена схема того, как Argo CD управляет приложениями Helm, размещенными с использованием репозитория Git:
Содержание
- Введение
- Предварительные требования
- Понимание концепций Argo CD для развертывания приложений
- Установка Argo CD
- Доступ и изучение веб-интерфейса Argo CD
- Знакомство с интерфейсом командной строки Argo CD
- Загрузка приложений Argo CD
- Использование наборов приложений Argo CD
- Деинсталляция приложений Argo CD
- Заключение
Предварительные требования
Для выполнения этого учебного пособия вам понадобятся:
- A working
DOKS
cluster that you have access to. Please follow the Starter Kit DOKS Setup Guide to find out more.to find out more. - A GitHub repository and branch, to store Argo CD and your applications manifests. Must be created beforehand.
- A Git client, for cloning the
Starter Kit
repository. - CLI Kubectl, для взаимодействия с
Kubernetes
. Следуйте этим инструкциям, чтобы подключиться к вашему кластеру с помощьюkubectl
иdoctl
. - Argo CLI, для взаимодействия с
Argo CD
с помощью интерфейса командной строки. - Kubeseal, для шифрования секретов и взаимодействия с контроллером Sealed Secrets.
- Helm, для управления релизами и обновлений
Argo CD
(необязательно, но рекомендуется в общем для систем в производстве).
Понимание концепций Argo CD для развертывания приложений
Argo CD использует основной концепт Приложения для управления развертыванием и жизненным циклом приложений. Внутри манифеста приложения Argo CD вы определяете Git-репозиторий, хранящий определения вашего приложения, а также соответствующий кластер Kubernetes для развертывания приложений. Другими словами, приложение Argo CD определяет отношение между исходным репозиторием и кластером Kubernetes. Это очень лаконичный и масштабируемый дизайн, позволяющий ассоциировать несколько источников (Git-репозиториев) и соответствующих кластеров Kubernetes.
A major benefit of using applications is that you don’t need to deploy Argo to each cluster individually. You can use a dedicated cluster for Argo, and deploy applications to all clusters at once from a single place. This way, you avoid Argo CD downtime or loss, in case other environments have issues or get decommissioned.
Кроме того, вы можете группировать похожие приложения в Проект. Проекты позволяют логически группировать приложения и связанные роли/разрешения при работе с несколькими командами. Если не указано иное, каждое новое приложение принадлежит к проекту default
. Проект default
создается автоматически и не имеет ограничений. Проект по умолчанию можно изменить, но не удалить.
Starter Kit
использует default
проект для быстрого старта с использованием Argo CD. Затем вы узнаете, как создать Application
для каждого компонента Starter Kit
и использовать Helm charts
в качестве исходного кода приложения
. Argo CD не ограничивается только источниками Helm, и вы также можете использовать мощь Kustomize, Ksonnet, Jsonnet и т. д. Пожалуйста, ознакомьтесь с страницей исходных кодов приложений для получения более подробной информации.
Хотя вы можете использовать графический интерфейс пользователя (веб-интерфейс) Argo CD для создания приложений, Starter Kit полагается на декларативный способ GitOps, с помощью YAML-манифестов. Каждая конфигурация YAML действует как рецепт для каждого приложения, поэтому ее можно сохранить в репозитории Git. Это означает, что вы всегда можете воссоздать свою установку Argo CD, если воссоздадите свою среду или перейдете на другой кластер. Более важно, вы можете проводить аудиты и отслеживать каждое изменение через историю Git. Хорошей практикой также является иметь файлы конфигурации Argo CD в отдельном репозитории Git, чем тот, который используется для разработки вашего приложения. Вы можете прочитать лучшую страницу практик на официальном веб-сайте документации Argo CD для получения дополнительной информации по этой теме.
Важное примечание:
Важным аспектом, который следует иметь в виду, является то, что по умолчанию Argo CD не автоматически синхронизирует ваши новые приложения. Когда приложение ArgoCD впервые создается, его состояние – OutOfSync
. Это означает, что состояние репозитория Git, на который указывает приложение ArgoCD, не соответствует состоянию кластера Kubernetes. Создание нового приложения ArgoCD не запускает автоматическое развертывание в целевом кластере.
Для включения автоматической синхронизации и удаления устаревших ресурсов (очистки) вам необходимо создать syncPolicy
. Вы также можете настроить Argo CD на автоматическое откатывание ручных изменений, внесенных с помощью kubectl
. Больше информации о политиках автоматической синхронизации можно найти на официальном веб-сайте документации.
Типичный CRD приложения
, использующий источник из репозитория Git, выглядит следующим образом:
Пояснения к вышеуказанной конфигурации:
spec.project
: Сообщает Argo CD, какой проект использовать для приложения (default
в этом примере).spec.source.repoURL
: URL репозитория Git, используемого для синхронизации состояния кластера.spec.source.targetRevision
: Ревизия репозитория Git, используемая для синхронизации (также может быть именем ветки или тега).spec.source.path
: Путь репозитория Git, где хранятся исходные файлы (YAML манифесты).spec.destination.server
: Адрес целевого кластера Kubernetes. Обычно указывает наhttps://kubernetes.default.svc
, если Argo CD используется в том же кластере, где он развернут.spec.destination.namespace
: Пространство имен Kubernetes, которое следует использовать для вашего приложения.spec.syncPolicy.automated
: Включает автоматическую синхронизацию приложений в вашем кластере с репозиторием Git.spec.syncPolicy.automated.prune
: Параметр prune указывает, следует ли удалять ресурсы из кластера, которые больше не найдены в источниках в рамках автоматической синхронизации.spec.syncPolicy.automated.selfHeal
: Указывает, следует ли восстанавливать ресурсы обратно в их желаемое состояние при ручной модификации в кластере (например, черезkubectl
).
Вы также можете использовать репозитории Helm в качестве источника для установки приложений в вашем кластере. Типичный CRD приложения
, использующий источник репозитория Helm, выглядит примерно следующим образом (аналогично примеру с репозиторием Git, за исключением использования репозитория Helm chart):
Объяснения для вышеприведенной конфигурации:
spec.source.chart
: Чарт Helm, который следует использовать в качестве источника для приложения.spec.source.repoURL
: URL репозитория чартов Helm.spec.source.targetRevision
: Версия чарта Helm, которую следует использовать для приложения.spec.source.helm.releaseName
: Имя релиза Helm, которое следует создать в вашем кластере Kubernetes.spec.source.helm.values
: Указывает значения Helm, которые следует передать в шаблон helm, обычно определяются как блок.spec.destination.server
: Адрес целевого кластера Kubernetes. Обычно указывает наhttps://kubernetes.default.svc
, если Argo CD использует тот же кластер, где он развернут.spec.destination.namespace
: Пространство имен Kubernetes, используемое для вашего приложения.
Пожалуйста, продолжите и ознакомьтесь с дополнительной информацией о базовых концепциях Argo CD на официальном веб-сайте документации. Затем вы узнаете о доступных вариантах установки для развертывания Argo CD в вашем кластере Kubernetes.
Установка Argo CD
Argo CD можно установить с помощью kubectl
или Helm
:
- Используя
kubectl
и файл манифеста установки. Этот метод не предоставляет прямого контроля над различными параметрами установки. Если вы не очень знакомы с установками на основе Helm, это самый простой вариант для начала. - Установка с помощью Helm. Предлагает более детальный контроль за развертыванием и жизненным циклом приложения Argo CD. Рекомендуется для настройки
HA
(высокой доступности) и если Argo CD используется впроизводственной
среде.
Затем, в зависимости от необходимых функций, у вас есть два варианта:
- Режим
Мульти-арендатора
. Этот тип установки обычно используется для обслуживания нескольких команд разработчиков приложений в организации и поддерживается командой платформы. Конечные пользователи могут получить доступ к Argo CD черезAPI-сервер
с использованиемвеб-интерфейса
илиCLI argocd
. - Режим только
Core
. Это урезанная установка без графического пользовательского интерфейса, сервера API, SSO и т. д., и устанавливает легковесную (не-HA) версию каждого компонента.
Starter Kit использует режимы Multi-Tenant
и High Availability
для установки Argo CD в ваш кластер DOKS. Таким образом, у вас будет надежная настройка, и вы сможете изучить все доступные функции, включая пользовательский интерфейс. Пожалуйста, посетите страницу документации по методам установки, чтобы получить более подробную информацию по этой теме.
Установка на основе Kubectl
Этот метод требует kubectl
и состоит из двух шагов:
- Создайте
namespace
для развертывания самого Argo CD. - Запустите манифест установки HA с помощью
kubectl
.
Пожалуйста, выполните нижеприведенные команды в указанном порядке:
Теперь проверьте успешность установки. Сначала проверьте, все ли развертывания Argo CD здоровы:
Вывод будет похож на следующий (проверьте столбец READY
– все Pods
должны быть запущены):
Для режима HA
сервер Argo CD должен иметь минимальное значение replicaset
равное 2
. Если по какой-то причине некоторые развертывания не здоровы, пожалуйста, проверьте события Kubernetes и журналы для затронутых компонентов Pods.
Установка на основе Helm
Для этого метода необходимо установить Helm на вашем локальном компьютере. Набор инструментов предоставляет файл значений Helm, готовый к использованию, чтобы начать работу, и устанавливает Argo CD в режиме HA (без автомасштабирования).
Пожалуйста, выполните следующие шаги, чтобы завершить установку на основе Helm:
- Сначала клонируйте каталог Starter Kit (если еще этого не сделано) и перейдите в каталог вашей локальной копии:
- Затем добавьте репозиторий Helm Argo CD:
- Теперь выполните поиск доступных для установки диаграмм в репозитории Helm
argo
:
Вывод будет похож на:
- Затем откройте и проверьте файл значений Helm Argo CD, предоставленный в репозитории Starter Kit, используя редактор на ваш выбор (желательно с поддержкой YAML-линта). Например, вы можете использовать VS Code:
- Наконец, разверните Argo CD на своем кластере DOKS:
–create-namespace \
Примечание:
Используется конкретная
версия диаграммы Helm
. В данном случае выбрана версия 4.9.4
, которая соответствует версии приложения 2.4.0
. Это хорошая практика в целом, заблокировать на конкретной версии. Это помогает получать предсказуемые результаты и позволяет контролировать версии с помощью Git
.
Теперь проверьте, была ли успешной установка релиза Helm:
Выходной вид аналогичен (значение столбца STATUS
должно быть установлено в deployed
):
Наконец, проверьте состояние развертывания приложения Argo CD:
Выходной вид аналогичен (проверьте столбец READY
– все Pods
должны быть запущены):
Сервер Argo CD должен иметь минимальное значение replicaset
равное 2
для режима HA
. Если по какой-либо причине некоторые развертывания не работают корректно, пожалуйста, проверьте события Kubernetes и журналы для затронутых компонентов Pods.
Вы также можете найти больше информации о Helm-чарте Argo CD, обратившись к общественно поддерживаемому репозиторию.
Затем вы узнаете, как получить доступ и исследовать основные функции графического пользовательского интерфейса, предоставленного Argo CD.
Доступ и исследование веб-интерфейса Argo CD
Одна из интересных особенностей, которую предлагает Argo CD, – это веб-интерфейс, используемый для выполнения различных административных задач и просмотра статуса развертывания приложений. Вы можете создавать приложения, используя графический интерфейс пользователя, и взаимодействовать с Argo CD различными способами. Еще одной важной функцией является возможность проверки состояния каждого приложения и доступ к событиям Kubernetes, а также к журналам вашего приложения. Более того, Argo CD предоставляет визуальное представление всех объектов Kubernetes (репликационные наборы, поды и т. д.), используемых каждым развертыванием приложения.
Веб-интерфейс можно получить, портовидя службу Kubernetes argocd-server
. Выполните следующую команду в оболочке терминала:
Теперь откройте веб-браузер и перейдите на localhost:8080 (в настоящее время проигнорируйте недействительные сертификаты TLS). Вы увидите страницу входа в Argo CD. Имя пользователя администратора по умолчанию – admin
, а пароль генерируется случайным образом при установке. Вы можете получить его, выполнив следующую команду:
Затем вы будете перенаправлены на страницу панели приложений. Отсюда вы можете просматривать, создавать или управлять приложениями через интерфейс (доступен также редактор YAML), а также выполнять операции синхронизации или обновления:
Если вы щелкнете по любому плитке приложения, также будет показано визуальное представление всех задействованных объектов:
В следующем разделе вы можете управлять вашими проектами приложений, репозиториями и кластерами:
Наконец, раздел с информацией о пользователе показывает доступных пользователей и позволяет обновлять пароль администратора:
Вы можете поиграться и изучить каждый раздел и подраздел в подробностях, чтобы увидеть все доступные функции. Затем вы узнаете, как использовать аналогичную CLI-версию, называемую argocd
.
Argo CD позволяет использовать тот же набор функций как через веб-интерфейс, так и через CLI. Чтобы использовать CLI argocd
, вам нужно открыть отдельное окно оболочки и просто ввести argocd
без аргументов. По умолчанию он отобразит доступные команды и параметры:
Для любой команды или подкоманды вы можете вызвать соответствующую страницу справки, используя следующий шаблон: argocd <команда/подкоманда> --help
. Например, если вы хотите проверить, какие параметры доступны для команды app
:
# Получить детали приложения
Пожалуйста, продолжайте изучать другие команды/подкоманды, чтобы увидеть все доступные параметры. Затем вы узнаете, как настроить ваше первое приложение Argo CD, которое автоматически развернет все компоненты Starter Kit.
При свежей установке Argo CD не знает, откуда синхронизировать ваши приложения или какие репозитории Git доступны для загрузки манифестов приложений. Поэтому первым шагом является выполнение одноразовой операции, называемой загрузкой приложений. Все операции, представленные в этом разделе, можно выполнить с помощью интерфейса командной строки argocd или графического интерфейса пользователя.
Существует несколько способов загрузки вашего кластера (например, с помощью скриптов), но обычно пользователи Argo CD используют шаблон приложения приложений
. Это означает, что вы начнете с создания родительского приложения с использованием интерфейса командной строки good
(или веб-интерфейса), которое в свою очередь будет ссылаться на и загружать остальные приложения в вашем кластере Kubernetes.
Подготовка структуры репозитория Git
Сначала вам нужно подготовить свой репозиторий Git для использования согласованной структуры. В следующем примере вы создадите структуру макета репозитория Git, аналогичную:
- Пожалуйста, откройте терминал и выполните следующие шаги для создания макета вашего репозитория Git:
- Сначала клонируйте свой git-репозиторий, используемый для тестирования Argo CD (убедитесь, что замените соответствующие заполнители
<>
):
- Затем измените каталог на вашу локальную копию и создайте структуру каталогов (убедитесь, что замените соответствующие заполнители
<>
):
- Скопируйте манифесты приложений, предоставленные для каждого компонента в репозитории Starter Kit (вы также можете посмотреть и посмотреть, как структурирован каждый манифест):
Наконец, зафиксируйте изменения и отправьте их в основной репозиторий.
Затем вы создадите развертывание родительского приложения и позволите Argo CD автоматически синхронизировать все приложения Starter Kit с вашим кластером DOKS.
Использование шаблона приложений через интерфейс командной строки Argo CD
В этом разделе вы узнаете, как использовать CLI argocd для создания и использования шаблона app of apps
для развертывания всех компонентов Starter Kit в вашем кластере DOKS. Ниже приведена основная концепция:
Сначала вам нужно перенаправить порт Argo CD основного сервера на вашем локальном компьютере в отдельном окне терминала:
Затем требуется доступ к серверу API Argo CD для работы argocd
CLI. Используя другое окно терминала, вам необходимо аутентифицировать клиент argocd
с вашим экземпляром сервера Argo CD:
Выходной результат будет похож на:
Затем выполните следующую команду для создания родительского приложения starter-kit-apps
(убедитесь, что заменили заполнители <>
соответствующим образом):
- –dest-namespace argocd \
- –dest-server https://kubernetes.default.svc \
- Вышеуказанная команда создаст новое приложение
Argo CD
с именемstarter-kit-apps
в пространстве именargocd
, настроенное:
Целевой кластер Kubernetes, где развернут Argo CD, потому что параметр --dest-server
установлен на https://kubernetes.default.svc
.
Используйте репозиторий GitHub, установленный аргументом --repo
, чтобы синхронизировать ваш кластер.
Сканируйте и применяйте все манифесты приложений, найденные в каталоге clusters/dev/helm
(аргумент --path
).
Затем вам нужно синхронизировать приложение starter-kit-apps
(помните, что Argo CD не синхронизирует ничего по умолчанию, если не указано иное):
Выходной результат будет похож на:
После завершения вышеуказанной команды вы должны увидеть новое приложение в основной панели управления вашего сервера Argo CD. Пожалуйста, откройте веб-браузер и перейдите по адресу http://localhost:8080. Затем выберите вкладку Applications
и кликните на плитку starter-kit-apps
(обратите внимание на шаблон app of apps
, посмотрев на граф составления):
Вы также можете проверить новые приложения через CLI:
Вывод выглядит аналогично:
Родительское приложение starter-kit-apps
появится как синхронизированное, но дочерние приложения будут не синхронизированы. Затем вы можете либо синхронизировать все через веб-интерфейс, либо через CLI:
Операция синхронизации может занять некоторое время (до 5-10 минут), в зависимости от сложности и количества объектов Kubernetes всех развертываемых приложений.
Через некоторое время, пожалуйста, снова выведите список всех приложений:
- Вывод будет похожим на следующий (обратите внимание, что все приложения теперь синхронизированы):
Развертывание приложения Velero завершится неудачно и будет оставлено специально в состоянии SyncError
как упражнение для читателя, чтобы познакомиться и научиться диагностировать проблемы приложений в Argo CD. Пожалуйста, обратитесь к разделу Подсказки ниже, чтобы узнать, как диагностировать проблемы с приложением Argo CD.
Инициализация родительского приложения — это операция, выполняемая один раз. При последующих изменениях Git для каждого приложения Argo CD обнаружит отклонение и применит необходимые изменения. Argo CD по умолчанию использует механизм опроса
для обнаружения изменений в вашем Git-репозитории. Интервал обновления
по умолчанию установлен в 3 минуты
. Вместо полагания на механизм опроса вы также можете использовать возможности Git-вебхуков. Пожалуйста, посетите официальный сайт документации, чтобы узнать, как создать и настроить Argo CD для использования вебхуков Git.
Подсказки: Если вы хотите, чтобы родительское приложение синхронизировалось автоматически (и также включило автоматическое восстановление и автоматическое удаление), вы можете использовать следующую команду (не забудьте заменить заполнители <>
соответствующим образом):
–dest-namespace argocd \
–dest-server https://kubernetes.default.svc \
–sync-policy automated \
–auto-prune \
В случае любых сбоев синхронизации вы всегда можете проверить события Kubernetes для интересующего вас приложения (через argocd app get <application_name>
):
Вывод выглядит примерно так:
- Затем вы узнаете, как использовать
app of apps pattern
и выполнить те же шаги через графический интерфейс пользователя Argo CD. -
Использование шаблона App of Apps через веб-интерфейс Argo CD
-
В этом разделе вы узнаете, как использовать веб-интерфейс Argo CD для создания и использования шаблона
app of apps
для развертывания всех компонентов Starter Kit в вашем кластере DOKS. Ниже приведена иллюстрация основной концепции: -
Как показано на диаграмме выше, создание нового приложения через веб-интерфейс очень похоже на аналог в командной строке. Единственное отличие заключается в том, что вы будете перемещаться между различными панелями/окнами и использовать операции указания и щелчка. За кулисами Argo CD будет создавать необходимые CRD-объекты приложений и применять изменения к вашему кластеру Kubernetes.
-
Сначала откройте веб-браузер и войдите в веб-консоль Argo CD. Имя пользователя по умолчанию –
admin
, а пароль по умолчанию можно получить с помощью: - После входа вы будете перенаправлены на страницу панели приложений (при первоначальной установке панель приложений пуста). Затем нажмите на кнопку
Create Application
. Появится новая панель с запросом данных о приложении: - Пожалуйста, заполните каждое поле соответствующим образом:
Название приложения
: Новое название приложения (например, starter-kit-apps
).
Проект
: Название проекта, к которому принадлежит это приложение (при использовании Argo CD впервые, можно использовать default
).
Политика синхронизации
и Опции синхронизации
: Настройка политики синхронизации и параметров (например, Manual
, Automatic
, количество повторов, интервал между повторами и т. д.).
Исходный URL репозитория
: Адрес вашего репозитория GitHub – например, https://github.com/<ВАШ_ЛОГИН_GITHUB>/<ИМЯ_РЕПОЗИТОРИЯ_ARGOCD_GITHUB>.git
.
Исходный Путь
: Путь к каталогу репозитория GitHub, где хранятся манифесты приложения (например, clusters/dev/helm
).
Целевой URL кластера
: Целевой кластер Kubernetes для синхронизации с вашим репозиторием GitHub (например, https://kubernetes.default.svc
для локального кластера, где развернут Argo CD).
Целевое Пространство имен
: Пространство имен кластера Kubernetes, которое используется для приложений Argo CD (argocd
, обычно).
После заполнения всех данных о приложении нажмите кнопку Создать вверху. На странице панели приложений появится новый плиточный элемент приложения:
Если вы нажмете на плитку приложения, вы сможете наблюдать шаблон приложения
, глядя на граф композиции:
Если вы посмотрите на изображение выше, вы заметите, что все приложения помечены как OutOfSync
. Следующим шагом будет запуск операции синхронизации на родительском приложении. Затем все дочерние приложения также будут синхронизированы. Пожалуйста, нажмите на кнопку Sync
на плитке родительского приложения. На правой стороне появится новая панель (обратите внимание, что все дочерние приложения выбраны внизу):
Оставьте значения по умолчанию, затем нажмите кнопку Synchronize
вверху и посмотрите, как Argo CD каскадирует операцию синхронизации на все приложения:
Развертывание приложения Velero завершится с ошибкой и останется специально в состоянии SyncError
в качестве упражнения для читателя, чтобы познакомиться с и узнать, как диагностировать проблемы с приложением в Argo CD. Пожалуйста, обратитесь к разделу Подсказки ниже, чтобы узнать, как диагностировать проблемы с приложениями Argo CD.
Если все пройдет успешно, у всех приложений должна быть зеленая рамка, а статус должен быть Healthy
и Synced
. Процесс инициализации выполняется один раз. При последующих изменениях в Git для каждого приложения Argo CD обнаружит изменения и применит необходимые изменения. По умолчанию Argo CD использует механизм опроса
для обнаружения изменений в вашем Git-репозитории. Интервал обновления по умолчанию установлен на 3 минуты
. Вместо использования механизма опроса вы также можете воспользоваться возможностями веб-уведомлений Git. Пожалуйста, посетите официальный сайт документации, чтобы узнать, как создать и настроить Argo CD для использования Git веб-уведомлений.
Подсказки:
При необходимости вы можете настроить автоматическую синхронизацию родительского приложения, установив значение поля SYNC POLICY
на Automatic
. Чтобы включить автоматическое восстановление и автоматическое удаление, отметьте флажки PRUNE RESOURCES
и SELF HEAL
:
В случае сбоев синхронизации вы всегда можете просмотреть события Kubernetes для интересующего приложения. Используя веб-интерфейс, вы можете перейти к затронутой плитке приложения:
Затем щелкните по ссылке сообщения Sync failed
, выделенной красным цветом, из раздела LAST SYNC RESULT
в заголовке страницы приложения. Появится новая панель, показывающая полезную информацию о том, почему операция синхронизации не удалась:
- В следующем разделе вы узнаете, как управлять несколькими приложениями одновременно, используя единственный CRD –
ApplicationSet
. - Использование наборов приложений Argo CD
Application Sets – еще одна мощная функция, предлагаемая Argo CD. ApplicationSet Controller – это подпроект Argo CD, который добавляет автоматизацию приложений с помощью шаблонных определений. Эта функция помогает избежать повторений в ваших манифестах приложений (используйте принцип DRY).
Контроллер ApplicationSet устанавливается наряду с Argo CD (в том же пространстве имен), и он автоматически генерирует приложения Argo CD на основе содержимого нового настраиваемого ресурса ApplicationSet (CR).
Примечание:
Начиная с версии 2.3.x
Argo CD, вам не нужно устанавливать ApplicationSet Controller
отдельно, потому что он является частью основной установки Argo CD. Starter Kit использует версию >= 2.3.1
, поэтому вам ничего не нужно изменять.
Основная идея ApplicationSet
основана на наличии списка значений, действующих как генератор
, и шаблоне
, который заполняется значениями входного списка. Для каждого элемента из списка последовательно генерируется новый шаблон приложения. По сути, вы определяете один CRD ApplicationSet, а затем позволяете ему генерировать для вас столько CRD приложений ArgoCD, сколько вам нужно, на основе входных значений. Таким образом, вместо создания и работы с несколькими манифестами приложений
, вы управляете всем через один манифест
– ApplicationSet
.
Этот концепт также упрощает управление многокластерными
и многопрофильными
настройками с помощью параметризованных шаблонов приложений. Кроме генераторов списка, ApplicationSet включает и другие генераторы:
Генератор кластера: Использует определенные Argo CD кластеры для шаблонизации приложений.
Генератор Git: Использует файлы/каталоги репозитория Git для шаблонизации приложений.
Типичный CRD ApplicationSet
, использующий генератор списка
, выглядит следующим образом:
Применение вышеупомянутого ApplicationSet
к вашему кластеру Kubernetes приведет к созданию трех приложений Argo CD. Например, приложение для среды dev
будет создано следующим образом:
Шаблонные движки очень мощны по своей природе и предлагают множество возможностей. Пожалуйста, посетите основной веб-сайт документации ApplicationSet, чтобы узнать больше об этой функции.
Удаление (или удаление) приложений, управляемых Argo CD, выполняется путем удаления соответствующего манифеста из исходного репозитория Git. В случае приложений, созданных с использованием шаблона приложений
, вам нужно удалить только родительское приложение (либо через интерфейс командной строки, либо через веб-интерфейс). Затем все дочерние приложения будут удалены вместе с ними в рамках процесса.
- Как удалить родительское приложение
starter-kit-apps
(включая дочерние приложения) с использованием CLIargocd
: - Если вы хотите убедиться, что дочерние приложения и все их ресурсы будут удалены при удалении родительского приложения, убедитесь, что добавили соответствующий
finalizer
в вашеопределение приложения
:
Source:
https://www.digitalocean.com/community/developer-center/implementing-gitops-using-argo-cd