Установка#

Шаг 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 на вашем кластере:

  1. При помощи Helm

  2. При помощи утилиты ./namespace.sh deploy в составе nscli

Helm#

  1. Составьте свой 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: {}
    
  2. Разверните при помощи:

    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’у пространство имен, то оператор будет развернут в пространстве с названием, соответствующем названию релиза.

  3. При необходимости создаете секрет от докер-репозитория.

nscli#

Запустите ./namespace.sh deploy (параметры можно ввести через командную строку, подробнее через --help).

Шаг 3. Настройте группы ресурсов#

Примечание

Если вы мигрировали с кластера предыдущей версии переходите к шагу 4 - у вас уже есть конфигурационный ресурс.

Совет

Здесь конфигурационный ресурс будет формироваться при помощи мастеров утилиты nscli.

Вы можете сформировать его самостоятельно. Подробнее читайте здесь.

  1. Создайте конфигурационный ресурс и группу ресурсов в нем следующей командой:

    ./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`
    
  2. Создайте книгу ресурсов 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`
    
  3. Создайте книгу ресурсов 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`
    
  4. Создайте книгу ресурсов 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`
    
  5. Создайте книгу ресурсов 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, однако это необязательно. Читайте подробнее здесь.

  1. Загрузите комплект приложений:

    ./appkit.sh push --namespace gs-ctk-ns --source workspace/appkit --destination appkit/v1 # требует доступа к nsctl
    
  2. Обновите хеши в конфигурации при помощи команды:

    ./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. Запустите обновление базы данных (опционально)#

  1. Выполните следующую команду:

    ./appkit.sh upgrade --config-path ./new_config.yaml --resgroup gs-cluster-1
    
  2. Повторно примените ресурс:

    kubectl apply -f ./new_config.yaml