Настройки конфигурации
Contents
Настройки конфигурации#
Конфигурационный ресурс - основной источник информации о системе для gs-ctk.
Документация по доступным настройкам будет формироваться автоматически позже. Пока для ознакомления со всеми опциями предлагаем вам пример максимальной конфигурации с кратким описанием всех настроек.
Пример конфигурационного ресурса#
Совет
Обратите внимание, что некоторые опции (admin_secret, send_metrics_to_external_system, external_prometheus_endpoint: external.prometheus.domain, external_loki_endpoint) повторяются в настройках группы и книг ресурсов. В таких случаях вы можете установить только одну настройку, только другую или обе - опция из книги ресурсов переопределяет более общую настройку для группы ресурсов.
Указывать опции для которых указано значение по умолчанию необязательно.
apiVersion: global-system.ru/v1
kind: GlobalConfiguration
metadata:
name: gs-ctk-config
spec:
# type - пока только advanced
type: advanced
# resgroups - список групп ресурсов
resgroups:
# name - название группы ресурсов
- name: gs-cluster-1
# namespace - название пространства имен, в котором необходимо развернуть группу (если развернуто несколько операторов, по умолчанию - пусто)
namespace: gs-ctk
# enabled - включена ли группа ресурсов (по умолчанию - true)
enabled: false
# appkit - читайте ниже
appkit:
applib_sha1: 93c8a473ed8d0b6c20c30b952a8ebcebbad5af9c
appsrc_sha1:
globalserver_sha1: d70488cd57b20794be30779dded0c0a86781eb02
profile_sha1: 15bd21a523102fb41d32b87ffdac8880f3e37427
globalserver_instance: '2'
path: appkits/v1
state: started
# database_schema_version - читайте ниже
database_schema_version: '1'
# groupkit - путь к комплекту группы (по умолчанию - пусто)
groupkit: groupkits/v1
# timezone - часовой пояс (по умолчанию - Europe/Moscow)
timezone: Europe/Moscow
# database_url - путь к базе данных
database_url: jdbc:postgresql://host:5432/database
# database_alias - имя БД в системе
database_alias: ssng
# database_secret - секрет с логином и паролем к БД
database_secret: sng-db
# search_domains - поисковые домены (по умолчанию - пусто)
search_domains:
- mycompany.ru
# gossiprouters - список хостов/портов gossiprouter (по умолчанию - пусто)
gossiprouters:
- host: gr.mycompany.ru
port: 1100
# admin_secret - имя единого секрета администратора (по умолчанию - пусто)
admin_secret:
# java_version - версия java (по умолчанию - '8')
java_version: '8'
# appvol - прикладное хранилище
appvol:
type: nfs
server: nfs.mycompany.ru
path: /export
# extra_vols - дополнительные точки монтирования (по умолчанию - пусто)
extra_vols:
- name: mp1
path: mnt/mp1
volume:
type: nfs
server: nfs.mycompany.ru
path: /export2
# debug_mode - выключить перезагрузку подов при ошибках (по умолчанию - false)
debug_mode: true
# rabbitmq - настройки RabbitMQ
# по умолчанию - берутся из настроек книги ресурсов rabbitmq, если такой нет - RabbitMQ отключен
# поставьте `rabbitmq: false`, чтобы выключить
rabbitmq:
enabled: true # значение по-умолчанию
host: rabbitmq.mycompany.com
port: 5672 # порт по-умолчанию
vhost: globalerp
secret: rabbitmq-secret
# точки выгрузки внутренней Grafana, оставляйте пустым, если в целях отладки не требуется другое
#prometheus_endpoint:
#loki_endpoint:
#tempo_endpoint:
# send_metrics_to_external_system - отправлять данные во внешнюю систему (по умолчанию - false)
send_metrics_to_external_system: true
# external_prometheus_endpoint - внешняя точка выгрузки данных Prometheus
external_prometheus_endpoint: external.prometheus.domain:9090
# external_loki_endpoint - внешняя точка выгрузки данных Loki
external_loki_endpoint: external.loki.domain:3100
# название контура (по умолчанию - название пространства имен)
project_name: gs-ctk
# селектор нод, как в Kubernetes
#node_selector: {}
# книги ресурсов
resbooks:
# global_scheduler - планировщик задач
- type: global_scheduler
# name - имя книги
name: global-scheduler
# enabled - включена ли книга ресурсов (по умолчанию - true)
enabled: true
# debug_mode - выключить перезагрузку подов при ошибках (по умолчанию - false)
debug_mode: true
# селектор нод, как в Kubernetes
#node_selector: {}
# java_xmx - предельный объем кучи виртуальной машины Java (по умолчанию - 800M)
java_xmx: 800M
# send_metrics_to_external_system - отправлять данные во внешнюю систему (по умолчанию - false)
send_metrics_to_external_system: false
# external_prometheus_endpoint - внешняя точка выгрузки данных Prometheus
external_prometheus_endpoint: external.prometheus.domain:9090
# external_loki_endpoint - внешняя точка выгрузки данных Loki
external_loki_endpoint: external.loki.domain:3100
# resources - запросы и лимиты ресурсов контейнера с планировщиком (указаны значения по умолчанию)
resources:
requests:
memory: 1G
cpu: '1'
limits:
memory: 1G
cpu: '1'
# agent_resources - запросы и лимиты ресурсов контейнера с агентом сбора телеметрии (указаны значения по умолчанию)
agent_resources:
requests:
memory: 250M
cpu: '1'
limits:
memory: 500M
cpu: '1'
# scheduler_token_secret - секрет с токеном шедулера
scheduler_token_secret: scheduler_token
# global_server_excl - эксклюзивный под Global Server
- type: global_server_excl
# name - имя книги
name: global-server-excl
# enabled - включена ли книга ресурсов (по умолчанию - true)
enabled: true
# debug_mode - выключить перезагрузку подов при ошибках (по умолчанию - false)
debug_mode: true
# селектор нод, как в Kubernetes
#node_selector: {}
# java_xmx - предельный объем кучи виртуальной машины Java (по умолчанию - 3500M)
java_xmx: 3500M
# send_metrics_to_external_system - отправлять данные во внешнюю систему (по умолчанию - false)
send_metrics_to_external_system: false
# external_prometheus_endpoint - внешняя точка выгрузки данных Prometheus
external_prometheus_endpoint: external.prometheus.domain:9090
# external_loki_endpoint - внешняя точка выгрузки данных Loki
external_loki_endpoint: external.loki.domain:3100
# resources - запросы и лимиты ресурсов контейнера с сервером приложений (указаны значения по умолчанию)
resources:
requests:
memory: 4G
cpu: '2'
limits:
memory: 4G
cpu: '2'
# agent_resources - запросы и лимиты ресурсов контейнера с агентом сбора телеметрии (указаны значения по умолчанию)
agent_resources:
requests:
memory: 250M
cpu: '1'
limits:
memory: 500M
cpu: '1'
# admin_secret - имя секрета администратора
admin_secret: gs-admin
# service - способ публикации книги ресурсов (по умолчанию - пусто)
# global_server_excl поддерживает публикацию только через IP
service:
type: ip
external_ip: 10.20.0.5
# global_server_share - масштабируемые поды Global Server
- type: global_server_share
# name - имя книги
name: global-server-share
# enabled - включена ли книга ресурсов (по умолчанию - true)
enabled: true
# debug_mode - выключить перезагрузку подов при ошибках (по умолчанию - false)
debug_mode: true
# селектор нод, как в Kubernetes
#node_selector: {}
# java_xmx - предельный объем кучи виртуальной машины Java (по умолчанию - 3500M)
java_xmx: 3500M
# send_metrics_to_external_system - отправлять данные во внешнюю систему (по умолчанию - false)
send_metrics_to_external_system: false
# external_prometheus_endpoint - внешняя точка выгрузки данных Prometheus
external_prometheus_endpoint: external.prometheus.domain:9090
# external_loki_endpoint - внешняя точка выгрузки данных Loki
external_loki_endpoint: external.loki.domain:3100
# resources - запросы и лимиты ресурсов контейнера с сервером приложений (указаны значения по умолчанию)
resources:
requests:
memory: 4G
cpu: '2'
limits:
memory: 4G
cpu: '2'
# agent_resources - запросы и лимиты ресурсов контейнера с агентом сбора телеметрии (указаны значения по умолчанию)
agent_resources:
requests:
memory: 250M
cpu: '1'
limits:
memory: 500M
cpu: '1'
# admin_secret - имя секрета администратора
admin_secret: gs-admin
# replicas - количество реплик
replicas: 1
# grafana - под со стеком мониторинга
- type: grafana
# name - имя книги
name: grafana
# enabled - включена ли книга ресурсов (по умолчанию - true)
enabled: true
# debug_mode - выключить перезагрузку подов при ошибках (по умолчанию - false)
debug_mode: true
# селектор нод, как в Kubernetes
#node_selector: {}
# service - способ публикации книги ресурсов (по умолчанию - пусто)
# grafana поддерживает публикацию через IP и через Ingress (см. haproxy)
service:
type: ip
external_ip: 10.20.0.6
# resources - запросы и лимиты ресурсов контейнера (указаны значения по умолчанию)
resources:
requests:
memory: 500M
cpu: '1'
limits:
memory: 1Gi
cpu: '2'
# storage_class - класс хранилища для постоянного тома Grafana
storage_class: local-path
# storage_size - запрашиваемое пространство (по умолчанию - 1Gi)
storage_size: 4Gi
# admin_secret - имя секрета администратора
admin_secret: grafana-secret
# haproxy - под с балансировщиком нагрузки
- type: haproxy
# name - имя книги
name: haproxy
name: grafana
# enabled - включена ли книга ресурсов (по умолчанию - true)
enabled: true
# debug_mode - выключить перезагрузку подов при ошибках (по умолчанию - false)
debug_mode: true
# селектор нод, как в Kubernetes
#node_selector: {}
# service - способ публикации книги ресурсов (по умолчанию - пусто)
# haproxy поддерживает публикацию через IP (см. grafana) и через Ingress
service:
type: ingress
ingress_class: nginx
host: globalerp.mycompany.ru # '' - для публикации на всех хостах
annotations: {} # дополнительные аннотации
# resources - запросы и лимиты ресурсов контейнера с балансировщиком (указаны значения по умолчанию)
resources:
requests:
memory: 500M
cpu: '1'
limits:
memory: 1G
cpu: '2'
# agent_resources - запросы и лимиты ресурсов контейнера с агентом сбора телеметрии (указаны значения по умолчанию)
agent_resources:
requests:
memory: 250M
cpu: '1'
limits:
memory: 500M
cpu: '1'
# statistics_secret - секрет для сбора статистики
statistics_secret: haproxy-secret
# tls_secret - секрет для ключа и сертификата TLS (по умолчанию - пусто, TLS отключен)
tls_secret: ''
# replicas - количество реплики при работе через Ingress (по умолчанию - 1)
replicas: 1
# send_metrics_to_external_system - отправлять данные во внешнюю систему (по умолчанию - false)
send_metrics_to_external_system: false
# external_loki_endpoint - внешняя точка выгрузки данных Loki
external_loki_endpoint: external.loki.domain:3100
# rabbitmq - под с rabbitmq
- type: rabbitmq
# name - имя книги
name: rabbitmq
# enabled - включена ли книга ресурсов (по умолчанию - true)
enabled: true
# debug_mode - выключить перезагрузку подов при ошибках (по умолчанию - false)
debug_mode: true
# селектор нод, как в Kubernetes
#node_selector: {}
# service - способ публикации консоли администратора книги ресурсов (по умолчанию - пусто)
# rabbitmq поддерживает публикацию через IP (см. grafana) и через Ingress (см. haproxy)
service:
# resources - запросы и лимиты ресурсов контейнера (указаны значения по умолчанию)
resources:
requests:
memory: 2Gi
cpu: '1'
limits:
memory: 4Gi
cpu: '2'
# apmq_secret - секрет для соединения между RabbitMQ и GlobalERP
apmq_secret: apmq-secret
# admin_secret - секрет администратора (по умолчанию - пусто)
admin_secret: rabbitmq-admin-secret
# vhost - название виртуального хоста (по умолчанию - 'globalrabbitmq')
vhost: globalrabbitmq
# admin_port - порт консоли администратора (по умолчанию - 15672)
admin_port: 15672
# jgroups_dns - включает возможность общения серверов приложений между собой
- type: jgroups_dns
# name - имя книги
name: jgroups-dns
# gossiprouter - роутер сообщений между серверами приложений, более продвинутое, чем jgroups_dns решение
- type: gossiprouter
# name - имя книги
name: gossiprouter
# enabled - включена ли книга ресурсов (по умолчанию - true)
enabled: true
# debug_mode - выключить перезагрузку подов при ошибках (по умолчанию - false)
debug_mode: true
# селектор нод, как в Kubernetes
#node_selector: {}
# service - способ публикации книги ресурсов (по умолчанию - пусто)
# gossiprouter поддерживает публикацию только через IP
service:
type: ip
external_ip: 10.20.0.7
# java_xmx - предельный объем кучи виртуальной машины Java (по умолчанию - 800M)
java_xmx: 800M
# send_metrics_to_external_system - отправлять данные во внешнюю систему (по умолчанию - false)
send_metrics_to_external_system: false
# external_prometheus_endpoint - внешняя точка выгрузки данных Prometheus
external_prometheus_endpoint: external.prometheus.domain:9090
# external_loki_endpoint - внешняя точка выгрузки данных Loki
external_loki_endpoint: external.loki.domain:3100
# resources - запросы и лимиты ресурсов контейнера с планировщиком (указаны значения по умолчанию)
resources:
requests:
memory: 1G
cpu: '1'
limits:
memory: 1G
cpu: '1'
# agent_resources - запросы и лимиты ресурсов контейнера с агентом сбора телеметрии (указаны значения по умолчанию)
agent_resources:
requests:
memory: 250M
cpu: '1'
limits:
memory: 500M
cpu: '1'
# gossip_router_port - порт GossipRouter (по умолчанию - 12001)
gossip_router_port: 12001
Комплект группы (appkit) и версия схемы#
Конфигурации группы ресурсов содержит информацию о комплекте приложения и целевой версии схемы базы данных:
appkit
- Описание текущего комплекта приложений. При изменении настроек комплекта приложений, после применения конфигурации сервера приложений будут автоматически перезапущены с новой версией компекта приложений.applib_sha1
,appsrc_sha1
,globalserver_sha1
иprofile_sha1
- хеш-суммы соответствующих компонентов appkit. Из всех толькоappsrc_sha1
может не указываться.globalserver_instance
- версия сервера приложений, желательно обновлять при каждом измененииappkit
.path
- путь к комплекту на системном NFS-хранилище.state
- состояние комплекта приложений. Возможные значения:started
- запущен, сервера принимают пользователейstopped
- остановлен, сервера отключеныdrained
- осушен, доступ через балансировщик закрыт, непривилегированные пользователи отключены
database_schema_version
- версия схемы БД. При изменении целевой версии схемы базы данных - автоматически запущено обновление БД. Информация о текущей версии хранится в ресурсе, в поле status.
Обновление без nscli#
Может показаться, что nscli все еще требуется для манипуляции с комплектами группы и версиями схемы, но это не совсем так. Вот инструкция, как сделать без nscli то же, что и эти команды nscli:
./appkit.sh push --namespace gs-ctk-ns --source workspace/appkit --destination appkit/v1 # загрузка комплекта приложений на NFS (требует доступа к кластеру)
./appkit.sh switch_local --config-path ./new_config.yaml --resgroup gs-cluster-1 --local-appkit workspace/appkit --remote-appkit appkit/v1 # переключение комплекта приложений
./appkit.sh upgrade --config-path ./new_config.yaml --resgroup gs-cluster-1 # обновление счетчика версии БД
Сформировать комплект приложения в виде трех zip-архивов:
globalserver.zip
applip.zip
profile.zip
Внимание
Обратите внимание, что архивы содержат в себе содержимое соответствующих папок комплекта приложений. Так
applip.zip
содержит в себе непосредственно модули, а не папкуapplib
с модулями.Рядом с каждым из архивов должен лежать файл c хэш-суммой архива, полученной по алгоритму команды
sha1sum
из GNU Core Utilities. Название файла должно соответствовать названию архива и иметь суффикс.sha1
.Так, например, в комплекте приложений должен находиться архив
applip.zip
и рядом с ним файлapplip.zip.sha1
с текстом4f3b71ee067f146d68a8795b3bde1e5c0f8956d7
.Вы можете сгенерировать эти файлы при помощи следующего shell-скрипта:
for archive in appkit/*.zip do sha1sum < "$archive" | tr -d ' -' | tr -d '\n' > "$archive.sha1" done
Загрузите архивы и хеш-суммы на системное NFS-хранилище.
Замените в конфигурации поля с хэш-суммами (
applib_sha1
,appsrc_sha1
,globalserver_sha1
иprofile_sha1
) и путем к комплекту (path
) на новые. Обновите значения счетчиковglobalserver_instance
иdatabase_schema_version
.