Перейти к содержанию

Установка AppSec.Hub с использованием Kubernetes

Для получения Helm-чарт AppSec.Hub необходимо добавить OCI-совместимый Helm приватный реестр (registry.appsec.global) с теми же учетными данными, что и для доступа к образам контейнеров.

  1. Войдите в реестр (с ручным вводом пароля).

    helm registry login -u myuser registry.appsec.global
    Password:
    Login succeeded
    
  2. Скачайте последнюю/конкретную версию AppSec.Hub Helm-чарт.

    helm pull oci://registry.appsec.global/appsechub/hub-helm/appsechub --version 0.2.12
    
  3. Сконфигурируйте параметры в файле values.yaml.

    Пример конфигурационного файла приведен в приложении «Приложение 23. Конфигурационный файл values.yaml». Для запуска AppSec.Hub без глубокой настройки необходимо указать логин и пароль для реестра образов и MODEL_SECRET_KEY в секции hubair (их необходимо получить у вендора). Для более гибкой настройки смотрите файл values.yaml, который поставляется вместе с Helm-чартом.

    Внимание!

    При обновлении продукта через Helm, пожалуйста, обратите внимание, что структура файла values.yaml существенно изменилась.

    Убедитесь, что все настройки из текущего values.yaml перенесены в новый файл корректно.

    3.1. Скачайте новый файл values.yaml, соответствующий обновленной версии продукта.

    3.2. Настройте параметры файла values.yaml в соответствии с требованиями вашей среды.

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

    3.3. images.registry:

    Для доступа к приватному реестру образов вам понадобится секрет (ImagePullSecret), который хранит учетные данные для аутентификации.

    • create - определяет создание секрета:
      • true: секрет будет создан.
      • false: необходимо вручную указать существующий секрет в параметре name. Укажите имя существующего секрета Kubernetes, если вы хотите использовать его для аутентификации.
    • username и password - если вы хотите создать секрет, укажите значения для username и password.
    Пример модуля
    images:
        registry:
            name: registry.appsec.global
            ImagePullSecret:
                name: regcred
                create: true
                username: user
                password: password
    

    3.4. hub-air:

    • Укажите настройки шифрования моделей AVC через секцию env, для MODEL_USE_ENCRYPTION установите значение 1, MODEL_SECRET_KEY - ключ шифрования моделей AVC - необходимо получить у сотрудников компании - поставщика AppSec.Hub.
    • При необходимости настройте запросы и лимиты ресурсов.
    Пример модуля
    hubair:
    
        # -- Имя контейнера hub-air
        fullname: hub-air
    
        image:
            # -- Путь к репозиторию образа hub-air
            name: appsechub/hub-air
            # -- Политика загрузки образа
            pullPolicy: Always
            # -- Реестр образов контейнеров
            repository: registry.appsec.global
            # -- Тег версии образа
            tag: 2025.4.2
    
        env:
            # -- Указание TimeZone Europe/Moscow
            timezone: Europe/Moscow
            # -- Уровень логгирования: INFO, DEBUG
            LOG_LEVEL: INFO
            # -- Включить, выключить лог файл
            LOG_FILE: "1"
            # -- Путь лог файла
            LOG_BASE_PATH: /opt/py-model/logs/avc_prediction.log
            # -- Использование шифрования моделей AVC, чтобы включить - поменять на 1 и вставить ключ (в открытом виде)
            MODEL_USE_ENCRYPTION: "0"
            # -- Ключ шифрования моделей AVC
            MODEL_SECRET_KEY: 'ITu00m1f7-zlNccT-yjklcviw1yOT67TPeIi30nm1b4='
    
        # -- Дополнительные лейблы для pods hub-air
        podLabels: {}
    
        # -- Количество реплик компонента
        replicas: 1
    
        service:
            # -- При использовании service.type=LoadBalancer
            externalTrafficPolicy: local
            # -- Порт для Service
            port: 8000
            # -- Порт контейнера, на который ссылается Service
            targetPort: 8000
            # -- Тип Service, LoadBalancer или ClusterIP
            type: ClusterIP
            # -- Аннотации к объекту Service
            annotations: {}
    
    # -- Указать nodeSelector если требуется
    #  nodeSelector:
    #    label: value
    
    # -- Стратегия развертывания новых pod's
       strategy:
         type: Recreate
    
    # -- Аннотации для пода hub-air
    # Appsec.Hub не работатет с автоскейлингом
    #  annotations:
    #      cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
    
    # -- Установка лимитов для контейнера
    #  resources:
    #    requests:
    #      memory: "128Mi"
    #      cpu: "200m"
    #    limits:
    #      memory: "4096Mi"
    #      cpu: "4000m"
    
    # -- Монтирование дополнительных томов в контейнер
       extraVolumemounts: {}
    #    - name: varlog
    #      mountPath: /opt/py-model/logs
    
    # -- Указание дополнительных томов контейнера
       extraVolumes: {}
    #    - name: varlog
    #      emptyDir: {}
    #    - name: config-volume
    #      secret:
    #        secretName: fluentd-config-avc
    
    # -- Дополнительный контейнер
       containers: {}
    #    - name: fluentd
    #      image: registry.appsec.global/public/fluentd-v1.12.1:latest
    #      #env:
    #      #- name: FLUENTD_ARGS
    #      #    value: -c /fluentd/etc/fluent.conf
    #      env:
    #      - name: TZ
    #        value: Europe/Moscow
    #      extraVolumeMounts:
    #      - name: varlog
    #        mountPath: /var/log
    #      - name: config-volume
    #        mountPath: /fluentd/etc/fluent.conf
    #        subPath: fluent.conf
    
    # -- initcontainer для создания БД и миграции, указать/поменять данные
    # @default -- Смотреть _values.yaml_
    

    3.5. hubdbmigration:

    • Задайте необходимые пароли:
      • PGPASSWORD — пароль пользователя с административным доступом к основной схеме БД.
      • hubadmPassword — пароль пользователя с правами администратора на БД AppSec.Hub.
      • hubappPassword — пароль пользователя БД для работы AppSec.Hub.
      • hubauthPassword — пароль пользователя для сервиса аутентификации AppSec.Hub.
      • hubbiPassword — пароль пользователя с правами работы с AppSec.Hub DWH.
    Пример модуля
    hubdbmigration:
    
        # -- Имя контейнера hubdbmigration
        fullname: hubdbmigration
    
        # -- Порт контейнера БД
        PG_PORT: "5432"
    
        # -- Адрес БД
        PG_URL: postgresql
    
        # -- Пользователь БД
        PGUSER: postgres
    
        # -- Имя БД
        hubdbName: hubdb
    
        # -- Пароль БД
        PGPASSWORD: tt56dFsyVx
    
        # -- Пароль пользователя AppSec.Hub с правами администратора
        hubadmPassword: p3VEthvxKr435
    
        # -- Пароль пользователя
        hubappPassword: o7R667rx21
    
        # -- Пароль пользователя для сервиса аутентификации
        hubauthPassword: oxgfFsxcr
    
        # -- Пароль пользователя с правами работы с AppSec.Hub DWH
        hubbiPassword: o7R667rx21
    
        image:
            # -- Путь к репозиторию образа
            name: appsechub/hub-db
            # -- Политика загрузки образа
            pullPolicy: Always
            # -- Реестр образов контейнеров
            repository: registry.appsec.global
            # -- Тег версии образа
            tag: 2025.4.2
    
        # -- Количество реплик компонента
        replicas: 1
    
        # -- Режим восстановления hub-db
        repair_db_enable: disable
    
        # -- Режим восстановления hub-dw
        repair_dw_enable: disable
    
        resources:
            requests:
                memory: "128Mi"
                cpu: "50m"
            limits:
                memory: "128Mi"
                cpu: "100m"
    

    3.6. hub-core:

    • Укажите необходимые параметры app_properties:
      • db_hub_password - пароль пользователя с доступом к основной схеме БД, должен соответствовать паролю hubapp секции hubdbmigration.
      • encrypt_key - ключ шифрования паролей, используемых для доступа к инструментам ИБ. Размер ключа — 24 символа (для генерации ключа можно использовать следующую команду: dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2-25 | rev).
      • hub_app_url - замените значение параметра на URL, который будет использоваться для доступа к AppSec.Hub.
      • hub_consul_token - замените значение параметра на токен для сервиса consul.
    • Укажите необходимые параметры auth_properties:
      • db_auth_password - пароль пользователя для сервиса аутентификации AppSec.Hub.
      • jwt_token_signing_key - замените <HUBAPP-SIGN-KEY> на значение, полученное в результате выполнения следующей команды: dd if=/dev/urandom bs=1 count=64 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev.
      • metrics_password - замените пароль по умолчанию пользователя администратора metrics.
    • Для использования ZAP необходимо создать постоянный том для хранения, указав в секции pvc 'enable: true', storageClassName, и размер storage.
    Пример модуля
    hubcore:
    
        options:
            app_properties:
                # Класс драйвера для БД
                db_hub_driver: org.postgresql.Driver
                # Адрес экземпляра PostgreSQL
                db_hub_url: "jdbc:postgresql://${PG_URL}:${PG_PORT}/${HUBDBNAME}"
                # Основная схема БД, в которой содержится оперативная информация о работе AppSec.Hub
                db_hub_schema: hub
                # Имя пользователя с доступом к основной схеме БД
                db_hub_username: hubapp
                # Пароль пользователя с доступом к основной схеме БД
                db_hub_password: o7R667rx21
                db_presentation_driver: org.postgresql.Driver
                db_presentation_url: "jdbc:postgresql://${PG_URL}:${PG_PORT}/${HUBDBNAME}"
                db_presentation_schema: presentation
                db_presentation_username: hubapp
                db_presentation_password:
                ## Ключ шифрования паролей, используемых для доступа к инструментам ИБ. Размер ключа — 24 символа
                ## Для генерации ключа можно использовать следующую команду
                encrypt_key: qwr7erVIAspcln6pRbZKQYcE
                ## Внешний URL экземпляра AppSec.Hub
                hub_app_url: https://appsec-hub.example.com
                # URL-адрес сервиса consul с http/https
                hub_consul_host: "http://consul-expose-servers:8500"
                # токен для доступа к сервису consul
                hub_consul_token: 7d2Vd31mEymuX
                # Порт gRPC
                hub_grpc_port: 50051
                # URL сервиса hub-core
                hub_service_url: http://hub-core
                # Включение сбора метрик сервиса hub-core
                management_metrics_enable_all: true
                # Путь конфигурационных файлов ZAP
                hub_scan_config_file_path: "/opt/zapfiles"
                # Включение отображения релизных объектов на странице списка дефектов
                hub_defect_showReleaseObject: true
    
            auth_properties:
                # Класс драйвера для БД
                db_auth_driver: org.postgresql.Driver
                db_auth_schema: auth
                # Имя пользователя для сервиса аутентификации AppSec.Hub
                db_auth_username: hubauth
                ## Пароль пользователя для сервиса аутентификации AppSec.Hub
                db_auth_password: oxgfFsxcr
                ## Размер пула соединений для сервиса аутентификации AppSec.Hub 
                # db_auth_poolSize: 10
                ## Срок действия токена
                # jwt_token_expiration_time: 60
                ## Эмитент токена
                # jwt_token_issuer: AppSecHub
                ## Установить значение значение полученное в результате выполнения следующей команды 
                ## полученное в результате выполнения следующей команды 
                ## dd if=/dev/urandom bs=1 count=64 2>/dev/null | base64 -w 0 | rev | cut -b 3- | rev
                jwt_token_signing_key: rKYno2eSNKM3mduCFv2NCpYDdoWz0HAs0Q9DhyAxEX/WEvHoYuoB2fjxRiibhwt4/0CVHRGVSvT5yHgRb8tPLQWpIm4xIFfAUmm4Iedc+8gKISHyVPp7Hi4iKYm+QMQkz8Zj9jVUyQpOH4Z2f0LqP/WtvjQenb6rI3dDfpR/xUVA=
                ## Время обновления токена
                # jwt_token_refresh_expiration_time: 60
                metrics_username: admin
                metrics_password: gxuts4hg393779
    
            product_properties:
                ## Имя продукта
                report_product_name: AppSec.Hub
                ## Путь к файлу логотипа
                # report_logo_path: /usr/local/tomcat/webapps/hub/WEB-INF/classes/resources/logo.svg
                ## Путь к файлу логотипа в формате png
                # report_logo_path_png: /usr/local/tomcat/webapps/hub/WEB-INF/classes/resources/logo.png
                ## Путь к файлу темплейта pdf
                # report_issue_pdf_template: /usr/local/tomcat/webapps/hub/WEB-INF/classes/resources/issue-report-pdf-template.xsl
    
        env:
            # -- Указание TimeZone Europe/Moscow
            timezone: Europe/Moscow
            # -- Уровень логгирования: INFO, DEBUG
            HUB_LOG_LEVEL: info
    
        # Передача параметров [app|auth|product].properties через переменные среды
        # @default -- Смотреть _values.yaml_
            JAVA_OPTS:
        #      "-Dserver.servlet.session.timeout=1m"
        # -- Дополнительные лейблы для pods hub-core
    
        # -- Дополнительные лейблы для pods hub-core
        podLabels: {}
    
        # -- Имя контейнера hub-core
        fullname: hub-core
    
        image:
            # -- Путь к репозиторию образа hub-core
            name: appsechub/hub-core
            # -- Политика загрузки образа
            pullPolicy: Always
            # -- Реестр образов контейнеров
            repository: registry.appsec.global
            # -- Тег версии образа
            tag: 2025.4.2
    
        # -- Количество реплик компонента (не менять)
        replicas: 1
    
    # -- Аннотации для пода hub-core
    # Appsec.Hub не работатет с автоскейлингом
    #  annotations:
    #      cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
    
        # -- nodeSelector для компонента hub-core
        nodeSelector: {}
    #    label: value
        # -- Стратегия развертывания новых pod's
        strategy:
            type: Recreate
    # -- Установка лимитов для контейнера hub-core
    #   resources:
    #       requests:
    #           memory: "4096Mi"
    #           cpu: "200m"
    #    limits:
    #           memory: "8192Mi"
    #           cpu: "4000m"
    
        service:
            # -- При использовании service.type=LoadBalancer необходимо поставить true
            # и указать статический ip адрес
            enableIp: null
            # -- Политика Service
            externalTrafficPolicy: Local
            # -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
            ip: null
            # -- Тип Service, LoadBalancer или ClusterIP
            type: ClusterIP
            # -- Аннотации к объекту Service
            annotations: {}
            # Порты для Service
            ports:
                - name: core
                    port: 8080
                    targetPort: 8080
                    protocol: TCP
                - name: grpc
                    port: 50051
                    targetPort: 50051
                    protocol: TCP
    
        # PVC hub-core
        pvc:
            # -- Создать постоянный том для хранения hub-core, данных при использовании zap необходимо включить
            enable: true
            storageClassName: yc-network-hdd
            # -- Указание размера тома для хранения данных сервиса
            storage: 5Gi
            # -- Указание параметров доступа к тому с данными сервиса
            accessModes:
                - ReadWriteOnce
    
        # -- Монтирование томов в контейнер
        extraVolumemounts: {}
    #       - name: cacerts
    #           mountPath: /usr/lib/jvm/java-11-amazon-corretto/lib/security
        # -- Указание дополнительного томов контейнера 
        extraVolumes: {}
    #       - name: ssl-root-ca
    #           secret:
    #               secretName: ssl-root-ca
    #       - name: cacerts
    #           emptyDir: {}
    # -- Дополнительный контейнер
        containers: {}
    #       - name: fluentd
    #           image: registry.appsec.global/public/fluentd-v1.12.1:latest
    #           #env:
    # -- Дополнительный initcontainer
        initcontainers: {}
    #       - name: update-ssl
    #           image: "{{ .Values.hubcore.image.repository }}/{{ .Values.hubcore.image.name }}:{{ .Values.hubcore.image.tag }}"
    #           command: ["/bin/sh", "-c"]
    #           args: ["cp -R /usr/lib/jvm/java-11-amazon-corretto/lib/security/* /cacerts/ &&
    #                keytool -import -noprompt -trustcacerts -alias local -file /tmp/certs/ssl-rootca.crt -keystore /cacerts/cacerts -storepass changeit &&
    #                keytool -list -keystore /cacerts/cacerts -alias local"]
    #    extraVolumeMounts:
    #       - name: ssl-root-ca
    #           mountPath: /tmp/certs/ssl-rootca.crt
    #           subPath: ssl-rootca.crt
    #           readOnly: false
    #       - name: cacerts
    #           mountPath: /cacerts
        runAsUser: "2000"
    

    3.6. hub-ui:

    • Для включения использования метрик замените значение selectedNginxConf на "metrics" - метрики включены. В случае если метрики не требуются, можно оставить значение по умолчанию.
    Пример модуля
    hubui:
    
        # -- Имя контейнера hub-ui
        fullname: hub-ui
    
        selectedNginxConf: "default"  # Возможные значения: "default" - метрики выключены, "metrics" - метрики включены
    
        # -- Переопределение конфига nginx. По умолчанию используется конфиг из файла conf/nginx_default.conf.tpl.
        customNginxConfs: ""
        # customNginxConfs: |-
        #   server {
        #     listen 0.0.0.0:8080;
        #     root /app;
        #     location / {
        #       index index.html index.php;
        #     }
        #     location ~ \.php$ {
        #       fastcgi_pass phpfpm-server:9000;
        #       fastcgi_index index.php;
        #       include fastcgi.conf;
        #     }
        #   }
    
        # -- Дополнительные переменные окружения для Service Hub UI
        env:
            # -- Указание TimeZone Europe/Moscow
            timezone: Europe/Moscow
    
        # -- Дополнительные лейблы для pods hub-ui
        podLabels: {}
    
        image:
            # -- Путь к репозиторию образа hub-ui
            name: appsechub/hub-ui
            # -- Политика загрузки образа
            pullPolicy: Always
            # -- Реестр образов контейнеров
            repository: registry.appsec.global
            # -- Тег версии образа
            tag: 2025.4.2
    
        # -- Количество реплик компонента
        replicas: 1
    
    # Аннотации для пода hub-ui
    # Appsec.Hub не работатет с автоскейлингом
    #   annotations:
    #           cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
    
    # Установка лимитов для контейнера hub-ui
    #   resources:
    #       requests:
    #           memory: "100Mi"
    #           cpu: "100m"
    #       limits:
    #           memory: "1024Mi"
    #           cpu: "2000m"
    
    # Время бездействия пользователя до появления уведомления о бездействии (в секундах)
    #   idleTime: "1800"
    
    # Время показа на экране уведомления о бездействии до разлогинивания (в секундах)
    #   timeOut: "60"
    
        service:
            # -- При использовании service.type=LoadBalancer необходимо поставить true
            # и указать статический ip адрес
            enableIp: null
            # -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
            ip: null
            # -- Политика Service
            externalTrafficPolicy: Local
            # -- Порт для Service
            port: 80
            # -- Порт на который нацелен Service
            targetPort: 8080
            # -- Тип Service, LoadBalancer или ClusterIP
            type: ClusterIP
            # -- Аннотации к объекту Service
            annotations: {}
    
    # -- Указать nodeSelector если требуется
    #   nodeSelector: {}
    #       label: value
    
    # -- Стратегия развертывания новых pod's
    #   strategy: {}
    

    3.7. hub-engine-manager:

    Пример модуля
    hubEngineManager:
        # -- Запуск CI инструмента hub-engine-manager (true/false)
        enable: true
        # -- Имя контейнера hub-engine-manager
        fullname: hub-engine-manager
        # -- Имя пользователя администратора
        admin_username: admin
        # -- Пароль администратора, необходимо поменять
        admin_password: 
        # - Url адрес hub-engine-manager, необходимо поменять
        base_url: hub-engine-manager.example.com
        image:
            # -- Путь к репозиторию образа
            name: appsechub/hub-engine-manager
            # -- Политика загрузки образа
            pullPolicy: Always
            # -- Реестр образов контейнеров
            repository: registry.appsec.global
            # -- Тег версии образа
            tag: 2025.4.2
        # -- Количество реплик компонента
        replicas: 1
        service:
            # -- При использовании service.type=LoadBalancer необходимо поставить true
            # -- и указать статический ip адрес
            enableIp: null
            # -- Политика Service
            externalTrafficPolicy: Local
            # -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
            ip: null
            # -- Порт для Service
            port: 8080
            # -- Порт на который нацелен Service
            targetPort: 8080
            # -- Имя порта на который нацелен Service
            portName: port8080
            # -- Тип Service, LoadBalancer или ClusterIP
            type: ClusterIP
            # -- Аннотации к объекту Service
            annotations: {}   
        #resources:
        #   requests:
        #       memory: "128Mi"
        #       cpu: "50m"
        #   limits:
        #       memory: "4096Mi"
        #       cpu: "500m"
        # PVC hub-engine-manager
        pvc:
            # -- Создать постоянный том для хранения данных сервиса hub-engine-manager (true/false)
            enable: true
            # -- Указание storageClassName для тома сервиса
            storageClassName: yc-network-hdd
            # -- Указание размера тома для хранения данных сервиса
            storage: 10Gi
            # -- Указание параметров доступа к тому с данными сервиса
            accessModes:
                - ReadWriteOnce
        # -- nodeSelector для компонента hub-engine-manager
        #   nodeSelector:
        #       label: value
            # -- Стратегия развертывания новых pod's
            strategy: {}
            env:
                # hub-engine-manager -- Указание TimeZone Europe/Moscow
                timezone: Europe/Moscow
            # -- Дополнительные лейблы для pods hub-engine-manager
            podLabels: {}
            # -- Монтирование дополнительных томов в контейнер
            extraVolumemounts: {}
        #       - name: ssl-root-ca
        #           mountPath: /tmp/certs/ssl-rootca.crt
        #           subPath: ssl-rootca.crt
        #       - name: varlog
        #           mountPath: /path/logs
            # -- Указание дополнительных томов контейнера
            extraVolumes: {}
        #       - name: ssl-root-ca
        #           secret:
        #               secretName: ssl-root-ca
        #       - name: varlog
        #           emptyDir: {}
        #       - name: config-volume
        #           secret:
        #               secretName: fluentd-config-avc
    

    3.8. hub-engine - настройка CI-инструмента:

    • Включите сервис docker-in-docker, указав в разделе enable: true.
    • Включите CI инструмент hub-engine-manager, указав в разделе enable: true.
      • Укажите base_url, который будет использоваться для доступа к hub-engine-manager.
    • Включите slave ноду hub-Engine, указав в разделе enable: true
      • Укажите приватный ключ authorized_keys - приватный ключ создается в секретах через web-интерфейс hub-engine-manager.
      • Раскомментируйте раздел nodes.
    Пример модуля
    hubEngine:
        # -- Запуск CI инструмента hub-engine-manager (true/false)
        enable: true
        # для подключения ноды к hub-engine-manager - указать публичный ssh ключ
        # например так:
        #    helm upgrade --install \
        #            --set-file hubEngine.authorized_keys=./id_rsa.pub \
        #            hub sfs/appsechub -f values.yaml
        # -- Приватный ключ создается в секретах через web интерфейс hub-engine-manager (см. документацию)
        authorized_keys:
        env:
            LOG_CONSOLE: "1"
            SCHEDULER_INTERVAL_HOURS: "30"
            ARCHIVE_LIFETIME_DAYS: "30"
            LOG_FILE: "0"
            LOGS_LIFETIME_DAYS: "10"
            LOG_BASE_PATH:
            AUTH_USE: "0"
            AUTH_EXPIRED: "365"
            AUTH_SECRET_KEY:
            AUTH_SCHEME:
            MODEL_USE_ENCRYPTION: "0"
            MODEL_SECRET_KEY:
            MODEL_DEFAULT_PRACTICE:
            MODEL_LOWER_LIMIT: "0.8"
            MODEL_MIN_FREE_DISK_SPACE: "100"
            LOG_LEVEL: INFO
            ENCRYPTION_KEY: ""
            PIPELINE_SERVICE_NAME: grpc-pipeline-50053
            SCANS_FOLDER: /app/scans_folder
            ARCHIVE_FOLDER: /app/archive_folder
            RABBITMQ_EXCHANGE: ""
            RABBITMQ_ROUTING_KEY: super
        nodes:
          #  -- Имя контейнера hub-engine
          - fullname: hub-engine
            image:
                name: appsechub/hub-engine
                pullPolicy: Always
                repository: registry.appsec.global
                tag: 2025.4.2
            service:
                #  -- При использовании service.type=LoadBalancer необходимо поставить true
                #  -- и указать статический ip адрес 
                enableIp: null
                #  -- Политика Service
                externalTrafficPolicy: Local
                #  -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
                ip: null
                #  -- Порт для Service
                port: 50052
                #  -- Порт на который нацелен Service
                targetPort: 50052
                #  -- Имя порта на который нацелен Service
                portName: port50052
                # -- Тип Service, LoadBalancer или ClusterIP
                type: ClusterIP
                #  -- Аннотации к объекту Service
                annotations: {}
            resources:
                requests:
                    memory: "128Mi"
                    cpu: "50m"
                limits:
                    memory: "4096Mi"
                    cpu: "500m"
            #  -- PVC hub-engine
            pvc:
                #  -- Создать постоянный том для хранения данных сервиса hub-engine (true/false)
                enable: false
                #  -- Указание storageClassName для тома сервиса
                storageClassName:
                #  -- Указание размера тома для хранения данных сервиса
                storage: 10Gi
                #  -- Указание параметров доступа к тому с данными сервиса
                accessModes:
                    - ReadWriteOnce
                #  -- Путь рабочей папки hub-engine
                path: /home/ubuntu/jenkins_slave
                #-- nodeSelector для компонента hub-engine
            nodeSelector: {}
            # label: value
            #  -- Стратегия развертывания новых pod's
            strategy: {}
            env:
                # hub-engine -- Указание TimeZone Europe/Moscow
                timezone: Europe/Moscow
            # -- Дополнительные лейблы для pods hub-engine
            podLabels: {}
            #  -- Монтирование дополнительных томов в контейнер
            extraVolumemounts: {}
                # - name: ssl-root-ca
                #   mountPath: /tmp/certs/ssl-rootca.crt
                #   subPath: ssl-rootca.crt
                # - name: varlog
                #   mountPath: /path/logs
            extraVolumes: {}
                # - name: ssl-root-ca
                #   secret:
                #     secretName: ssl-root-ca
                # - name: varlog
                #   emptyDir: {}
                # - name: config-volume
                #   secret:
                #     secretName: fluentd-config-avc
    

    3.9. ingress:

    • Укажите домены AppSec.Hub и hub-engine-manager в полях соответствующих секций. Параметр enabled: определяет, нужно ли создавать Ingress для конкретного сервиса.
    • Создайте секрет с SSL-сертификатами, установив create: true и указав необходимые сертификаты.
    • Включите использование SSL, установив опцию ssl: true.
    • Для задания специфичных параметров укажите их в секции annotations.
    • Укажите класс Ingress-контроллера.
    Пример модуля
    ingress:
        # Название Ingress AppSec.Hub
        - name: hub
            # Аннотации к объекту Ingress AppSec.Hub
            annotations:
                nginx.ingress.kubernetes.io/proxy-body-size: "0"
                #kubernetes.io/ingress.class: nginx-internal
            # Указание Ingress Class, nginx-internal
            class_name: nginx-internal
            # Создать Ingress для AppSec.Hub (true/false)
            enabled: true
            # Ingress hosts AppSec.Hub
            hosts:
                # Указать домен AppSec.Hub
                - host: appsec-hub.example.com
                    paths:
                    - path: /
                        pathType: Prefix
                        backend:
                            service:
                                name: hub-ui
                                port:
                                    number: 80
            # Ingress TLS AppSec.Hub
            tls:
            - hosts:
                # Указать домен AppSec.Hub
                - appsec-hub.example.com
                # -- При `ingress.hub.ssl.enable: true` не менять значение, при использовании существующих секретов - поменять имя секрета на актуальное
                secretName: secret-tls-hub
                # Для создания секрета при старте `create: true`
                # Указать сертификат и ключ ssl
                # Создать секрет с SSL сертификатами (true/false)
                create: true
                # Сертфикат, закодированный в Base64
                crt: Сертфикат, закодированный в Base64
                # Сертфикат, закодированный в Base64
                key: Сертфикат, закодированный в Base64
    
            ssl:
                # Использовать SSL (true/false)
                enable: true
        # Название Ingress Hub engine manager
        - name: hub-engine-manager
            # Создать Ingress для Hub engine manager (true/false)
            enabled: true
        #      name: hub-engine-manager
            # Аннотации к объекту Ingress Hub engine manager
            annotations:
                nginx.ingress.kubernetes.io/proxy-body-size: "0"
            # Указание Ingress Class, nginx-internal
            class_name: nginx-internal
            # Ingress hosts для Hub engine manager
            hosts:
                # Указать домен для Hub engine manager
                - host: hub-engine-manager.example.com
                    paths:
                        - path: /
                            pathType: Prefix
                            backend:
                                service:
                                    name: hub-engine-manager
                                    port:
                                        number: 8080
            tls:
            - hosts:
                # Указать домен Hub engine manager
                - hub-engine-manager.example.com
                # При `ingress.hubEngineManager.ssl.enable: true` не менять значение, при использовании существующих секретов - поменять имя секрета на актуальное
                secretName: secret-tls-hub-engine-manager
                ## Для создания секрета при старте `create: true`
                # Указать сертификат и ключ ssl
                # Создать секрет с SSL сертификатами (true/false)
                create: true
                # Сертфикат, закодированный в Base64
                crt: Сертфикат, закодированный в Base64
                # Сертфикат, закодированный в Base64
                key: Сертфикат, закодированный в Base64
            ssl:
                # Использовать SSL (true/false)
                enable: true
    

    3.10. postgresql:

    Основные настройки PostgreSQL:

    • Включите PostgreSQL, укажите enable: true для активации PostgreSQL.
    • Остальные параметры привести в соответствие с hubdbmigration (POSTGRES_PASSWORD), вне зависимости от использования или нет, образ используется для проверки доступности БД, то есть данные должны быть актуальны.
    • Включите PVC:
      • Установите enable: true для создания постоянного тома.
      • Укажите класс хранилища storageClassName (оставьте пустым, чтобы использовать значение по умолчанию).
      • Укажите размер тома storage.
    Пример модуля
    postgresql:
    
        # -- Установить PostgreSQL (true/false)
        enable: true
    
        # -- Имя контейнера
        fullname: postgresql
    
        image:
            # -- Путь к репозиторию образа
            name: public/sfs-postgresql
            # -- Политика загрузки образа
            pullPolicy: IfNotPresent
            # -- Реестр образов контейнеров
            repository: registry.appsec.global
            # -- Тег версии образа
            tag: 13.2.2-alpine
    
        # -- Количество реплик компонента
        replicas: 1
    
        # -- Дополнительные лейблы для Pods postgresql
        podLabels: {}
    
        service:
            # -- При использовании service.type=LoadBalancer необходимо поставить true
            # -- и указать статический ip адрес
            enableIp: null
            # -- Политика Service
            externalTrafficPolicy: Local
            # -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
            ip: null
            # -- Порт для Service
            port: 5432
            # -- Порт на который нацелен Service
            targetPort: 5432
            # -- Тип Service, LoadBalancer или ClusterIP
            type: ClusterIP
            # -- Аннотации к объекту Service
            annotations: {}
    
        # -- NodeSelector для компонента PostgreSQL
        nodeSelector: {}
            #label: value
    
        # -- Стратегия развертывания новых pod's
        strategy:
            type: Recreate
    
    # -- Установка лимитов для контейнера PostgreSQL
    #   resources:
    #       requests:
    #           memory: "128Mi"
    #           cpu: "30m"
    #       limits:
    #           memory: "4096Mi"
    #           cpu: "4000m"
    
        # PVC PostgreSQL
        pvc:
            # -- Создать постоянный том для хранения PostgreSQL
            enable: true
            # -- Указание storageClassName для тома сервиса
            storageClassName: yc-network-hdd
            # -- Указание размера тома для хранения данных сервиса
            storage: 10Gi
            # -- Указание параметров доступа к тому с данными сервиса
            accessModes:
                - ReadWriteOnce
    

    3.11. consul:

    • Добавьте consulToken.
    • Добавьте секрет imagePullSecrets для доступа к реестру, если требуется.
    • Включите UI (пользовательский интерфейс Consul), если требуется.
    Пример модуля
    consul:
        enabled: true
        fullnameOverride: consul
        hubConnect:
            consulHost: "http://consul-expose-servers"
            consulPort: "8500"
            consulToken: "<consul token>"
        connectInject:
            enabled: false
        global:
            datacenter: appsechub
            logJSON: true
            image: registry.appsec.global/public/sfs-consul:1.14.4
            imagePullSecrets:
                - name: regcred
            acls:
                manageSystemACLs: false
                enabled: true
                default_policy: "deny"
                enable_token_persistence: true
                bootstrapToken:
                    secretName: consul-secret
                    secretKey: consul-token
        client:
            enabled: false
        server:
            replicas: 1
            bootstrapExpect: 1
            disruptionBudget:
                maxUnavailable: 0
            exposeService:
                enabled: true
                type: ClusterIP
            extraConfig: |
                {
                    "addresses": {
                        "http": "0.0.0.0"
                    },
                    "acl": {
                        "enabled": true,
                        "default_policy": "deny",
                        "down_policy": "extend-cache",
                        "enable_token_persistence": true
                    }
                }
        ui:
            ingress:
                enabled: true
            ingressClassName: nginx
            pathType: Prefix
            hosts:
                - host: hub-engine-manager.example.com
                    paths:
                        - /
            tls: []
            annotations:
                nginx.ingress.kubernetes.io/rewrite-target: /
    

    3.12. gateway:

    • Укажите ключ подписи - jwtToken (для генерации токена можно использовать следующую команду: dd if=/dev/urandom bs=1 count=64 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev).
    Пример модуля
    gateway:
    
        # -- Имя контейнера hub-gateway
        fullname: hub-gateway
    
        ## -- Стратегия развертывания новых pod's
        strategy:
            type: Recreate
    
        image:
            # -- Путь к репозиторию образа
            name: appsechub/hub-gateway
            # -- Политика загрузки образа
            pullPolicy: Always
            # -- Реестр образов контейнеров
            repository: registry.appsec.global
            # -- Тег версии образа
            tag: 2025.4.2
    
        # -- Количество реплик компонента (не менять)
        replicas: 1
    
        env:
            # -- Указание TimeZone Europe/Moscow
            timezone:
            # -- Ключ подписи jwt-токена для сервиса hub-gateway
            # Для генерации токена можно использовать следующую команду
            # dd if=/dev/urandom bs=1 count=64 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
            jwtToken: ttBaLs8aIv0t8vSQ12209hVMftI6PVIRFsJsn2HX6h3gIv9vgoK2ZWIKxiB499qvOQITfpkVuXarxBC++3Rahg=
    
        # -- Дополнительные лейблы для Pods hub-gateway
        podLabels: {}
    
        service:
            # -- Тип Service, LoadBalancer или ClusterIP
            type: ClusterIP
            # -- Политика Service
            externalTrafficPolicy: Local
            # -- При использовании service.type=LoadBalancer необходимо поставить true
            # и указать статический ip адрес
            enableIp: null
            # -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
            ip: null
            # -- Порт для Service
            port: 8080
            ## -- Порт контейнера, на который ссылается Service
            targetPort: 8080
    
            ####
            # -- Аннотации к объекту Service hub-gateway
            # Пример:
            #annotations: {
            #   yandex.cloud/load-balancer-type: Internal,
            #   yandex.cloud/subnet-id: <id-subnet>
            #}
            annotations: null
    
        ## -- Аннотации для пода hub-gateway
        ## Appsec.Hub не работатет с автоскейлингом
        #annotations:
        #   cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
        annotations: null
    
        ###
        # -- Установка лимитов для контейнера
        #resources:
        #   requests:
        #       memory: "4096Mi"
        #       cpu: "200m"
        #   limits:
        #       memory: "8192Mi"
        #       cpu: "4000m"
    
        ###
        # --NodeSelector для компонента hub-gateway deployment
        nodeSelector: {}
        #   label: value
    

    3.13. hub-sso:

    • Укажите ключ шифрования - encKey (для генерации токена можно использовать следующую команду: dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2-17 | rev).
    • Укажите опцию url AppSec.Hub.
    Пример модуля
    hubsso:
    
        # -- Запуск hub-sso сервиса (true/false)
        enable: true
    
        # -- Имя контейнера hub-sso
        fullname: hub-sso
    
        image:
            # -- Путь к репозиторию образа
            name: appsechub/hub-sso
            # -- Реестр образов контейнеров
            repository: registry.appsec.global
            # -- Тег версии образа
            # -- Политика загрузки образа
            tag: 2025.4.2
            # -- Политика загрузки образа
            pullPolicy: Always
    
        # -- Стратегия развертывания новых pod's
        strategy:
            type: Recreate
    
        # -- Аннотации к объекту hub-sso
        annotations: {}
    
        # Установка лимитов для контейнера
        resources:
            requests:
                memory: "1024Mi"
                cpu: "200m"
            limits:
                memory: "8192Mi"
                cpu: "4000m"
    
        ## -- nodeSelector для компонента hub-sso
        nodeSelector: {}
    
        # Для генерации токена можно использовать следующую команду
        # dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2-17 | rev
        # -- Ключ шифрования SSO
        encKey: "ADa29lu2+uoSiSA0"
    
        service:
            # -- Тип Service, LoadBalancer или ClusterIP
            type: ClusterIP
            # -- Политика Service
            externalTrafficPolicy: local
            # -- При использовании service.type=LoadBalancer необходимо поставить true
            # и указать статический ip адрес
            enableIp: false
            # -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
            ip: null
            # -- Аннотации к объекту Service hub-sso
            annotations: {}
    
        hub:
            service:
                # -- Указать url AppSec.Hub
                url: https://appsec-hub.example.com
    
        env:
            # -- Размер пула соединений с базой данных
            dbPoolSize: "10"
            # -- Указание TimeZone Europe/Moscow
            timezone: Europe/Moscow
    
        # -- Дополнительные лейблы для Pods hub-sso
        podLabels: {}
    
        # -- Монтирование дополнительных томов в контейнер
        extraVolumemounts: {}
        #    - name: varlog
        #      mountPath: /opt/py-model/logs
    
        # -- Указание дополнительных томов контейнера
        extraVolumes: {}
        #    - name: varlog
        #      emptyDir: {}
        #    - name: config-volume
        #      secret:
        #        secretName: fluentd-config-avc
    

    3.14. hub-pipeline:

    Пример модуля
    hubpipeline:
        enable: true
        # -- Имя контейнера hub-pipeline
        fullname: hub-pipeline
        image:
            # -- Путь к репозиторию образа hub-pipeline
            name: appsechub/hub-pipeline
            # -- Реестр образов контейнеров
            repository: registry.appsec.global
            # -- Тег версии образа
            tag: 2024.4.1
            # -- Политика загрузки образа
            pullPolicy: Always
        # -- Стратегия развертывания новых pod's
        strategy:
            type: Recreate
        # -- Аннотации к объекту hub-pipeline
        annotations: {}
        db_name: pipeline_db
        # Установка лимитов для контейнера
        #resources:
        #  requests:
        #    memory: "1024Mi"
        #    cpu: "200m"
        #  limits:
        #    memory: "8192Mi"
        #    cpu: "4000m"
        service:
            # -- При использовании service.type=LoadBalancer необходимо поставить true
            # и указать статический ip адрес
            enableIp: false
            # -- Политика Service
            externalTrafficPolicy: local
            # -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
            ip: null
            # -- Тип Service, LoadBalancer или ClusterIP
            type: ClusterIP
            # -- Аннотации к объекту Service
            annotations: {}
        # -- nodeSelector для компонента hub-pipeline
        nodeSelector: {}
            #label: value
        env:
            # -- Указание TimeZone Europe/Moscow
            timezone: Europe/Moscow
            # -- Дополнительные лейблы для Pods hub-pipeline
        podLabels: {}
    

    3.15. rabbitmq:

    Пример модуля
    rabbitmq:
        enable: true
        fullname: rabbitmq
        image:
            # -- Путь к репозиторию образа
            name: public/sfs-rabbitmq
            # -- Политика загрузки образа
            pullPolicy: IfNotPresent
            # -- Реестр образов контейнеров
            repository: registry.appsec.global
            # -- Тег версии образа
            tag: 3.13-management
        auth:
            username: user
            password: ""
        podLabels: {}
            # Порты для Service
        ports:
        - name: amqp
            port: 5672
            targetPort: 5672
            protocol: TCP
        - name: management
            port: 15672
            targetPort: 15672
            protocol: TCP
            annotations: {}
        # -- NodeSelector для компонента rabbitmq
        nodeSelector: {}
        # -- Стратегия развертывания
        strategy:
            type: Recreate
    # -- Установка лимитов для контейнера rabbitmq
    #   resources:
    #       requests:
    #           memory: "512Mi"
    #           cpu: "500m"
    #       limits:
    #           memory: "1Gi"
    #           cpu: "1"
        pvc:
            # -- Создать постоянный том для хранения rabbitmq
            enable: true
            # -- Указание storageClassName для тома сервиса
            storageClassName: yc-network-ssd
            # -- Указание размера тома для хранения данных сервиса
            storage: 10Gi
            # -- Указание параметров доступа к тому с данными сервиса
            accessModes:
                - ReadWriteOnce
    

    3.16. hubissue:

    Пример модуля
    hubissue:
    
        # -- Имя контейнера hub-issue
        fullname: hub-issue
    
        image:
            # -- Путь к репозиторию образа hub-issue
            name: appsechub/hub-issue
            # -- Реестр образов контейнеров
            repository: registry.appsec.global
            # -- Тег версии образа
            tag: 2025.4.2
            # -- Политика загрузки образа
            pullPolicy: Always
    
        # -- Стратегия развертывания новых pod's
        strategy:
            type: Recreate
    
        # -- Аннотации к объекту hub-issue
        annotations: {}
    
        # Установка лимитов для контейнера
        resources:
            requests:
                memory: "1024Mi"
                cpu: "200m"
            limits:
                memory: "8192Mi"
                cpu: "4000m"
    
        service:
            # -- При использовании service.type=LoadBalancer необходимо поставить true
            # и указать статический ip адрес
            enableIp: false
            # -- Политика Service
            externalTrafficPolicy: local
            # -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
            ip: null
            # -- Тип Service, LoadBalancer или ClusterIP
            type: ClusterIP
            # -- Аннотации к объекту Service
            annotations: {}
    
        # -- nodeSelector для компонента hub-issue
        nodeSelector: {}
            #label: value
    
        env:
            # -- Логирование с временными метками
            executionLogEnabled: "false"
            executionLogMinDurationMsToLog: "1000"
            # -- Размер пула соединений с базой данных
            dbPoolSize: "10"
            # -- Указание TimeZone Europe/Moscow
            timezone: Europe/Moscow
    
        # -- Дополнительные лейблы для Pods hub-issue
        podLabels: {}
    

    3.17. issueRule:

    Пример модуля
    issueRule:
    
        # -- Имя контейнера hub-issue-rule
        fullname: hub-issue-rule
    
        image:
            # -- Путь к репозиторию образа hub-issue-rule
            name: appsechub/hub-issue-rule
            # -- Реестр образов контейнеров
            repository: registry.appsec.global
            # -- Тег версии образа
            tag: 2025.4.2
            # -- Политика загрузки образа
            pullPolicy: Always
    
        # -- Стратегия развертывания новых pod's
        strategy:
            type: Recreate
    
        # -- Аннотации к объекту hub-issue-rule
        annotations: {}
    
        # Установка лимитов для контейнера
        resources:
            requests:
                memory: "1024Mi"
                cpu: "200m"
            limits:
                memory: "8192Mi"
                cpu: "4000m"
    
        service:
            # -- Тип Service, LoadBalancer или ClusterIP
            type: ClusterIP
            # -- Политика Service
            externalTrafficPolicy: local
            # -- При использовании service.type=LoadBalancer необходимо поставить true
            # и указать статический ip адрес
            enableIp: false
            # -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
            ip: null
            # -- Аннотации к объекту Service
            annotations: {}
    
        # -- nodeSelector для компонента hub-issue-rule
        nodeSelector: {}
            #label: value
    
        env:
            # -- Логирование с временными метками
            executionLogEnabled: "false"
            executionLogMinDurationMsToLog: "1000"
            # -- Размер пула соединений с базой данных
            dbPoolSize: "10"
            # -- Указание TimeZone Europe/Moscow
            timezone: Europe/Moscow
    
        # -- Дополнительные лейблы для Pods hub-issue-rule
        podLabels: {}
    

    3.18. Включение метрик в AppSec.Hub:

    • Убедитесь, что модуль Superset включен, установив параметр enabled: true.
    • Установите пользователя, от имени которого будет запускаться контейнер: runAsUser: 1000.
    • В разделе configOverrides модуля Superset, раскомментируйте secret и укажите SECRET_KEY (для генерации можно использовать следующую команду: openssl rand -base64 42).
    • Укажите пароль для подключения Superset к базе данных метрик в разделе supersetNode, db_pass: 'пароль_для_подключения_BD'.
    • Замените пароль по умолчанию в опции init.adminUser.password. Этот пароль должен совпадать с METRICS_PASSWORD из модуля hubmetricsbridge.
    • Укажите пароль для пользователя metrics в разделе postgresql. Пароль должен совпадать с db_pass, указанным в supersetNode.
    • Включите использование PVC, указав storageClass, accessModes, size - размер тома.
    • В разделе hubmetricsbridge укажите следующие параметры:
      • PGPASSWORD - пароль пользователя с административным доступом БД метрик, должен совпадать с паролем указанным в модуле postgresql.
      • SCHEDULER_DB_PASSWORD - пароль пользователя scheduler БД метрик.
      • METRICS_DB_PASSWORD - пароль пользователя метрик.
      • REMOTE_PASSWORD_DB - пароль пользователя с правами администратора на БД AppSec.Hub.
      • METRICS_PASSWORD - имя пользователя метрик, должно совпадать с паролем, указанным в модуле init.
    Пример модуля
    superset:
        enabled: true
        fullnameOverride: hub-superset
        runAsUser: 1000
        secretEnv:
            create: true
        serviceAccountName: superset
        serviceAccount:
            create: true
        configOverrides:
            secret: |
                SECRET_KEY = 'Ваш_сгенерированный_SECRET_KEY'
        supersetNode:
            connections:
                db_pass: 'пароль_для_подключения_BD'
        init:
            adminUser:
                password: 'пароль_для_admin_metrics'
        postgresql:
            auth:
                username: metrics
                password: 'пароль_администратора_БД_метрик'
        primary:
            persistence:
                enabled: true  # Включить использование PVC
                storageClass: <имя_вашего_StorageClass>  # Укажите StorageClass
                accessModes:
                    - ReadWriteOnce  # Задайте тип доступа (например, "ReadWriteOnce")
                size: 10Gi  # Укажите размер тома
        imagePullSecrets:
            - name: regcred
        hubmetricsbridge:
            PG_USER: metrics
            PGPASSWORD: 'пароль_администратора_БД_метрик'
            PG_URL: hub-postgresql
            SCHEDULER_DB_PASSWORD: 'пароль_scheduler'
            METRICS_DB_PASSWORD: 'пароль_пользователя_метрик'
            REMOTE_HOST_DB: postgresql
            REMOTE_PORT_DB: 5432
            REMOTE_DB: hubdb
            REMOTE_USER_DB: hubadm
            REMOTE_PASSWORD_DB: 'пароль_администратора_БД_AppSec.Hub'
            METRICS_HOST: http://hub-superset
            METRICS_PORT: 8088
            METRICS_USERNAME: admin
            METRICS_PASSWORD: 'пароль_admin_metrics'
            METRICS_DATABASE_URL: "postgresql+psycopg2://metrics_user:%s@hub-postgresql:5432/metrics_data"
            CHRON: "0 0 * * * *"
            nodeSelector: {}
    

    3.19. scheduler:

    Пример модуля
    hubscheduler:
    enable: true
    # -- Имя контейнера hub-scheduler
    fullname: hub-scheduler
    image:
        # -- Путь к репозиторию образа hub-scheduler
        name: appsechub/hub-scheduler
        # -- Реестр образов контейнеров
        repository: registry.appsec.global
        # -- Тег версии образа
        tag: 2025.4.1
        # -- Политика загрузки образа
        pullPolicy: Always
    # -- Стратегия развертывания новых pod's
    strategy:
        type: Recreate
    # -- Аннотации к объекту hub-scheduler
    annotations: {}  
    db_name: scheduler_db
    # Установка лимитов для контейнера
    #resources:
    #  requests:
    #    memory: "1024Mi"
    #    cpu: "200m"
    #  limits:
    #    memory: "8192Mi"
    #    cpu: "4000m"
    service:
        # -- При использовании service.type=LoadBalancer необходимо поставить true
        # и указать статический ip адрес
        enableIp: false
        # -- Политика Service
        externalTrafficPolicy: local
        # -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
        ip: null
        # -- Тип Service, LoadBalancer или ClusterIP
        type: ClusterIP
        # -- Аннотации к объекту Service
        annotations: {}
    # -- nodeSelector для компонента hub-scheduler
    nodeSelector: {}
    env:
        # -- Указание TimeZone Europe/Moscow
        timezone: Europe/Moscow
        # -- Дополнительные лейблы для Pods hub-scheduler
    podLabels: {}
    

    3.20. defect-sync:

    Пример модуля
    hubdefectsync:
    enable: true
    # -- Имя контейнера hub-defectsync
    fullname: defect-sync
    image:
        # -- Путь к репозиторию образа hub-defectsync
        name: appsechub/hub-defect-sync
        # -- Реестр образов контейнеров
        repository: registry.appsec.global
        # -- Тег версии образа
        tag: 2025.4.1
        # -- Политика загрузки образа
        pullPolicy: Always
    # -- Стратегия развертывания новых pod's
    strategy:
        type: Recreate
    # -- Аннотации к объекту hub-defectsync
    annotations: {}  
    # Установка лимитов для контейнера
    #resources:
    #  requests:
    #    memory: "1024Mi"
    #    cpu: "200m"
    #  limits:
    #    memory: "8192Mi"
    #    cpu: "4000m"
    service:
        # -- При использовании service.type=LoadBalancer необходимо поставить true
        # и указать статический ip адрес
        enableIp: false
        # -- Политика Service
        externalTrafficPolicy: local
        # -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
        ip: null
        # -- Тип Service, LoadBalancer или ClusterIP
        type: ClusterIP
        # -- Аннотации к объекту Service
        annotations: {}
    # -- nodeSelector для компонента hub-defectsync
    nodeSelector: {}
    env:
        # -- Указание TimeZone Europe/Moscow
        timezone: Europe/Moscow
        # -- Дополнительные лейблы для Pods hub-defectsync
    podLabels: {}
    

    3.21. Для более гибкой настройки смотрите файл values.yaml.

  4. Установите AppSec.Hub.

    helm upgrade --install hub sfs/appsechub -f values.yaml
    
К началу