Сервисы и репозитории

Управление сервисами и репозиториями

В разделе "Сервисы и репозитории" доступны подразделы:

  • Репозитории;
  • Доступные чарты;
  • Установленные сервисы;
  • Маркетплейс продуктов.

Репозитории

На странице "Репозитории" (рисунок 392) отображается перечень репозиториев, подключенных в кластере. Есть возможность добавить репозиторий, содержащий Helm-чарты сервисов.

Рисунок 392 ‒ Страница "Репозитории"

Для добавления нового репозитория нужно нажать кнопку + Добавить репозиторий.

В открывшемся окне:

  • задать название подключаемому репозиторию;
  • в поле "URL" прописать путь до репозитория. Доступные протоколы для подключения: HTTP, HTTPS, OCI;
  • выбрать, нужна ли проверка сертификата для подключения;
  • в случае если к репозиторию ограничен доступ, прописать логин и пароль пользователя;
  • при необходимости определить лейблы и аннотации репозитория.

Чарты из созданного репозитория будут доступны в разделе "Сервисы и репозитории" на странице "Доступные чарты" на вкладке с именем репозитория. Следует обратить внимание, что в случае подключения репозитория с протоколом OCI на вкладке репозитория необходимо ввести название чарта для его последующей установки.

Для просмотра или редактирования данных ранее созданного репозитория нужно нажать на названия репозитория в списке репозиториев (рисунок 393).

Рисунок 393 ‒ Редактирование репозитория

На вкладке "Репозиторий" можно просмотреть статус, состояние и данные подключенного репозитория.

Блок "Состояние" (рисунок 394) содержит список состояний, устанавливаемых при подключении репозитория. Чтобы просмотреть дополнительные сведения, следует нажать на название состояния из списка. В сведениях состояния отображаются: название состояния, дата и время проверки статуса состояния, причина установки статуса состояния.

Рисунок 394 ‒ Блок "Состояние"

В случае неуспешной установки статуса состояния дополнительно доступно сообщение об ошибке подключения репозитория (рисунок 395).

Рисунок 395 ‒ Ошибка подключения

При необходимости можно изменить данные пути до репозитория, данные доступа к репозиторию, проверку сертификата, определить лейблы и аннотации. После завершения редактирования необходимо нажать кнопку Сохранить.

Также изменить данные возможно с помощью манифеста объекта. Для этого следует перейти на вкладку "Манифест" (рисунок 396). После внесения изменений в манифест требуется выполнить проверку. Результат проверки будет доступен в правой части экрана. Можно раскрыть блок результата проверки, чтобы увидеть полный манифест. Если валидация формата манифеста репозитория не пройдена, недоступна проверка манифеста.

Рисунок 396 ‒ Проверка манифеста

Далее необходимо сохранить изменения, внесенные в манифест. Несохраненные данные не будут применены.

Для удаления репозитория требуется нажать на Удалить в строке репозитория.

После удаления репозитория сервисы, установленные из чартов этого репозитория в кластер, останутся установленными.

Доступные чарты

На странице "Доступные чарты" представлены Helm-чарты сервисов, доступных для установки в кластер. Чарты размещены по вкладкам в соответствии с подключенными репозиториями.

Также есть возможность выполнить поиск Helm-чарта сервиса по его названию. Строка ввода для поиска расположена под названием вкладки. Поиск работает, начиная с первого введенного символа.

По умолчанию доступны Helm-чарты сервисов в репозитории Shturval (рисунок 397).

Рисунок 397 ‒ Чарты в репозитории Shturval

Установка и настройка экземпляра сервиса

Чтобы установить экземпляр сервиса, нужно нажать на кнопку Установить на карточке чарта сервиса. На странице "Установка чарта" необходимо произвести первичную конфигурацию экземпляра сервиса (рисунок 398).

Рисунок 398 ‒ Страница "Установка чарта"

Для этого следует задать название экземпляра сервиса, выбрать версию чарта (по умолчанию выбрана последняя доступная), выбрать неймспейс, в котором необходимо установить экземпляр сервиса. Внизу выпадающего списка неймспейсов доступна опция создания нового неймспейса (рисунок 399).

Рисунок 399 ‒ Создание нового неймспейса

Далее требуется определить режим управления:

  • Автоматический (Auto) ‒ ресурсы сервиса в неймспейсе будут созданы автоматически, что приведет к автозапуску сервиса в кластере. При внесении изменений в конфигурацию сервиса рекомендуется выбирать данный режим для автоматического применения обновлений.
  • Ручной (Manual) ‒ сервис запускается и обновляется вручную. Это может быть необходимо, если требуется использовать версию сервиса, отличную от версии, которая поставляется вместе с кластером.

Следует обратить внимание: графический интерфейс Комплекса строго связан с поддерживаемой версией сервисов. В случае расхождений версий графический интерфейс может не соответствовать фактическим данным.

Затем при необходимости можно определить лейблы и аннотации.

Добавление чарта репозитория, подключенного по OCI

Если репозиторий подключен по протоколу OCI, на вкладке репозитория нужно ввести название чарта репозитория для установки экземпляра сервиса. Затем следует нажать Проверить версию, чтобы получить список версий чарта (рисунок 400).

Рисунок 400 ‒ Список версий чарта

Если введено корректное название чарта, будут получены доступные версии чарта для установки. Автоматически к названию подставится последняя версия чарта. Просмотреть список версий и выбрать версию чарта возможно на странице "Установка чарта" (рисунок 401).

Рисунок 401 ‒ Страница "Установка чарта"

Для последующей установки чарта и конфигурации экземпляра сервиса нужно нажать Проверить чарт, откроется страница "Установка чарта". Следует выполнить первичную конфигурацию экземпляра сервиса. Название экземпляра сервиса и версия чарта будут предзаполнены в соответствии с названием чарта и версией, указанными на вкладке репозитория (рисунок 402).

Рисунок 402 ‒ Описание сервиса

Следующие настройки экземпляра сервиса на странице "Установка чарта" идентичны настройкам экземпляра сервиса репозитория shturval в соответствии с разделом "Установка и настройка экземпляра сервиса" (п. Установка и настройка экземпляра сервиса).

Спецификация сервисов

Изначально Helm использует параметры конфигурации по умолчанию. Блок "Спецификация сервиса" есть ни что иное, как values, передаваемые в файле при установке сервиса или его обновлении. Values должен быть в формате YAML. Часть сервисов Комплекса имеют предварительную конфигурацию, которую можно увидеть сразу после развертывания кластера. Значения customvalues не перезаписываются при обновлении кластера.

Если с чартом сервиса поставляется набор доступных values, они будут отображены в правой части экрана. Values в правой части экрана отображается только для просмотра в том виде, в котором они есть в чарте. Есть возможность выполнить поиск доступных values по названию. При вводе первого символа в строку ввода выполняется поиск value. Все изменения (кастомизацию) необходимо вносить в левой части в блоке "Спецификация сервиса" (рисунок 403).

Рисунок 403 ‒ Блок "Спецификация сервиса"

Завершив первичную конфигурацию сервиса, необходимо нажать кнопку Установить.

Установленный экземпляр сервиса будет доступен для просмотра и редактирования на странице "Установленные сервисы".

Установленные сервисы

На странице доступна сортировка по работающим и не работающим сервисам, позволяющая оперативно увидеть проблемы с сервисами в кластере. В верхней части страницы также доступны счетчики по включенным и работающим сервисам (рисунок 404).

Рисунок 404 ‒ Установленные сервисы

Чтобы изменить спецификацию, лейблы и аннотации экземпляра сервиса, нужно нажать на кнопку Управлять на карточке установленного сервиса. После внесения изменений нажать на кнопку Сохранить.

Следует обратить внимание, что название установленного экземпляра сервиса недоступно для редактирования.

Чтобы удалить экземпляр установленного сервиса, нужно нажать на кнопку Удалить на карточке установленного сервиса. Удаление и отключение критически важных для работы Комплекса сервисов заблокировано.

Чтобы приостановить работу сервиса, нужно передвинуть переключатель в выключенное состояние. Следует обратить внимание, что после возобновления работы сервиса по умолчанию будет проставлен ручной режим управления.

В случае необходимости можно самостоятельно изменить версию сервиса, используя редактирование сервиса в интерфейсе кастомных ресурсов. Для этого в API-группе ops.shturval.tech требуется перейти в список сервисов (ShturvalServiceConfig), выбрать требуемый сервис и внести изменение в поле version.

Для просмотра состояния установленного сервиса на карточке сервиса нужно нажать Управлять. На странице просмотра сервиса блок "Состояние" включает перечень состояний сервиса (рисунок 405).

Рисунок 405 ‒ Блок "Состояние"

Чтобы просмотреть дополнительные сведения о состоянии, нужно нажать на название состояния из списка. В сведениях состояния отображаются: название состояния, дата и время проверки статуса состояния, причина установки статуса состояния (рисунок 406).

Рисунок 406 ‒ Дополнительные сведения о состоянии

В случае неуспешной установки состояния сервиса при просмотре сведений состояния отображается сообщение об ошибке работы сервиса (рисунок 407).

Рисунок 407 ‒ Сообщение об ошибке работы сервиса

Сервисы репозитория Shturval

Сервисы репозитория Shturval приведены в таблице 27.

Маркетплейс продуктов

На странице "Маркетплейс продуктов" есть возможность подключить преднастроенные репозитории продуктов партнеров. Для подключения других репозиториев следует перейти на страницу "Управление репозиториями" (п. Управление сервисами и репозиториями).

Управление продуктом партнера

Добавление продукта партнера

Чтобы добавить продукты партнеров в Комплекс, необходимо выполнить подключение к репозиторию продукта партнера. Для этого нужно перейти на страницу "Маркетплейс продуктов", выбрать продукт и нажать Добавить.

Рисунок 408 ‒ Добавление продукта

В открывшемся модальном окне на вкладке "Конфигурация" (рисунок 408) нужно заполнить поля:

  • Имя пользователя ‒ необходимо указать данные учетной записи, если осуществляется подключение к приватному репозиторию продукта партнера;
  • Пароль ‒ указать пароль от учетной записи с доступом к приватному репозиторию продукта партнера;
  • URL ‒ (обязательное) поле содержит ссылку для перехода на репозиторий продукта партнера, содержащий Helm-чарты для установки сервисов. По умолчанию определен URL, который направляет на публичный репозиторий продукта партнера. Можно изменить указанный по умолчанию URL, если чарты необходимых сервисов находятся по другому адресу, например, на URL приватного репозитория или зеркала. Доступные протоколы: HTTP, HTTPS, OCI.

Далее требуется выбрать, необходимо ли проверять сертификат безопасности. Проверка сертификата безопасности позволит подтвердить защищенное соединение и подлинность сервера, с которым устанавливается соединение.

При необходимости можно добавить лейблы и аннотации на вкладке "Лейблы и аннотации".

Важно ‒ Если подключение к репозиторию продукта партнера происходит по протоколу OCI, то вместо выбора чарта из списка доступных необходимо ввести название чарта для его последующей установки.

Название репозитория продукта партнера определено по умолчанию и совпадает с наименованием выбранного продукта на странице "Маркетплейс продуктов". Нельзя задать или изменить название.

После заполнения обязательных полей и завершения конфигурации репозитория продукта партнера нужно нажать Подключить. В результате подключения появится вкладка "Доступные чарты" в модальном окне. Далее следует выбрать чарты сервисов и выполнить установку сервисов. Можно завершить подключение без установки сервисов, для чего нажать Завершить без установки.

Можно выбрать и установить сервисы из доступных чартов в модальном окне подключенного ранее репозитория продукта партнера. Для этого требуется открыть страницу "Маркетплейс продуктов", выбрать "Управлять" продуктом и перейти на вкладку "Доступные чарты", выбрать чарты и установить сервисы.

Также чарты подключенного репозитория продукта партнера доступны к установке на странице "Доступные чарты" на одноименной вкладке репозитория продукта партнера.

Изменение продукта партнера

В случае если подключение к репозиторию продукта партнера установлено, но чарты недоступны, следует проверить настройки URL и учетных данных, затем выполнить переподключение.

Для переподключения репозитория продукта партнера нужно перейти на страницу "Маркетплейс продуктов", выбрать "Управлять" продуктом, обновить конфигурацию репозитория и нажать Переподключиться. После переподключения данные конфигурации и доступные чарты будут обновлены.

Кроме того, редактирование данных ранее подключенного репозитория продукта партнера возможно на странице "Репозитории", для чего нажать на название репозитория в списке подключенных репозиториев, при необходимости обновить данные. Далее необходимо Сохранить внесенные изменения. После сохранения данные конфигурации и доступные чарты будут обновлены.

Установленные ранее сервисы из чартов репозитория продукта партнера продолжат работать без изменений.

Отключение доступа к репозиторию продукта партнера

При необходимости можно отключить доступ к репозиторию продукта партнера на Комплексе, для чего перейти на страницу "Репозитории", выбрать репозиторий продукта партнера из списка, нажать на пиктограмму Изображение210 и подтвердить действие (рисунок 409).

Рисунок 409 ‒ Отключение доступа к репозиторию

Следует обратить внимание, что при отключении доступа к репозиторию продукта партнера его чарты не будут доступны из Комплекса. Отключение доступа не повлияет на работу установленных ранее сервисов.

Доступные продукты

В РОСА Кубис доступны для подключения репозитории продукты партнеров (рисунок 410):

Рисунок 410 ‒ Продукты партнеров

  • Nimbius ‒ платформа управления гибридным облаком. Чарт расположен в публичном репозитории;
  • Kaspersky ‒ наложенные средства ИБ для кластера;
  • Luntry ‒ комплексная защита контейнеров и Kubernetes на всех стадиях жизненного цикла приложения.

Nimbius

При установке чарта нужно создать или выбрать ранее созданный неймспейс nimbius. После установки чарта потребуется в неймспейсе nimbius создать секрет с названием "regcred" и типом "dockerconfigjson", содержащий данные лицензии, а также изменить конфигурацию сервиса. Для приобретения лицензии следует обращаться в Нимбиус.

На странице управления сервисом в блок "Спецификация сервиса" необходимо прописать customvalues.

Пример customvalues (описание параметров ‒ в таблице 28):

ui:
portalUrl: nimbius-ui.apps.ip-XX-XX-XXX-XXX.shturval.link
orchestrator:
env:
applicationDomain: nimbius.apps.ip-XX-XX-XXX-XXX.shturval.link

Kaspersky Container Security

Kaspersky Container Security помогает выявлять проблемы безопасности на всех этапах жизненного цикла контейнерных приложений от разработки до эксплуатации. Для установки чарта необходимо ввести учетные данные пользователя для подключения к приватному репозиторию. В случае подключения с помощью зеркала нужно обновить URL репозитория.

В случае успешного подключения к репозиторию Kaspersky на вкладке "Доступные чарты" необходимо ввести "kcs" и выполнить проверку версии. В случае успешного поиска чарта будет предложена максимальная доступная версия чарта, и можно будет перейти к установке чарта. Откроется окно установки Kaspersky Container Security. Далее следует выбрать требуемую версию и провести установку.

Luntry

Luntry обеспечивает высокий уровень безопасности процессов, помогает создать инфраструктуру без "слепых зон" и наладить бесшовную коммуникацию между командами ИТ и ИБ даже в самых крупных проектах.

После успешного подключения репозитория на вкладке "Доступные чарты" для установки доступны чарты сервисов Luntry. Если подключение к репозиторию было завершено без установки сервисов, на вкладке "luntry" страницы "Доступные чарты" или в модальном окне управления продуктом партнера Luntry нужно выбрать и установить необходимые чарты сервисов (рисунок 411).

Рисунок 411 ‒ Вкладка "luntry"

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

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

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

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

С дополнительной информацией можно ознакомиться на официальном сайте. В текущем релизе используется Argo CD версии 2.13.5.

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

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

  1. в боковом меню открыть раздел "Сервисы и репозитории";
  2. перейти на страницу "Установленные сервисы";
  3. найти модуль непрерывной доставки приложений.

Если модуль не отображается, следует перейти в раздел "Сервисы и репозитории", открыть страницу "Доступные чарты", найти чарт "shturval-cd" и нажать Установить.

В случае если требуется устанавливать чарт "shturval-cd" после создания кластера, следует убедиться, что включены и находятся в режиме автообновления:

  • CRD для модуля непрерывной доставки приложений (shturval-cd-crds);
  • Модуль управления внешними подключениями (shturval-ingress-controller).

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

Пример customvalues (описание параметров — в таблице 29):

...
resources:
limits:
cpu: <ваше значение параметра>
memory: <ваше значение параметра>
requests:
cpu: <ваше значение параметра>
memory: <ваше значение параметра>

Переход в Argo CD

Существуют четыре способа перехода в интерфейс Argo CD:

  • по адресу argocd.apps.clustername.domain.ltd, где clustername ‒ название кластера, domain.ltd ‒ ваш домен;
  • из дашборда клиентского кластера по кнопке Перейти в Argo CD (SSO-авторизация);
  • из неймспейса клиентского кластера по кнопке Перейти в Argo CD. Если в неймспейсе видно кнопку Создать проект в Argo CD, значит в этом неймспейсе еще не создан проект. Кнопка перехода в интерфейс Argo CD станет доступна после успешного создания проекта (SSO-авторизация);
  • из неймспейса shturval-cd/Сеть/Ingresses/shturval-cd-server.

Для авторизации в интерфейсе 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 нужно дописать параметры кастомизации в спецификации (customvalues) модуля непрерывной доставки приложений кластера.

Пример customvalues для выделения продуктивной среды (описание параметров ‒ в таблице 30):

configs:
styles: |
<ваше значение параметра>
cm:
ui.bannercontent: <ваше значение параметра>
ui.bannerpermanent: <ваше значение параметра>

Подключение сертификата в 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.

Модуль резервного копирования и восстановления (velero)

Модуль резервного копирования и восстановления основан на velero, обеспечивающем создание резервных копий (не snapshots!), назначение расписания и восстановление данных из ранее созданных резервных копий, а также перенесение ресурсов кластера в другие кластеры, репликацию производственного кластера в кластеры разработки и тестирование.

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

  1. в боковом меню открыть раздел "Сервисы и репозитории";
  2. перейти на страницу "Установленные сервисы".

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

  1. в боковом меню открыть раздел "Сервисы и репозитории";
  2. перейти на страницу "Установленные сервисы".

Далее следует найти "Модуль резервного копирования и восстановления". Если модуль не отображается, нужно в боковом меню открыть раздел "Сервисы и репозитории" и перейти на страницу "Доступные чарты", найти чарт "shturval-backup" и нажать Установить.

Удаление бэкапов не происходит сразу же после истечения их срока хранения, а в пределах одного часа после истечения этого срока. Если требуется изменить период удаления по умолчанию, следует прописать параметр customvalues, например (описание параметров ‒ в таблице 31):

configuration:
defaultRepoMaintainFrequency: <ваше значение параметра>

Решение ошибок

"Error checking repository for stale locks"

Это может быть связано с тем, что были удалены данные с S3 (из каталога restic), не удалив при этом соответствующие этим данным репозитории (BackupRepository). В таком случае рекомендуется либо удалять эти ресурсы вместе с данными, либо не удалять данные с S3 вручную.

"error checking if volume is a hostPath volume"

Такая ошибка говорит о том, что под, содержащий в volumes контейнера указание на hostPath, не был добавлен в бэкап. Это происходит по причине того, что velero не может записывать резервные копии с hostPath.

Появление этой ошибки не прерывает работу модуля резервного копирования.

Если требуется исключить поды с hostPath из бэкапа, необходимо вручную проставить аннотации в шаблон пода Deployment/DaemonSet, которые создают поды с такими mounts:

Аннотации:

backup.velero.io/backup-volumes-excludes:name1,name2,name3

где в name1, name2nameN нужно вписать через запятую все names из volume, которые ссылаются на hostPath.

"pod volume backup failed: getting pod trivy-system/scan-vulnerabilityreport-*"

Сканер уязвимостей Trivy периодически создает поды. Допустимо, что в процессе создания резервной копии поды могли быть удалены или пересозданы.

С дополнительной информацией можно ознакомиться на официальном сайте. В текущем релизе используется velero версии 1.15.2.

Модуль распределения нагрузки узлов (Descheduler)

Descheduler ‒ это инструмент, который помогает оптимизировать размещение подов в кластере.

Descheduler анализирует текущее состояние кластера и определяет поды, которые стоит переместить на другие узлы для достижения лучшей производительности, утилизации ресурсов или соответствия определенным правилам.

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

  1. в боковом меню открыть раздел "Сервисы и репозитории";
  2. перейти на страницу "Установленные сервисы";
  3. найти "Модуль распределения нагрузки узлов".

Если модуль не отображается, нужно перейти в раздел "Сервисы и репозитории", открыть страницу "Доступные чарты", найти чарт "shturval-descheduler" и нажать Установить.

Перечень конфигурируемых параметров для сервиса перечислен в таблице 32.

Параметры deschedulerPolicy.strategies приведены в таблице 33.

С дополнительной информацией можно ознакомиться на Kubernetes Scheduler и github. В текущем релизе используется descheduler версии 0.32.2.

ShturvalD (ContainerD)

ContainerD (в РОСА Кубис ‒ ShturvalD) предоставляет исполняемую среду для запуска контейнеров (Container Runtime). Он упрощает развертывание контейнерных приложений и управление ими. При инициализации кластера управления и клиентских кластеров ShturvalD устанавливается на каждом узле.

ShturvalD (ContainerD) ‒ демон на узле, который управляет всем жизненным циклом контейнера:

  • скачивает образы из репозиториев для управления ими;
  • вызывает Container Runtime для запуска, остановки процессов контейнера.

Конфигурационный файл ShturvalD (ContainerD) расположен по пути /etc/containerd/config.toml.

В графическом интерфейсе Комплекса с помощью объекта конфигурации узлов (NCI) возможна конфигурация параметров Container Runtime (п. Container Runtime).

Модуль управления сервисами

Модуль управления сервисами shturval-services в Комплексе является продуктом внутренней разработкой. Модуль содержит в себе функционал Argo CD и Flux, написан на языке Go. Функции модуля:

  • управление репозиториями: позволяет подключить валидные helm repo по протоколам HTTP, HTTPS, OCI.
  • получение helm-чартов репозиториев;
  • установка в кластер helm-чартов из подключенных репозиториев.
  • обновление в кластере helm-чартов из подключенных репозиториев.

По умолчанию в РОСА Кубис разворачивается репозиторий shturval (публичный или из зеркала). Модуль является критическим (недоступен для отключения). Он обеспечивает автоматическую установку, развертывание helm-чартов (helm-релизов) в кластерах, развернутых в Комплексе.

Для просмотра состояния сервиса в графическом интерфейсе кластера нужно в боковом меню открыть раздел "Сервисы и репозитории" и перейти на страницу "Установленные сервисы", затем найти "Модуль управления сервисами" (shturval-services) и нажать Управлять.