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

Приложение 23. Конфигурационный файл values.yaml

Пример конфигурационного файла values.yaml

## Создание секрета для container registry
## если есть созданный секрет - указать его имя
## если нужн создать - поставить `create: true`
## указать логин и пароль (username and password)
images:
  registry:
    #  -- Реестр образов контейнеров AppSec.Hub
    name: registry.appsec.global
    ImagePullSecret:
      # -- Имя ImagePullSecret. Оставьте пустым, если ImagePullSecret не требуется
      # -- regcred
      name: regcred
      # -- Создать ImagePullSecret (true/false)
      # -- Если установлено значение false, то имя и учетные данные не требуются
      create: false
      # -- Username для досупа в реестр (Если create = true)
      username:
      # -- Password для досупа в реестр (Если create = true)
      password:

# Модуль hub-air
# MODEL_SECRET_KEY - указать в открытом виде
# MODEL_USE_ENCRYPTION - поставить в 1
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:
  # -- Дополнительные лейблы для 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_
hubdbmigration:
  # -- Имя контейнера hubdbmigration
  fullname: hubdbmigration
  # -- Порт контейнера БД
  PG_PORT: "5432"
  # -- Адрес БД
  PG_URL: postgresql
  # -- Пользователь БД
  PGUSER: postgres
  # -- Имя БД
  hubdbName: hubdb
  # -- Пароль БД
  PGPASSWORD:
  # -- Пароль пользователя AppSec.Hub с правами администратора
  hubadmPassword:
  # -- Пароль пользователя
  hubappPassword:
  # -- Пароль пользователя для сервиса аутентификации
  hubauthPassword:
  # -- Пароль пользователя с правами работы с AppSec.Hub DWH
  hubbiPassword:
  # 
  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
  # -- Установка лимитов для initcontainer hubdbmigration
  # resources:
  #   requests:
  #     memory: "128Mi"
  #     cpu: "50m"
  #   limits:
  #     memory: "128Mi"
  #     cpu: "100m"



# При использовании app.properties как файла/секрета через volume
# По умолчанию используются значения из JAVA_OPTS (см. ниже)
# Данные для подключения к БД должны соответствовать секции `hubdbmigration`
hubcore:
  options:
    app_properties:
     ## Класс драйвера для БД
     # db_hub_driver: org.postgresql.Driver
     ## Адрес экземпляра PostgreSQL, значение по умолчанию jdbc:postgresql://$DB_HOST:$DB_PORT/$DB_NAME
     # db_hub_url: "jdbc:postgresql://${PG_URL}:${PG_PORT}/${HUBDBNAME}"
     ## Основная схема БД, в которой содержится оперативная информация о работе AppSec.Hub
     # db_hub_schema: hub
     ## Имя пользователя с доступом к основной схеме БД
     # db_hub_username=hubapp
     ## Пароль пользователя с доступом к основной схеме БД
      db_hub_password:
     # 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:
     # Размер пула соединений с БД
     # db_poolSize: 30
     ## Ключ шифрования паролей, используемых для доступа к инструментам ИБ. Размер ключа — 24 символа
     ## Для генерации ключа можно использовать следующую команду
     ## dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2-25 | rev
      encrypt_key: <HUBAPP-ENC-KEY>
     ## Внешний URL экземпляра AppSec.Hub
      hub_app_url: https://appsec-hub.example.com
     ## Cron-выражение, задающее период опроса статуса сборок в CI-инструментах и, тем самым, частоту обновления данных о статусе сканирования в системе
     # hub_scan_check_cron_expression: "*/30 * * * * *"
     ## Размер пула потоков для импорта уязвимостей в AppSec.Hub
     #  hub_config_importIssueThreadPoolSize: 8
     ## Размер пула потоков для экспорта уязвимостей из инструментов
     # hub_config_importConfigThreadPoolSize: 8
     ## Количество потоков для работы с рассылаемыми уведомлениями
     # hub_config_notificationThreadPoolSize: 4
     ## Количество потоков импорта данных в Data Warehouse
     # hub_config_dwImportThreadPoolSize: 6
     ## Общее количество одновременно запускаемых потоков синхронизации дефектов. Учитываются как потоки, запущенные «вручную», так и автоматически
     # hub_config_defectSynchronizationThreadPoolSize: 4
     ## Количество потоков для работы с системами отслеживания дефектов
     # hub_config_orchestrationThreadPoolSize: 16
     ## Размер очереди задач импорта
     # hub_config_scanConfigImportIssueThreadPoolQueueCapacity: 200
     ## Ограничение в мегабайтах максимального размера файла в разделе Path для SAST уязвимостей
     # hub_config_gettingSourceCode_maxFileSizeInMegabytes: 8
     ##
     # hub_issue_import_strategy: "hub-history-strategy"
     ##
     # dw_hub_importer_delay_timeMillSec: 1000
     ##
     # dw_hub_importer_delay_poolSize: 10
     ## Автоматический запуск импорта данных в схему BI при старте приложения
     # hub_dw_import_on_startup: true
     ## Cron-выражение, задающее период импорта security issues
     # dw_scheduledImport_cron_expression: "0 0 1,22 * * ?"
     ##
     # dw_defectTrend_daily_recalculation_delay_ms: 300000
     ## Промежуток в миллисекундах между обращениями AppSec.Hub к Jenkins
     # hub_ci_jenkins_poll_period: 10000
     ## Количество обращений AppSec.Hub к Jenkins
     # hub_ci_jenkins_poll_max_tries: 50
     ## Cron-выражение, задающее период тренировки модели AVC
     # hub_avc_training_schedule: "0 0 2 * * ?"
     ## Cтратегия создания URL для репозиториев Docker. С использованием имени репозитория или порта
     # export_docker_repository_url_creation_strategy: port
     ## Ограничение количества запросов в секунду к Jira
     # hub_jira_queriesPerSecond: 100.0
     ## Ограничение размера кэша пользователей из Jira
     # hub_jira_users_cache_maxSize: 100
     ## Ограничение в минутах времени жизни кэша пользователей из Jira
     # hub_jira_users_cache_expiration_min: 7200
     ## Максимальное количество пользователей Jira
     # hub_jira_users_maxResults: 50
     ## Максимальное количество тикетов для экспорта
     # hub_jira_issues_maxResults: 1000
     ## Ограничение на количество пользователей получаемых из Jira
     # hub_jira_users_limit: "-1"
     ## Количество периодов синхронизации
     # hub_defect_defectSynchronizationPeriod: 1
     ##
     # hub_defect_enableDefectSynchronization: true
     ##
     # hub_defect_enableSingleDefectSynchronization: false
     ## Cron-выражение, задающее период синхронизации
     # hub_defect_defectSynchronizationPeriodDurationCronExpression: "0 0 0/1 * * ?"
     ## URL-адрес сервиса consul с http/https
     # hub_consul_host: "http://consul-expose-servers:8500"
     ## токен для доступа к сервису consul
     # hub_consul_token: <consul_token>
     ## 
     # hub_jira_description_length: 32767
     ##
     # hub_jira_description_length: "-1"
     # hub_config_qualityGateTaskThreadPoolSize: 4
     ## Порт gRPC
     # hub_grpc_port: 50051
     ## URL сервиса hub-core
     # hub_service_url: http://hub-core
     ## Включение сбора метрик сервиса hub-core
     # management_metrics_enable_all: true
     # Максимальный размер сообщения, допустимый для приема по каналу gRPC
     # hub_grpc_max_inbound_message_size: "10485760"
     ## Протоколы, используемые для соединения с инструментами. Значения могут быть выбраны в любой комбинации
     # hub_http_client_tls_protocols: "TLSv1,TLSv1.1,TLSv1.2,TLSv1.3"
     ## Таймаут в настройках HTTP клиента
     # hub_http_client_timeout_request: 60000
     ## Таймаут в настройках HTTP клиента
     # hub_http_client_timeout_read: 60000
     ## Таймаут в настройках HTTP клиента
     # hub_http_client_timeout_connect: 5000
     ## Таймаут в настройках HTTP клиента
     # hub_http_client_timeout_handshake: 10000
     ## Количество неуспешных попыток входа пользователя до блокировки
     # hub_config_login_attemptsBeforeBlocking: 5
     ## Время блокировки пользователя после достижения максимального количества неудачных попыток входа (в минутах)
     # hub_config_login_blockingTimeInMinutes: 30
     ## Лимит времени на сканирование security pipeline в hub-engine (в минутах)
     # hub_ci_jenkins_pipelineTimeoutInMinutes: 10080
     ## Путь конфигурационных файлов ZAP
     # hub_scan_config_file_path: "/opt/zapfiles"
     # hub_issue_maxInsertSize: 1000
     # Размер очереди пула потока для массовой смены статуса уязвимостей
     # hub_config_bulkIssuesThreadPoolQueueCapacity: 100
     # Cron-выражение, задающее период импорта OSA сработок
     # hub_osa_issues_import_cron_expression: "0 0 5 * * *"
     # 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: <hub_auth_password>
     ## Размер пула соединений для сервиса аутентификации 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: <HUBAPP-SIGN-KEY>
     ## Время обновления токена
     # jwt_token_refresh_expiration_time: 60
     ## Тип аутентификации (local, ldap)
     # authType: local
     ## Defines the LDAP server location
     # ldap_url: ldap://www.zflexldap.com:389
     ## LDAP username
     # ldap_username: cn=ro_admin,ou=sysadmins,dc=zflexsoftware,dc=com
     ## LDAP password
     # ldap_password: zflexpass
     ## Defines the point from where a server will search for users
     # ldap_searchBase: ou=users,ou=guests,dc=zflexsoftware,dc=com
     ## Filter for searching
     # ldap_searchFilter: '(uid={0})'
     # metrics_username: admin
     # metrics_password: admin
     #включает логирование затраченного времени на выполнение методов в сервисе
     # logging_execution_log_enabled: false
     #порог в миллисикундах на логгирование
     # logging_execution_log_min_duration_ms_to_log: 10000

    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
  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: false
     # -- Указание storageClassName для тома сервиса
#    storageClassName:
     # -- Указание размера тома для хранения данных сервиса
#    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"

hubui:
  # -- Имя контейнера hub-ui
  fullname: hub-ui
  selectedNginxConf: "metrics"  # Возможные значения: "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: {}


# Сервис DinD для hub-engine
docker_in_docker:
  # -- Запуск DinD для hub-engine
  enable: true
  # -- Имя контейнера DinD
  fullname: docker-in-docker
  image:
    # -- Путь к репозиторию образа DinD
    name: docker
    # -- Политика загрузки образа
    pullPolicy: Always
    # -- Реестр образов контейнеров
    repository: #registry.appsec.global
    # -- Тег версии образа
    tag: 24.0.8-dind
  env:
    # -- Указание TimeZone Europe/Moscow
    timezone: Europe/Moscow
  # -- Дополнительные лейблы для pods DinD
  podLabels: {}
  service:
    # -- При использовании service.type=LoadBalancer
    externalTrafficPolicy: Local
    # -- Порт для Service
    port: 2375
    # -- Порт контейнера, на который ссылается Service
    targetPort: 2375
    # -- Тип Service, LoadBalancer или ClusterIP
    type: ClusterIP
    # -- Аннотации к объекту Service
    annotations: {}
  # -- Аннотации для пода DinD
  annotations: {}
  # -- Указать nodeSelector если требуется
  nodeSelector: {}
#  resources:
#    requests:
#      memory: "128Mi"
#      cpu: "30m"
#    limits:
#      memory: "4096Mi"
#      cpu: "4000m"



# -- CI инструмент
# @default -- Смотреть _values.yaml_
hubEngineManager:
  # -- Запуск CI инструмента hub-engine-manager (true/false)
  enable: false
  # -- Имя контейнера 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: false
    # -- Указание storageClassName для тома сервиса
    storageClassName:
    # -- Указание размера тома для хранения данных сервиса
    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


  # Дополнительные переменные, при необходимости добавить свои
  extraEnvs:
    - name: DOCKER_HOST
      value: tcp://docker-in-docker:2375
    - name: fetch_license
      value: \"true\"
    - name: maven_home
      value: /opt/maven
    - name: gradle_home
      value: /opt/gradle
    - name: cdxgen_npm_url
      value: https://registry.npmjs.org/
    - name: cdxgen_maven_central_url
      value: https://repo1.maven.org/maven2/
    - name: cdxgen_android_maven
      value: https://maven.google.com/
    - name: cdxgen_pypi_url
      value: https://pypi.org/pypi/
    - name: cdxgen_go_url
      value: https://pkg.go.dev/
    - name: cdxgen_nuget_url
      value: https://api.nuget.org/v3/registration3/

# -- Slave нода hub-engine
# @default -- Смотреть _values.yaml_
hubEngine:
  # -- Запуск CI инструмента hub-engine-manager (true/false)
  enable: false
  # для подключения ноды к 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"
    LOG_FILE: "0"
    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/pipeline_node/scans_folder
    ARCHIVE_FOLDER: /app/pipeline_node/archive_folder
    RABBITMQ_EXCHANGE: ""
    RABBITMQ_ROUTING_KEY: super
    LOGS_LIFETIME_DAYS: "30"
    ARCHIVE_LIFETIME_DAYS: "3"
    SCHEDULER_INTERVAL_HOURS: "24"
    # -- переменная для проброса самоподписанного сертификата в hub-pipeline-agent
    # Путь должен соответствовать тому который в Values.hubEngine.nodes.fullname[1].extraVolumemounts[0].mountPath
    # CUSTOM_CA_PATH: "/tmp/certs/ssl-rootca.crt"
  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: 2022
    #     #  -- Порт на который нацелен Service
    #     targetPort: 2022
    #     #  -- Имя порта на который нацелен Service
    #     portName: port2022
    #     # -- Тип 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


    # # -- Имя контейнера hub-pipeline-agent
    # - fullname: hub-pipeline-agent
    #   image:
    #     #  -- Путь к репозиторию образа
    #     name: appsechub/hub-pipeline-agent
    #     #  -- Политика загрузки образа         
    #     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-pipeline-agent (true/false)
    #     enable: false
    #     #  -- Указание storageClassName для тома сервиса
    #     storageClassName:
    #     #  -- Указание размера тома для хранения данных сервиса
    #     storage: 10Gi
    #     #  -- Указание параметров доступа к тому с данными сервиса
    #     accessModes:
    #       - ReadWriteOnce
    #     #  -- Путь рабочей папки hub-pipeline-agent
    #     path: /home/ubuntu
    #   # -- nodeSelector для компонента hub-pipeline-agent
    #   nodeSelector: {}
    #   # label: value
    #   # -- Стратегия развертывания новых pod's
    #   strategy: {}
    #   env:
    #     # hub-engine -- Указание TimeZone Europe/Moscow
    #     timezone: Europe/Moscow
    #   # -- Дополнительные лейблы для pods hub-pipeline-agent
    #   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


# -- Создание ingress
# @default -- Смотреть _values.yaml_
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:
    # Создать 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: false
      # Сертфикат, закодированный в Base64
      crt:
      # Сертфикат, закодированный в Base64
      key:

    ssl:
      # Использовать SSL (true/false)
      enable: false
  # Название Ingress Hub engine manager
  - name: hub-engine-manager
    # Создать Ingress для Hub engine manager (true/false)
    enabled: false
#      name: hub-engine-manager
    # Аннотации к объекту Ingress Hub engine manager
    annotations:
#      nginx.ingress.kubernetes.io/proxy-body-size: "0"
#      kubernetes.io/ingress.class: nginx-internal
    # Указание 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: false
      # Сертфикат, закодированный в Base64
      crt:
      # Сертфикат, закодированный в Base64
      key:

    ssl:
      # Использовать SSL (true/false)
      enable: false


# Для запуска БД в k8s поставить `enable: true`
# остальные параметры привести в соответствие с hubdbmigration (POSTGRES_PASSWORD)
# вне зависимости от использования или нет, образ используется для проверки доступности БД, то есть данные должны быть актуальны
postgresql:
  # -- Установить PostgreSQL (true/false)
  enable: false
  # -- Имя контейнера
  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: false
    # -- Указание storageClassName для тома сервиса
    storageClassName:
    # -- Указание размера тома для хранения данных сервиса
    storage: 30Gi
    # -- Указание параметров доступа к тому с данными сервиса
    accessModes:
      - ReadWriteOnce
# @ignore
secrets:
  enable: false
#  secrets:
#    - name: ssl-root-ca
#      filename: ssl-rootca.crt
#      data: |
#        <сертификат>
#    - name: fluentd-config-ui
#      filename: fluent.conf
#      data: |
#        <source>
#          @type tail
#          path /var/log-ui/access.log
#          pos_file /tmp/access.pos
#          read_from_head true
#          follow_inodes true
#          tag hub-ui.access
#          <parse>
#            @type nginx
#          </parse>
#        </source>
#
#        <filter hub-ui.access>
#          @type record_transformer
#          <record>
#            hostname ${hostname}
#            env hub.prod
#          </record>
#        </filter>
#
#        <match hub-ui.access>
#          @type elasticsearch
#          host 172.16.12.30
#          port 9200
#          logstash_format true
#          logstash_prefix hub-ui.access
#          <buffer> # blank
#            flush_interval 10s
#          </buffer>
#        </match>
#
#        <source>
#          @type tail
#          path /var/log-ui/error.log
#          pos_file /tmp/error.pos
#          read_from_head true
#          follow_inodes true
#          tag hub-ui.error
#          format /^(?<datetime>[0-9]{4}\/[0-9]{2}\/[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}) \[(?<Log-Level>[a-zA-Z]*)\] (?<proc>[0-9]*#[0-9]*): (?<message>.*)$/
#        </source>
#
#        <filter hub-ui.error>
#          @type record_transformer
#          <record>
#            hostname ${hostname}
#            env hub.prod
#          </record>
#        </filter>
#
#        <match hub-ui.error>
#          @type elasticsearch
#          host 172.16.12.30
#          port 9200
#          #user elasticusr
#          #password Pa$$w0rd
#          logstash_format true
#          logstash_prefix hub-ui.error
#          <buffer> # blank
#            flush_interval 10s
#          </buffer>
#        </match>
#
#    - name: fluentd-config-avc
#      filename: fluent.conf
#      data: |
#        <source>
#          @type tail
#          path /var/log-ml/avc_prediction.log
#          read_from_head true
#          follow_inodes true
#          pos_file /tmp/avc_prediction.pos
#          tag hubcore.hub-air.logs
#          format multiline
#          format_firstline /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3} /
#          format1 /^(?<datetime>[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}) (?<Log-Level>[A-Z]*) Module:(?<Module>.*) Process:(?<Process>\d+) (?<message>.*)$/
#        </source>
#
#        <filter hubcore.hub-air.logs>
#          @type record_transformer
#          <record>
#            hostname ${hostname}
#            env hub.prod
#          </record>
#        </filter>
#
#        <match hubcore.hub-air.logs>
#          @type elasticsearch
#          host 172.16.12.30
#          port 9200
#          #user elasticusr
#          #password Pa$$w0rd
#          logstash_format true
#          logstash_prefix hubcore.hub-air.logs
#          <buffer> # blank
#            flush_interval 10s
#          </buffer>
#        </match>


consul:
  # -- Установить consul (true/false)
  enabled: true
  # -- Имя контейнера
  fullnameOverride: consul
  hubConnect:
    # -- Доменное имя consul (http/https)
    consulHost: "http://consul-expose-servers"
    # -- Порт для consul, default 8500
    consulPort: "8500"
    # -- Токен consul для подключения
    consulToken: "<consul token>"
  connectInject:
  # True if you want to enable connect injection. Set to "-" to inherit from
  # global.enabled.
    enabled: false

  global:
    datacenter: appsechub
    logJSON: true
    image: registry.appsec.global/public/sfs-consul:1.14.4
   # Добавить секрет для container registry, если был создан
   # Example:
   #
   # ```yaml
   # imagePullSecrets:
   #   - name: pull-secret-name
   #   - name: pull-secret-name-2
   # imagePullSecrets:
   #   - name: regcred
    acls:
      manageSystemACLs: false
      enabled: true
      default_policy: "deny"
      enable_token_persistence: true
    # A Kubernetes or Vault secret containing the bootstrap token to use for
    # creating policies and tokens for all Consul and consul-k8s-control-plane components.
    # If set, we will skip ACL bootstrapping of the servers and will only
    # initialize ACLs for the Consul clients and consul-k8s-control-plane system components.
      bootstrapToken:
      # The name of the Kubernetes or Vault secret that holds the bootstrap token.
        secretName: consul-secret
      # The key within the Kubernetes or Vault secret that holds the bootstrap token.
        secretKey: consul-token

  client:
    enabled: false

  server:
    replicas: 1
    bootstrapExpect: 1
    disruptionBudget:
      maxUnavailable: 0
    exposeService:
      enabled: true
      type: ClusterIP
    # @ignored
    extraConfig: |
      {
          "addresses": {
            "http": "0.0.0.0"
          },
          "acl": {
            "enabled": true,
            "default_policy": "deny",
            "down_policy": "extend-cache",
            "enable_token_persistence": true
          }
      }

  ui:
    ingress:
      # This will create an Ingress resource for the Consul UI.
      # @type: boolean
      enabled: true

      # Optionally set the ingressClassName.
      #  "nginx-internal"
      ingressClassName:

      # pathType override - see: https://kubernetes.io/docs/concepts/services-networking/ingress/#path-types
      pathType: Prefix

      # hosts is a list of host name to create Ingress rules.
      #
      # ```yaml
      # hosts:
      #   - host: foo.bar
      #     paths:
      #       - /example
      #       - /test
      # ```
      #
      # @type: array<map>
      hosts:
        - host: hub-engine-manager.example.com
          paths:
            - /

      # tls is a list of hosts and secret name in an Ingress
      # which tells the Ingress controller to secure the channel.
      #
      # ```yaml
      # tls:
      #   - hosts:
      #     - chart-example.local
      #     secretName: testsecret-tls
      # ```
      # @type: array<map>
      tls: [ ]

      # Annotations to apply to the UI ingress.
      #
      # Example:
      #
      # ```yaml
      # annotations: |
      #   'annotation-key': annotation-value
      # ```
      # @type: string
      annotations: null

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:
    # -- Указание TimeZone Europe/Moscow
    timezone: Europe/Moscow
    executionLogEnabled: false
    executionLogMinDurationMsToLog: 10000
    # -- Дополнительные лейблы для Pods hub-issue-rule
  podLabels: {}

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:
    # -- Указание TimeZone Europe/Moscow
    timezone: Europe/Moscow
    importReportFileThreadPoolQueueCapacity: 100
    importReportFileThreadPoolSize: 20
    reportUpdateDescriptions: false
    executionLogEnabled: false
    executionLogMinDurationMsToLog: 10000
    # -- Дополнительные лейблы для Pods hub-issue
  podLabels: {}

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:
    # -- Дополнительные лейблы для 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

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:
  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:
    # -- Указание 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


rabbitmq:
  enable: false
  fullname: rabbitmq
  image:
    # -- Путь к репозиторию образа
    name: public/sfs-rabbitmq
    # -- Политика загрузки образа
    pullPolicy: IfNotPresent
    # -- Реестр образов контейнеров
    repository: registry.appsec.global
    # -- Тег версии образа
    tag: 3.13-management-alpine
  auth:
    username: user
    password: ""
  podLabels: {}
    # Порты для Service
  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: false
    # -- Указание storageClassName для тома сервиса
    storageClassName:
    # -- Указание размера тома для хранения данных сервиса
    storage: 10Gi
    # -- Указание параметров доступа к тому с данными сервиса
    accessModes:
      - ReadWriteOnce

hubpipeline:
  enable: false
  # -- Имя контейнера hub-pipeline
  fullname: hub-pipeline
  image:
    # -- Путь к репозиторию образа hub-pipeline
    name: appsechub/hub-pipeline
    # -- Реестр образов контейнеров
    repository: registry.appsec.global
    # -- Тег версии образа
    tag: 2025.4.2
    # -- Политика загрузки образа
    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: {}

hubdefectsync:
  enable: true
  # -- Имя контейнера hub-defectsync
  fullname: defect-sync
  image:
    # -- Путь к репозиторию образа hub-defectsync
    name: appsechub/hub-defect-sync
    # -- Реестр образов контейнеров
    repository: registry.appsec.global
    # -- Тег версии образа
    tag: 2025.4.2
    # -- Политика загрузки образа
    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: {}

hubscheduler:
  enable: true
  # -- Имя контейнера hub-scheduler
  fullname: hub-scheduler
  image:
    # -- Путь к репозиторию образа hub-scheduler
    name: appsechub/hub-scheduler
    # -- Реестр образов контейнеров
    repository: registry.appsec.global
    # -- Тег версии образа
    tag: 2025.4.2
    # -- Политика загрузки образа
    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: {}


pvc:
  # -- Создать постоянный том для хранения
  enable: false
  # @ignored
  pvc: {}
#    - name: {{ k8s_namespace }}-hubair-logs-pvc"
#      storageClassName: yc-network-ssd
#      storageSize: 10Gi

configMaps:
  # -- Включить дополнительный configMap
  enable: false
deployments:
  # -- Включить дополнительный deployment
  enable: false


superset:
  enabled: true
  nameOverride: ~
  # -- Provide a name to override the full names of resources
  fullnameOverride: hub-superset

  # -- User ID directive. This user must have enough permissions to run the bootstrap script
  # Running containers as root is not recommended in production. Change this to another UID - e.g. 1000 to be more secure
  runAsUser: 1000

  # -- Specify rather or not helm should create the secret described in `secret-env.yaml` template
  secretEnv:
    # -- Change to false in order to support externally created secret (Binami "Sealed Secrets" for Kubernetes or External Secrets Operator)
    # note: when externally creating the secret, the chart still expects to pull values from a secret with the name of the release defaults to `release-name-superset-env` - full logic located in _helpers.tpl file: `define "superset.fullname"`
    create: true

  # -- Specify service account name to be used
  serviceAccountName: ~
  serviceAccount:
    # -- Create custom service account for Superset. If create: true and serviceAccountName is not provided, `superset.fullname` will be used.
    create: false
    annotations: {}

  bootstrapScript: |
    #!/bin/bash
    if [ ! -f ~/bootstrap ]; then echo "Running Superset with uid {{ .Values.runAsUser }}" > ~/bootstrap; fi


  configFromSecret: '{{ template "superset.fullname" . }}-config'


  envFromSecret: '{{ template "superset.fullname" . }}-env'
  # -- This can be a list of templated strings
  envFromSecrets: []

  # -- Extra environment variables that will be passed into pods
  extraEnv: {}
    # Different gunicorn settings, refer to the gunicorn documentation
    # https://docs.gunicorn.org/en/stable/settings.html#
    # These variables are used as Flags at the gunicorn startup
    # https://github.com/apache/superset/blob/master/docker/run-server.sh#L22
    # Extend timeout to allow long running queries.
    # GUNICORN_TIMEOUT: 300
    # Increase the gunicorn worker amount, can improve performance drastically
    # See: https://docs.gunicorn.org/en/stable/design.html#how-many-workers
    # SERVER_WORKER_AMOUNT: 4
    # WORKER_MAX_REQUESTS: 0
    # WORKER_MAX_REQUESTS_JITTER: 0
    # SERVER_THREADS_AMOUNT: 20
    # GUNICORN_KEEPALIVE: 2
    # SERVER_LIMIT_REQUEST_LINE: 0
    # SERVER_LIMIT_REQUEST_FIELD_SIZE: 0

    # OAUTH_HOME_DOMAIN: ..
    # # If a whitelist is not set, any address that can use your OAuth2 endpoint will be able to login.
    # #   this includes any random Gmail address if your OAuth2 Web App is set to External.
    # OAUTH_WHITELIST_REGEX: ...

  # -- Extra environment variables in RAW format that will be passed into pods
  extraEnvRaw: []
    # Load DB password from other secret (e.g. for zalando operator)
    # - name: DB_PASS
    #   valueFrom:
    #     secretKeyRef:
    #       name: superset.superset-postgres.credentials.postgresql.acid.zalan.do
    #       key: password

  # -- Extra environment variables to pass as secrets
  extraSecretEnv: {}
    # MAPBOX_API_KEY: ...
    # # Google API Keys: https://console.cloud.google.com/apis/credentials
    # GOOGLE_KEY: ...
    # GOOGLE_SECRET: ...
    #   # Generate your own secret key for encryption. Use openssl rand -base64 42 to generate a good key
    #  SUPERSET_SECRET_KEY: 'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'

  # -- Extra files to mount on `/app/pythonpath`
  extraConfigs: {}
    # import_datasources.yaml: |
    #     databases:
    #     - allow_file_upload: true
    #       allow_ctas: true
    #       allow_cvas: true
    #       database_name: example-db
    #       extra: "{\r\n    \"metadata_params\": {},\r\n    \"engine_params\": {},\r\n    \"\
    #         metadata_cache_timeout\": {},\r\n    \"schemas_allowed_for_file_upload\": []\r\n\
    #         }"
    #       sqlalchemy_uri: example://example-db.local
    #       tables: []

  # -- Extra files to mount on `/app/pythonpath` as secrets
  extraSecrets: {}

  extraVolumes: []
    # - name: customConfig
    #   configMap:
    #     name: '{{ template "superset.fullname" . }}-custom-config'
    # - name: additionalSecret
    #   secret:
    #     secretName: my-secret
    #     defaultMode: 0600

  extraVolumeMounts: []
    # - name: customConfig
    #   mountPath: /mnt/config
    #   readOnly: true
    # - name: additionalSecret:
    #   mountPath: /mnt/secret

  configOverrides:
      FEATURE_FLAGS: |
          FEATURE_FLAGS = {"ALERT_REPORTS": True, "DASHBOARD_CROSS_FILTERS": True, "ENABLE_TEMPLATE_PROCESSING": True, "DASHBOARD_RBAC": True, "GENERIC_CHART_AXES": True, "EMBEDDED_SUPERSET": True }
          HTTP_HEADERS = {'X-Frame-Options': 'ALLOWALL'}
          GUEST_ROLE_NAME = "Gamma"
          GUEST_TOKEN_JWT_EXP_SECONDS = 600
          ENABLE_PROXY_FIX = True
          ENABLE_CORS = True
          CORS_OPTIONS = {
              'supports_credentials': True,
              'allow_headers': [
                  'X-CSRFToken', 'Content-Type', 'Origin', 'X-Requested-With', 'Accept', 'Access-Control-Allow-Origin', '*',
              ],
              'resources': [
                   '*',
                   '/superset/csrf_token/' , # auth
                   '/api/v1/formData/',  # sliceId => formData
                   '/superset/explore_json/*',  # legacy query API, formData => queryData
                   '/api/v1/query/',  # new query API, queryContext => queryData
                   '/superset/fetch_datasource_metadata/'  # datasource metadata
              ],
              'origins': ['http://localhost:9001','*'],
          }
          SESSION_COOKIE_SAMESITE = "None"
          SESSION_COOKIE_SECURE = True
          WTF_CSRF_ENABLED = False
          LANGUAGES = {
              "ru": {"flag": "ru", "name": "Русский"},
              "en": {"flag": "us", "name": "English"}
          }
          BABEL_DEFAULT_LOCALE = "ru"
          CACHE_DEFAULT_TIMEOUT = 1000
          SUPERSET_WEBSERVER_TIMEOUT = 300
    # secret: |
    #   # Generate your own secret key for encryption. Use `openssl rand -base64 42` to generate a good key
    #   SECRET_KEY = 'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'

  # -- Same as above but the values are files
  configOverridesFiles: {}
    # extend_timeout: extend_timeout.py
    # enable_oauth: enable_oauth.py

  configMountPath: "/app/pythonpath"

  extraConfigMountPath: "/app/configs"

  image:
    repository: registry.appsec.global/appsechub/hub-metrics
    tag: 2025.4.2
    pullPolicy: IfNotPresent

  imagePullSecrets: []

  initImage:
    repository: registry.appsec.global/public/hub-metrics
    tag: dockerize
    pullPolicy: IfNotPresent

  ingress:
    enabled: false
    ingressClassName: ~
    annotations: {}
      # kubernetes.io/tls-acme: "true"
      ## Extend timeout to allow long running queries.
      # nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"
      # nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
      # nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
    path: /
    pathType: ImplementationSpecific
    hosts:
      - chart-example.local
    tls: []
    extraHostsRaw: []
    #  - secretName: chart-example-tls
    #    hosts:
    #      - chart-example.local

  resources: {}
    # limits:
    #   cpu: 100m
    #   memory: 128Mi
    # requests:
    #   cpu: 100m
    #   memory: 128Mi

  # -- Custom hostAliases for all superset pods
  ## https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/
  hostAliases: []
  # - hostnames:
  #   - nodns.my.lan
  #   ip: 18.27.36.45

  # Superset node configuration
  supersetNode:
    replicaCount: 1
    autoscaling:
      enabled: false
      minReplicas: 1
      maxReplicas: 100
      targetCPUUtilizationPercentage: 80
      # targetMemoryUtilizationPercentage: 80
    # -- Sets the [pod disruption budget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) for supersetNode pods
    podDisruptionBudget:
      # -- Whether the pod disruption budget should be created
      enabled: false
      # -- If set, maxUnavailable must not be set - see https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget
      minAvailable: 1
      # -- If set, minAvailable must not be set - see https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget
      maxUnavailable: 1
    # -- Startup command
    # @default -- See `values.yaml`
    command:
      - "/bin/sh"
      - "-c"
      - ". {{ .Values.configMountPath }}/superset_bootstrap.sh; /usr/bin/run-server.sh"
    connections:
      # You need to change below configuration incase bringing own PostgresSQL instance and also set postgresql.enabled:false
      db_host: hub-postgresql
      db_port: "5432"
      db_user: metrics
      db_pass: 
      db_name: metrics
    env: {}
    # -- If true, forces deployment to reload on each upgrade
    forceReload: false
    # -- Init containers
    # @default -- a container waiting for postgres
    initContainers:
      - name: wait-for-postgres
        image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}"
        imagePullPolicy: "{{ .Values.initImage.pullPolicy }}"
        envFrom:
          - secretRef:
              name: "{{ tpl .Values.envFromSecret . }}"
        command:
          - /bin/sh
          - -c
          - dockerize -wait "tcp://hub-core:50051" -timeout 600s

    # -- Launch additional containers into supersetNode pod
    extraContainers: []
    # -- Annotations to be added to supersetNode deployment
    deploymentAnnotations: {}
    # -- Labels to be added to supersetNode deployment
    deploymentLabels: {}
    # -- Affinity to be added to supersetNode deployment
    affinity: {}
    # -- TopologySpreadConstrains to be added to supersetNode deployments
    topologySpreadConstraints: []
    # -- Annotations to be added to supersetNode pods
    podAnnotations: {}
    # -- Labels to be added to supersetNode pods
    podLabels: {}
    startupProbe:
      httpGet:
        path: /health
        port: http
      initialDelaySeconds: 15
      timeoutSeconds: 1
      failureThreshold: 60
      periodSeconds: 5
      successThreshold: 1
    livenessProbe:
      httpGet:
        path: /health
        port: http
      initialDelaySeconds: 15
      timeoutSeconds: 1
      failureThreshold: 3
      periodSeconds: 15
      successThreshold: 1
    readinessProbe:
      httpGet:
        path: /health
        port: http
      initialDelaySeconds: 15
      timeoutSeconds: 1
      failureThreshold: 3
      periodSeconds: 15
      successThreshold: 1
    # -- Resource settings for the supersetNode pods - these settings overwrite might existing values from the global resources object defined above.
    resources: {}
      # limits:
      #  cpu: 100m
      #  memory: 128Mi
      # requests:
      #  cpu: 100m
      #  memory: 128Mi
    podSecurityContext: {}
    containerSecurityContext: {}
    strategy: {}
      # type: RollingUpdate
      # rollingUpdate:
      #   maxSurge: 25%
      #   maxUnavailable: 25%

  init:
    resources: {}
    #  limits:
    #    cpu: 200m
    #    memory: 1Gi
    #  requests:
    #    cpu: 100m
    #    memory: 256Mi
    command:
      - "/bin/sh"
      - "-c"
      - ". {{ .Values.configMountPath }}/superset_init.sh"
    enabled: true
    # автоматически удаляет Job (и все его поды) через заданное время после завершения
    # Рекомендуется установить значение (например, 600 секунд = 10 минут)
    # Это удалит как успешные, так и неуспешные Job вместе со всеми подами
    # ttlSecondsAfterFinished: 600
    # Ограничивает количество попыток перезапуска подов при ошибках (опционально)
    # Если не указано, используется значение по умолчанию Kubernetes (6 попыток)
    backoffLimit: 2
    # Максимальное время выполнения Job в секундах (опционально)
    # activeDeadlineSeconds: 3600
    jobAnnotations:
      "helm.sh/hook": post-install,post-upgrade
      "helm.sh/hook-delete-policy": "before-hook-creation"
    loadExamples: false
    createAdmin: true
    adminUser:
      username: admin
      firstname: Superset
      lastname: Admin
      email: admin@superset.com
      password: admin
    initContainers:
      - name: wait-for-postgres
        image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}"
        imagePullPolicy: "{{ .Values.initImage.pullPolicy }}"
        envFrom:
          - secretRef:
              name: "{{ tpl .Values.envFromSecret . }}"
        command:
          - /bin/sh
          - -c
          - dockerize -wait "tcp://hub-core:50051" -timeout 600s
    initscript: |-
      #!/bin/sh
      set -eu
      echo "Upgrading DB schema..."
      superset db upgrade
      echo "Initializing roles..."
      superset init
      {{ if .Values.init.createAdmin }}
      echo "Creating admin user..."
      superset fab create-admin \
                      --username {{ .Values.init.adminUser.username }} \
                      --firstname {{ .Values.init.adminUser.firstname }} \
                      --lastname {{ .Values.init.adminUser.lastname }} \
                      --email {{ .Values.init.adminUser.email }} \
                      --password {{ .Values.init.adminUser.password }} \
                      || true
      {{- end }}
      {{ if .Values.init.loadExamples }}
      echo "Loading examples..."
      superset load_examples
      {{- end }}
      if [ -f "{{ .Values.extraConfigMountPath }}/import_datasources.yaml" ]; then
        echo "Importing database connections.... "
        superset import_datasources -p {{ .Values.extraConfigMountPath }}/import_datasources.yaml
      fi
    # -- Launch additional containers into init job pod
    extraContainers: []
    ## Annotations to be added to init job pods
    podAnnotations: {}
    podSecurityContext: {}
    containerSecurityContext: {}
    ## Tolerations to be added to init job pods
    tolerations: []
    ## Affinity to be added to init job pods
    affinity: {}
    # -- TopologySpreadConstrains to be added to init job
    topologySpreadConstraints: []

  # -- Configuration values for the postgresql dependency.
  # ref: https://github.com/bitnami/charts/tree/main/bitnami/postgresql
  # @default -- see `values.yaml`
  postgresql:
    ## Use the PostgreSQL chart dependency.
    ## Set to false if bringing your own PostgreSQL.
    fullnameOverride: hub-postgresql
    nameOverride: hub-postgresql
    enabled: true
    ## Authentication parameters
    auth:
      ## The name of an existing secret that contains the postgres password.
      existingSecret:
      ## PostgreSQL name for a custom user to create
      username: metrics
      ## PostgreSQL password for the custom user to create. Ignored if `auth.existingSecret` with key `password` is provided
      password:
      ## PostgreSQL name for a custom database to create
      database: metrics
    imagePullSecrets:
      - name: regcred
    image:
      registry: registry.appsec.global
      repository: public/sfs-postgresql
      tag: 13.2.2-alpine
      pullPolicy: IfNotPresent
    ## PostgreSQL Primary parameters
    primary:
      podSecurityContext:
        runAsUser: 70
        fsGroup: 70
      containerSecurityContext:
        runAsUser: 70
        allowPrivilegeEscalation: false
      resources: {}
      #  limits:
      #    cpu: 500m
      #    memory: 1Gi
      #  requests:
      #    memory: 256Mi
      #    cpu: 250m
      persistence:
        ##
        ## Enable PostgreSQL persistence using Persistent Volume Claims.
        enabled: true
        ##
        # -- Указать storageClassName
        storageClass: classname
        ##
        size: 8Gi
        ## Access modes:
        accessModes:
          - ReadWriteOnce
      ## PostgreSQL port
      service:
        ports:
          postgresql: "5432"


  nodeSelector: {}

  tolerations: []

  affinity: {}

  # -- TopologySpreadConstrains to be added to all deployments
  topologySpreadConstraints: []

  hubmetricsbridge:
    enable: true
    fullname: hub-metrics-bridge
    image:
      name: appsechub/hub-metrics-bridge
      repository: registry.appsec.global
      tag: 2025.4.2
      pullPolicy: Always
    env:
      #Europe/Moscow
      timezone: Europe/Moscow
    annotations: {}
    initContainers:
      - name: wait-for-postgres-redis
        image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}"
        imagePullPolicy: IfNotPresent
        envFrom:
          - secretRef:
              name: "{{ tpl .Values.envFromSecret . }}"
        command:
          - /bin/sh
          - -c
          - dockerize -wait "tcp://hub-core:50051" -timeout 600s
    resources: {}
    #  limits:
    #    cpu: 500m
    #    memory: 512Mi
    #  requests:
    #    cpu: 100m
    #    memory: 256Mi
    PG_USER: metrics
    PGPASSWORD: 
    PG_URL: hub-postgresql
    SCHEDULER_DB_PASSWORD:
    METRICS_DB_PASSWORD:
    REMOTE_HOST_DB: postgresql
    REMOTE_PORT_DB: 5432
    REMOTE_DB: hubdb
    REMOTE_USER_DB: hubadm
    REMOTE_PASSWORD_DB: 
    METRICS_HOST: http://hub-superset
    METRICS_PORT: 8088
    METRICS_USERNAME: admin
    METRICS_PASSWORD: admin
    METRICS_DATABASE_URL: "postgresql+psycopg2://metrics_user:%s@hub-postgresql:5432/metrics_data"
    CHRON: "0 0 * * * *"
    nodeSelector: {}
К началу