# Группы и книги ресурсов

Ключевое понятие gs-ctk - **группа ресурсов**. Группа ресурсов - это единый логический кластер серверов приложений с едиными БД, прикладным решением и вспомогательными службами.

Группа ресурсов в свою очередь делятся на **книги ресурсов**. Книга ресурсов представляет собой набор ресурсов Kubernetes, формируемых по одному шаблону, и реализующих, обычно, одну службу (функциональность).

Мы можем провести параллель между группами ресурсов в gs-ctk и пространствами имен в Kubernetes.

Книги и группы ресурсов хранятся в [конфигурационном ресурсе](https://help.globalerp.ru/books/G3SysAdminDoc/SNAPSHOT/html/040_global-k8s/040_config.html) типа GlobalConfiguration, который устанавливается автоматически вместе с Helm-чартом.

## Классы книг ресурсов

Каждая книга ресурсов принадлежит к одному из **классов** книг ресурсов, определяющий ее шаблон и возможные параметры. Например, класс книг ресурсов RabbitMQ. Подробнее о классах книг ресурсов [читайте в отдельном разделе](./060_resbooks.md).

Классы книг ресурсов лежат в директории `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, таким будет [системное имя БД](https://docs.global-system.ru/as/dev/reference/configuration/global3_config_xsd/configuration/databases/Database.html#Configuration.Databases.Database.alias) в сервере приложения)
  - имя секрета Kubernetes с парой логин/пароль от БД (db_user_secret_name)
- основное [прикладное хранилище и дополнительные точки монтирования](./030_achitecture.md#хранение-файлов)
- версия Java (java_version, должна быть равна 21)
- настройки [GossipRouter](./560_jgroups.md) (gossip_routers_setting)
- настройки [RabbitMQ](./550_rabbitmq.md) (rabbitmq_settings)
