Группы и книги ресурсов#
Ключевое понятие 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)