Управление приложениями
Модуль непрерывной доставки приложений (Argo CD)
Argo CD ‒ декларативный инструмент непрерывной доставки GitOps, использующий Git-репозитории для определения желаемого состояния приложения.
Argo CD постоянно отслеживает состояние приложений, находящихся в кластере, относительно Git/Helm Repo таким образом, что:
- производит автоматическую доставку изменений при появлении изменений в приложении в Git/Helm Repo;
- автоматически приводит приложение в состояние, соответствующее данным в Git/Helm Repo при появлении изменений непосредственно в приложении. С дополнительной информацией можно ознакомиться на официальном сайте.
Установка и конфигурация
Для настройки Argo CD в интерфейсе кластера Комплекса нужно:
- в боковом меню открыть раздел "Сервисы и репозитории";
- перейти на страницу "Установленные сервисы";
- найти Модуль непрерывной доставки приложений (shturval-cd). Если модуль не отображается, следует перейти в раздел "Сервисы и репозитории"****, открыть страницу "Доступные чарты", найти чарт shturval-cd и нажать Установить. В случае если требуется устанавливать чарт shturval-cd после создания кластера, следует убедиться, что включены и находятся в режиме автообновления:
- CRD для модуля непрерывной доставки приложений (shturval-cd-crds);
- Модуль управления внешними подключениями (shturval-ingress-controller).
Конфигурация ресурсов (CPU, memory)
По умолчанию в модуле определены limits, requests на ресурсы (CPU, memory). При необходимости можно установить требуемые limits/requests ресурсов для ArgoCD, для чего требуется:
- подготовить ShturvalServicePatch для применения к спецификации (SSC) Модуля непрерывной доставки приложений (shturval-cd), в котором определить параметры limits/requests, как в следующем примере (описание параметров — в таблице 97):
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
name: <имя ресурса>
spec:
shturvalServiceConfigName: shturval-cd
customvalues:
controller:
resources:
limits:
cpu: <ваше значение параметра>
memory: <ваше значение параметра>
requests:
cpu: <ваше значение параметра>
memory: <ваше значение параметра>
Таблица 97 ‒ Параметры customvalues
- в кластере загрузить с помощью импорта манифестов подготовленный ShturvalServicePatch; После загрузки ShturvalServicePatch потребуется время для применения изменений.
Переход в Argo CD
Существуют четыре способа перехода в интерфейс Argo CD:
- по префиксу argocd в домене кластера, например argocd.clustername.ip-XX-XX-XX-XX.shturval.link;
- из дашборда клиентского кластера по кнопке Argo CD (SSO-авторизация);
- из неймспейса клиентского кластера по кнопке Argo CD. Если в неймспейсе видно кнопку Создать проект в Argo CD, значит в этом неймспейсе еще не создан проект. Кнопка перехода в интерфейс Argo CD станет доступна после успешного создания проекта (SSO-авторизация);
- из неймспейса shturval-cd/Сеть/Ingresses/shturval-cd-server. Для авторизации в интерфейсе Argo CD можно использовать свои учетные данные авторизации в Комплексе или учетные данные администратора Argo CD:
- логин: admin
- пароль можно получить в графическом интерфейсе Комплекса или консоли.
В графическом интерфейсе пароль можно найти в неймспейсе shturval-cd в секрете argocd-initial-admin-secret.
В консоли для получения пароля следует подключиться к кластеру с помощью команды:
kubectl -n shturval-cd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
Кастомизация интерфейса
Для кастомизации интерфейса ARGO CD нужно подготовить ShturvalServicePatch для применения к спецификации (SSC) Модуля непрерывной доставки приложений (shturval-cd), где прописать параметры кастомизации.
Пример ShturvalServicePatch (описание параметров ‒ в таблице 98):
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
name: <имя ресурса>
spec:
shturvalServiceConfigName: shturval-cd
customvalues:
configs:
styles: |
<ваше значение параметра>
cm:
ui.bannercontent: "<ваше значение параметра>"
ui.bannerpermanent: <ваше значение параметра>
Таблица 98 ‒ Параметры customvalues
Затем в кластере следует загрузить с помощью импорта манифестов подготовленный ShturvalServicePatch.
После загрузки ShturvalServicePatch потребуется время для применения изменений.
Подключение сертификата в ARGO CD
При подключении репозитория с использованием самоподписного или корпоративного сертификата можно настроить сертификаты из интерфейса ARGO CD. Для этого нужно:
- перейти в раздел "Settings → Repository certificates";
- нажать Add TLS certificate;
- в открывшемся окне ввести адрес репозитория (Repository server name) и TLS-сертификат в PEM-формате(TLS certificate (PEM format)); Следует обратить внимание**, что т**ело сертификата должно включать ----BEGIN CERTIFICATE---- и ----END CERTIFICATE----. Для сохранения сертификата необходимо нажать Create.
Модуль управления развертыванием прикладных сервисов (Argo Rollouts)
Argo Rollouts ‒ контроллер Kubernetes, предоставляющий дополнительные стратегии развертывания приложений в кластерах Kubernetes. Argo Rollouts использует кастомный ресурс Rollout, заменяющий Deployment, когда необходимы:
- расширенная функциональность развертывания;
- прогрессивная доставка приложения: процесс выпуска поэтапного и контролируемого обновления приложений. Стандартное поведение Deployments в Kubernetes реализовывает стратегии развертывания типа Recreate или RollingUpdate. Стратегии не решают вопросы:
- возможности контролирования трафика между версиями;
- легкого откатывания при ошибках;
- простоя трафика;
- пошагового выкатывания новых версий для части пользователей. Следующие проблемы возможно решить с помощью стратегий развертывания Argo Rollouts:
- Blue-Green: одновременная работа старой версии приложения и развертывание новой версии. Пока разворачивается новая версия, весь входящий трафик направляется в рабочее приложение. Когда новое приложение развернуто, трафик перенаправляется на него.
- Canary: одновременная работа нескольких версий приложения. Входящий трафик одновременно может быть распределен между новой и старой версиями приложения. Для реализации стратегий развертывания Argo Rollouts поддерживает:
- интеграцию с Ingress-контроллерами для маршрутизации трафика;
- интеграцию с поставщиками метрик для Blue-Green- и Canary-анализа;
- автоматический откат обновления. Контроллер Argo Rollouts управляет созданием, масштабированием и удалением ReplicaSets. С дополнительной информацией можно ознакомиться на официальном сайте.
Установка
Модуль управления развертыванием прикладных сервисов (Argo Rollouts) не является критически важным сервисом для работы РОСА Кубис. По умолчанию модуль устанавливается в кластер управления и клиентские кластеры в отключенном состоянии.
Для настройки Argo Rollouts в графическом интерфейсе кластера Комплекса нужно перейти на страницу "Установленные сервисы" раздела "Сервисы и репозитории", найти Модуль управления развертыванием прикладных сервисов (shturval-rollouts) и нажать Управлять.
Если модуль не отображается, следует перейти на страницу "Доступные чарты", на вкладке "shturval" найти чарт shturval-rollouts и нажать Установить.
В случае если Модуль управления развертыванием прикладных сервисов (shturval-rollouts) включается после создания кластера, следует убедиться, что он включены и находятся в режиме автообновления:
- CRD модуля управления развертыванием прикладных сервисов (shturval-rollouts-crds);
- Модуль управления внешними подключениями (shturval-ingress-controller).