# Установка ## Шаг 1. Скачайте nscli Скачайте nscli из нашего репозитория: ```bash 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 (рекомендуется): ```bash chmod +x nscli/bin/initvenv.sh ./nscli/bin/initvenv.sh ``` ```{note} Временно Helm-чарт поставляется только вместе с nscli. Установка nscli при этом необязательна. ``` ## Шаг 2. Установите оператор Есть два варианта по установке gs-ctk на вашем кластере: 1. При помощи [Helm](#helm) 2. При помощи [утилиты `./namespace.sh deploy` в составе nscli](#nscli) ### Helm 1. Составьте свой values.yaml на основе файла из папки helm_chart: ```yaml # Реестр образов 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: {} ``` 2. Разверните при помощи: ```bash helm install gs-ctk ./nscli/helm_chart -f values.yaml ``` ```text 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) ``` ```{note} Если не указать Helm'у пространство имен, то оператор будет развернут в пространстве с названием, соответствующем названию релиза. ``` 3. При необходимости создаете секрет от докер-репозитория. ### nscli Запустите `./namespace.sh deploy` (параметры можно ввести через командную строку, подробнее через `--help`). ## Шаг 3. Настройте группы ресурсов ```{note} Если вы [мигрировали с кластера предыдущей версии](./030_migration.md) переходите к шагу 4 - у вас уже есть конфигурационный ресурс. ``` ```{tip} Здесь конфигурационный ресурс будет формироваться при помощи мастеров утилиты nscli. Вы можете сформировать его самостоятельно. Подробнее читайте [здесь](./040_config.md). ``` 1. Создайте конфигурационный ресурс и группу ресурсов в нем следующей командой: ```bash ./configmgr.sh configure_resgroup --config-path config.yaml --resgroup gs-cluster-1 ``` ```text Настройка группы ресурсов: 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` ``` 2. Создайте книгу ресурсов global-server-excl: ```bash ./configmgr.sh configure_resbook --config-path config.yaml --resgroup gs-cluster-1 --resbook global-server-excl --classname global_server_excl ``` ```text Настройка книги ресурсов: 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` ``` 3. Создайте книгу ресурсов global-server-share: ```bash ./configmgr.sh configure_resbook --config-path config.yaml --resgroup gs-cluster-1 --resbook global-server-share --classname global_server_share ``` ```text Настройка книги ресурсов: 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` ``` 4. Создайте книгу ресурсов haproxy: ```bash ./configmgr.sh configure_resbook --config-path config.yaml --resgroup gs-cluster-1 --resbook haproxy --classname haproxy ``` ```text Настройка книги ресурсов: 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` ``` 5. Создайте книгу ресурсов grafana: ```bash ./configmgr.sh configure_resbook --config-path config.yaml --resgroup gs-cluster-1 --resbook grafana --classname grafana ``` ```text Настройка книги ресурсов: 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` ``` У вас должен получиться конфигурационный файл приблизительно следующего содержания: ```yaml 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. Загрузите комплект приложений ```{tip} Мы здесь будем использовать утилиту nsctl, однако это необязательно. Читайте подробнее [здесь](./040_config.md#обновление-без-nscli). ``` 1. Загрузите комплект приложений: ```bash ./appkit.sh push --namespace gs-ctk-ns --source workspace/appkit --destination appkit/v1 # требует доступа к nsctl ``` 2. Обновите хеши в конфигурации при помощи команды: ```bash ./appkit.sh switch_local --config-path ./new_config.yaml --resgroup gs-cluster-1 --local-appkit workspace/appkit --remote-appkit appkit/v1 # не требует подключения к кластеру ``` *ИЛИ* ```bash ./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 [необходимые секреты](../020_install.md#создание-секретов) и [постоянный том для Grafana](../020_install.md#работа-с-постоянными-томами). ```{caution} Роль для CAdvisor не нужна! Она уже есть в чарте/ ``` ## Шаг 6. Примените конфигурацию при помощи kubectl ```bash kubectl apply -f ./new_config.yaml ``` ```{tip} В случае неполадок посмотрите созданное пространство имен на наличие перезагружающихся подов. Также в случае ошибок с конфигурацией nsctl создаст событие на конфигурационный ресурс. ``` ## Шаг 7. Запустите обновление базы данных (опционально) 1. Выполните следующую команду: ```bash ./appkit.sh upgrade --config-path ./new_config.yaml --resgroup gs-cluster-1 ``` 2. Повторно примените ресурс: ```bash kubectl apply -f ./new_config.yaml ```