Группы и книги ресурсов#

Ключевое понятие gs-ctk - группа ресурсов. Группа ресурсов - это единый логический кластер серверов приложений с едиными БД, прикладным решением и вспомогательными службами.

Группа ресурсов в свою очередь делятся на книги ресурсов. Книга ресурсов представляет собой набор ресурсов Kubernetes, формируемых по одному шаблону, и реализующих, обычно, одну службу (функциональность).

Мы можем провести параллель между группами ресурсов в gs-ctk и пространствами имен в Kubernetes.

Книги и группы ресурсов хранятся в конфигурационном ресурсе типа GlobalConfiguration, который устанавливается автоматически вместе с Helm-чартом.

Классы книг ресурсов#

Каждая книга ресурсов принадлежит к одному из классов книг ресурсов, определяющий ее шаблон и возможные параметры. Например, класс книг ресурсов RabbitMQ. Подробнее о классах книг ресурсов читайте в отдельном разделе.

Классы книг ресурсов лежат в директории resource_library/resbook в nscli (для неуправляемого режима) и nsctl.

Класс книги ресурсов состоит из:

  • Jinja-шаблона deploy.yaml

  • модели данных (настроек) в data.py для включения в общую модель конфигурационного файла

  • представления книги ресурсов в view.py

  • опционально, скрипта в migrate.py, мигрирующего конфигурацию версии 4..

Книга ресурсов автоматически разворачивается, если она и ее группа включены (enabled), и автоматически сворачивается, если выключены.

Развертывание заключается в заполнении Jinja-шаблона deploy.yaml параметрами из группы и книги ресурсов, хранящимися в ConfigMap, и в последующем применении получившегося манифеста в Kubernetes.

Конфигурационные значения (values) группы ресурсов#

Группа ресурсов имеет общие для всех книг ресурсов конфигурационные значения:

  • название контура (project_name, по умолчанию равно названию пространства имен, используется лишь для пометки в телеметрии)

  • настройки базы данных Postgres:

    • URL базы (database_url)

    • alias базы данных (database_alias, таким будет системное имя БД в сервере приложения)

    • имя секрета Kubernetes с парой логин/пароль от БД (db_user_secret_name)

  • основное прикладное хранилище и дополнительные точки монтирования

  • версия Java (java_version, должна быть равна 8 или 21)

  • настройки GossipRouter (gossip_routers_setting)

  • настройки RabbitMQ (rabbitmq_settings)