Архитектура решения#

kuber-schema

gs-ctk разворачивается в отдельном пространстве имен Kubernetes при помощи Helm-чарта и вспомогательной утилиты nscli c jump-хоста и состоит из пяти компонентов:

  1. Контроллера пространства имен nsctl

  2. Подов с серверами приложений: эксклюзивного (global-server-excl) для задач обслуживания, и реплицируемых (global-server-share) для масштабирования и отказоустойчивости

  3. Балансировщика нагрузки HAProxy

  4. Стек мониторинга с доступом через систему визуализации данных Grafana

  5. Вспомогательных опциональных служб, таких как RabbitMQ и JGroups GossipRouter

Данные хранятся в базе данных и на файловом хранилище. Конфигурация gs-ctk хранится в виде ресурсов Kubernetes.

Дистрибутив#

Дистрибутив gs-ctk представляет собой:

  • набор образов контейнеров:

    • контроллер пространства имен gs/nsctl

    • контейнер-болванка со средой для сервера приложений, планировщика задач и GossipRouter gs/globalserver

    • вспомогательный (sidecar) контейнер для сбора телеметрии с сервера приложений gs/systemagent

    • балансировщик нагрузки gs/haproxy

    • вспомогательный (sidecar) контейнер для сбора телеметрии с балансировщика нагрузки gs/haproxyagent

    • стек внутреннего мониторинга gs/grafana

    • встроенный брокер сообщений gs/rabbitmq

  • консольную утилиту для работы с кластером с jump-хоста - nscli

Контейнеры и утилиту можно скачать с наших репозиториев, однако доступ к ним ограничен. Узнавайте подробнее у контактного лица.

Режим ссылок на образы (Helm)#

При установке Helm-чарта способ формирования ссылок на образы задается в values.yaml параметром imageMode:

  • tag - совместимый режим, образа указываются по тегу (:<tag>).

  • digestAuto - digest рабочих образов берутся из lock-файла, встроенного в образ nsctl при release-сборке.

  • digestManual - digest указываются вручную через imageDigests.

Параметр imageDigests задается списком, например:

imageMode: digestManual  # варианты: tag | digestAuto | digestManual
imageDigests:
  - image: nsctl
    digest: sha256:...
  - image: globalserver
    digest: sha256:...

В режиме digestAuto значение для image=nsctl можно задать в imageDigests опционально.

Для подготовки такого релиза используется отдельная команда:

DEBIAN_MIRROR=https://mirror.example/debian \
DEBIAN_SECURITY_MIRROR=https://mirror.example/debian-security \
./builder/image.sh release --push_to <registry>

Она собирает рабочие образы, публикует их, сохраняет digest в lock-файл и только после этого собирает nsctl со встроенным списком digest.

База данных#

gs-ctk не разворачивает систему управления баз данных. Вам необходимо самостоятельно развернуть СУБД PostgreSQL с соответствующими требованиями к отказоусточивости. Если вы ищете инструмент автоматического развертывания, посмотрите Patroni.

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

Примечание

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

Хранение файлов#

gs-ctk требует для своей работы несколько файловых хранилищ:

  • системное, для хранения комплектов приложений и комплектов групп. Указывается для всего gs-ctk при установке.

  • прикладное, для хранения прикрепленных файлов. Указывается для группы ресурсов.

Примечание

Помимо указанных томов, можно примонтировать и другие (пока только NFS). Команды для управления точками монтирования смотрите в справке по nsctl/resgroup.

На данный момент поддерживаются только NFS-хранилища.

Алгоритм развертывания#

Совет

Подробнее о развертывании читайте в Руководстве системного администратора.