Управление приложениями

Модуль непрерывной доставки приложений (Argo CD)

Argo CD ‒ декларативный инструмент непрерывной доставки GitOps, использующий Git-репозитории для определения желаемого состояния приложения.

Argo CD постоянно отслеживает состояние приложений, находящихся в кластере, относительно Git/Helm Repo таким образом, что:

  • производит автоматическую доставку изменений при появлении изменений в приложении в Git/Helm Repo;
  • автоматически приводит приложение в состояние, соответствующее данным в Git/Helm Repo при появлении изменений непосредственно в приложении. С дополнительной информацией можно ознакомиться на официальном сайте.

Установка и конфигурация

Для настройки Argo CD в интерфейсе кластера Комплекса нужно:

  1. в боковом меню открыть раздел "Сервисы и репозитории";
  2. перейти на страницу "Установленные сервисы";
  3. найти Модуль непрерывной доставки приложений (shturval-cd). Если модуль не отображается, следует перейти в раздел "Сервисы и репозитории"****, открыть страницу "Доступные чарты", найти чарт shturval-cd и нажать Установить. В случае если требуется устанавливать чарт shturval-cd после создания кластера, следует убедиться, что включены и находятся в режиме автообновления:
  • CRD для модуля непрерывной доставки приложений (shturval-cd-crds);
  • Модуль управления внешними подключениями (shturval-ingress-controller).

Конфигурация ресурсов (CPU, memory)

По умолчанию в модуле определены limits, requests на ресурсы (CPU, memory). При необходимости можно установить требуемые limits/requests ресурсов для ArgoCD, для чего требуется:

  1. подготовить 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

  1. в кластере загрузить с помощью импорта манифестов подготовленный 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. Для этого нужно:

  1. перейти в раздел "Settings → Repository certificates";
  2. нажать Add TLS certificate;
  3. в открывшемся окне ввести адрес репозитория (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).