## Создание секрета для 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: {}