Установка
Contents
Установка#
Шаг 1. Скачайте nscli#
Скачайте nscli из нашего репозитория:
cd ~
wget --backups=1 --user=<пользователь> --ask-password "https://repo.global-system.ru/artifactory/general/ru/bitec/gs-ctk-nscli/SNAPSHOT-5.0.0/gs-ctk-nscli-SNAPSHOT-5.0.0.zip"
unzip -o gs-ctk-nscli-SNAPSHOT-5.0.0.zip -d nscli
Вы также можете установить nscli (рекомендуется):
chmod +x nscli/bin/initvenv.sh
./nscli/bin/initvenv.sh
Примечание
Временно Helm-чарт поставляется только вместе с nscli. Установка nscli при этом необязательна.
Шаг 2. Установите оператор#
Есть два варианта по установке gs-ctk на вашем кластере:
При помощи Helm
Helm#
Составьте свой values.yaml на основе файла из папки helm_chart:
# Реестр образов imageRepository: "dockerhub.global-system.ru" # Тег образов, по-умолчанию равен версии чарта imageTag: "" # Секрет загрузки с репозитория imagePullSecret: "" # Часовой пояс timezone: "Europe/Moscow" # Режим отладки для nsctl nsctlDebugEnabled: false # Суффикс, добавляемый к названию релиза, чтобы получить название пространства имен namespaceSuffix: "" # Системное файловое хранилище для хранения комплектов групп и приложений systemVolume: nfs: server: "nfs.server" path: /export # Аннотации подов podAnnotations: {} # Лейблы подов podLabels: {} # Селекторы нод для подов nodeSelector: {} # Tolerations для подов tolerations: [] # Affinity для подов affinity: {}
Разверните при помощи:
helm install gs-ctk ./nscli/helm_chart -f values.yaml
NAME: gs-ctk LAST DEPLOYED: Tue Jul 1 16:49:30 2025 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: ===================================== GS-CTK Версия SNAPSHOT-5.0.0 Copyright © 2000-2025 Компания «Бизнес Технологии» Все права защищены. ===================================== Развернут в пространстве имен `gs-ctk`. (venv)
Примечание
Если не указать Helm’у пространство имен, то оператор будет развернут в пространстве с названием, соответствующем названию релиза.
При необходимости создаете секрет от докер-репозитория.
nscli#
Запустите ./namespace.sh deploy
(параметры можно ввести через командную строку, подробнее через --help
).
Шаг 3. Настройте группы ресурсов#
Примечание
Если вы мигрировали с кластера предыдущей версии переходите к шагу 4 - у вас уже есть конфигурационный ресурс.
Совет
Здесь конфигурационный ресурс будет формироваться при помощи мастеров утилиты nscli.
Вы можете сформировать его самостоятельно. Подробнее читайте здесь.
Создайте конфигурационный ресурс и группу ресурсов в нем следующей командой:
./configmgr.sh configure_resgroup --config-path config.yaml --resgroup gs-cluster-1
Настройка группы ресурсов: gs-cluster-1 ======================================= Введите имя проекта (контура): Введите timezone подов:Europe/Moscow Введите поисковые домены для resolv.conf (если их несколько, вводите через пробел): Введите url базы данных:jdbc:postgresql://host:5432/database Введите alias базы данных:db_alias Введите имя секрета для пользователя БД:dbsecret Укажите версию Java:8 Введите адрес к дополнительному GossipRouter или пропустите поле: Дополнительно отсылать метрики во внешнюю систему[да,нет]:нет Группа ресурсов настроена! Следующие действия: - Добавьте книгу ресурсов: `./configmgr.sh configure_resbook --config с2.yaml --resgroup gs-cluster-1 --resbook [имя книги ресурсов] --classname [класс книги ресурсов]` - Список классов ресурсов можно получить при помощи команды `./configmgr.sh show_resbook_classes` - Список групп ресурсов можно получить при помощи команды `./configmgr.sh list_resgroups --config с2.yaml` - Удалить группу ресурсов: `./configmgr.sh remove_resgroup --config с2.yaml --resgroup gs-cluster-1`
Создайте книгу ресурсов global-server-excl:
./configmgr.sh configure_resbook --config-path config.yaml --resgroup gs-cluster-1 --resbook global-server-excl --classname global_server_excl
Настройка книги ресурсов: global-server-excl (класс global_server_excl) ======================================================================= Введите внешний ip(external_ip): Введите максимальный размер кучи Java (java -Xmx):3500M Введите запрос CPU для globalserver:2 Введите запрос MEMORY для globalserver:4G Введите лимиты CPU для globalserver:2 Введите лимиты MEMORY для globalserver:4G Введите запрос CPU для systemagent:1 Введите запрос MEMORY для systemagent:250M Введите лимиты CPU для systemagent:1 Введите лимиты MEMORY для systemagent:500M Дополнительно отсылать метрики во внешнюю систему[да,нет]:нет Введите имя секрета для администратора:gs-admin Книга ресурсов настроена! Следующие действия: - Список книг ресурсов можно получить при помощи команды `./configmgr.sh list_resbooks --config с2.yaml --resgroup gs-cluster-1` - Удалить книгу ресурсов: `./configmgr.sh remove_resgroup --config с2.yaml --resgroup gs-cluster-1 --resbook global-server-excl`
Создайте книгу ресурсов global-server-share:
./configmgr.sh configure_resbook --config-path config.yaml --resgroup gs-cluster-1 --resbook global-server-share --classname global_server_share
Настройка книги ресурсов: global-server-share (класс global_server_share) ========================================================================= Введите количество экземпляров:2 Введите максимальный размер кучи Java (java -Xmx):3500M Введите запрос CPU для globalserver:2 Введите запрос MEMORY для globalserver:4G Введите лимиты CPU для globalserver:2 Введите лимиты MEMORY для globalserver:4G Введите запрос CPU для systemagent:1 Введите запрос MEMORY для systemagent:250M Введите лимиты CPU для systemagent:1 Введите лимиты MEMORY для systemagent:500M Дополнительно отсылать метрики во внешнюю систему[да,нет]:нет Введите имя секрета для администратора:gs-admin Книга ресурсов настроена! Следующие действия: - Список книг ресурсов можно получить при помощи команды `./configmgr.sh list_resbooks --config с2.yaml --resgroup gs-cluster-1` - Удалить книгу ресурсов: `./configmgr.sh remove_resgroup --config с2.yaml --resgroup gs-cluster-1 --resbook global-server-share`
Создайте книгу ресурсов haproxy:
./configmgr.sh configure_resbook --config-path config.yaml --resgroup gs-cluster-1 --resbook haproxy --classname haproxy
Настройка книги ресурсов: haproxy (класс haproxy) ================================================= Использовать Ingress?[да,нет]:да Введите класс Ingress:nginx Введите хост Ingress: Введите дополнительную аннотацию Ingress (или пропустите поле): Введите имя секрета basic-auth для авторизации статистики: Введите имя tls секрета для доступа по https: Введите запрос CPU для haproxy:1 Введите запрос MEMORY для haproxy:500M Введите лимиты CPU для haproxy:2 Введите лимиты MEMORY для haproxy:1Gi Книга ресурсов настроена! Следующие действия: - Список книг ресурсов можно получить при помощи команды `./configmgr.sh list_resbooks --config с2.yaml --resgroup gs-cluster-1` - Удалить книгу ресурсов: `./configmgr.sh remove_resgroup --config с2.yaml --resgroup gs-cluster-1 --resbook haproxy`
Создайте книгу ресурсов grafana:
./configmgr.sh configure_resbook --config-path config.yaml --resgroup gs-cluster-1 --resbook grafana --classname grafana
Настройка книги ресурсов: grafana (класс grafana) ================================================= Использовать Ingress?[да,нет]:нет Введите внешний ip(external_ip):10.10.0.1 Введите класс хранилища:grafana Введите размер хранилища:1Gi Введите имя секрета с аккаунтом администратора Grafana:gs-admin Введите запрос CPU для grafana:1 Введите запрос MEMORY для grafana:500M Введите лимиты CPU для grafana:2 Введите лимиты MEMORY для grafana:1Gi Книга ресурсов настроена! Следующие действия: - Список книг ресурсов можно получить при помощи команды `./configmgr.sh list_resbooks --config с2.yaml --resgroup gs-cluster-1` - Удалить книгу ресурсов: `./configmgr.sh remove_resgroup --config с2.yaml --resgroup gs-cluster-1 --resbook grafana`
У вас должен получиться конфигурационный файл приблизительно следующего содержания:
apiVersion: global-system.ru/v1
kind: GlobalConfiguration
metadata:
name: config
spec:
type: advanced
resgroups:
- name: gs-cluster-1
database_url: jdbc:postgresql://host:5432/database
database_alias: db_alias
database_secret: dbsecret
appvol:
type: nfs
server: 10.10.0.1
path: /export
resbooks:
- type: global_server_excl
name: global-server-excl
admin_secret: gs-admin
- type: global_server_share
name: global-server-share
admin_secret: gs-admin
- type: haproxy
name: haproxy
service:
type: ingress
ingress_class: nginx
host: ''
- service:
type: ip
external_ip: 10.10.0.1
admin_secret: gs-admin
type: grafana
name: grafana
storage_class: grafana
storage_size: 1Gi
Шаг 4. Загрузите комплект приложений#
Совет
Мы здесь будем использовать утилиту nsctl, однако это необязательно. Читайте подробнее здесь.
Загрузите комплект приложений:
./appkit.sh push --namespace gs-ctk-ns --source workspace/appkit --destination appkit/v1 # требует доступа к nsctl
Обновите хеши в конфигурации при помощи команды:
./appkit.sh switch_local --config-path ./new_config.yaml --resgroup gs-cluster-1 --local-appkit workspace/appkit --remote-appkit appkit/v1 # не требует подключения к кластеру
ИЛИ
./appkit.sh switch_remote --config-path ./new_config.yaml --resgroup gs-cluster-1 --namespace gs-ctk-ns --remote-appkit appkit/v1 # хеши читаются с хранилища nsctl
Шаг 5. Создайте секреты и постоянный раздел#
Создайте в пространстве имен кластера 5.0.0 необходимые секреты и постоянный том для Grafana.
Осторожно
Роль для CAdvisor не нужна! Она уже есть в чарте/
Шаг 6. Примените конфигурацию при помощи kubectl#
kubectl apply -f ./new_config.yaml
Совет
В случае неполадок посмотрите созданное пространство имен на наличие перезагружающихся подов. Также в случае ошибок с конфигурацией nsctl создаст событие на конфигурационный ресурс.
Шаг 7. Запустите обновление базы данных (опционально)#
Выполните следующую команду:
./appkit.sh upgrade --config-path ./new_config.yaml --resgroup gs-cluster-1
Повторно примените ресурс:
kubectl apply -f ./new_config.yaml