## Создание секрета для 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.3.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: tt56dFsyVx
# -- Пароль пользователя AppSec.Hub с правами администратора
hubadmPassword: p3VEthvxKr435
# -- Пароль пользователя
hubappPassword: o7R667rx21
# -- Пароль пользователя для сервиса аутентификации
hubauthPassword: oxgfFsxcr
# -- Пароль пользователя с правами работы с AppSec.Hub DWH
hubbiPassword: o7R667rx21
#
image:
# -- Путь к репозиторию образа
name: appsechub/hub-db
# -- Политика загрузки образа
pullPolicy: Always
# -- Реестр образов контейнеров
repository: registry.appsec.global
# -- Тег версии образа
tag: 2025.3.2
# -- Количество реплик компонента
replicas: 1
# -- Режим восстановления hub-db
repair_db_enable: disable
# -- Режим восстановления hub-dw
repair_dw_enable: disable
resources:
requests:
memory: "128Mi"
cpu: "50m"
limits:
memory: "128Mi"
cpu: "100m"
# При использовании 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: o7R667rx21
db_presentation_driver: org.postgresql.Driver
db_presentation_url: "jdbc:postgresql://${PG_URL}:${PG_PORT}/${HUBDBNAME}"
db_presentation_schema: presentation
db_presentation_username: hubapp
db_presentation_password:
## Ключ шифрования паролей, используемых для доступа к инструментам ИБ. Размер ключа — 24 символа
## Для генерации ключа можно использовать следующую команду
## dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2-25 | rev
encrypt_key: qwr7erVIAspcln6pRbZKQYcE
## Внешний URL экземпляра AppSec.Hub
hub_app_url: https://appsec-hub.example.com
# URL-адрес сервиса consul с http/https
hub_consul_host: "http://consul-expose-servers:8500"
# токен для доступа к сервису consul
hub_consul_token: 7d2Vd31mEymuX
# Порт gRPC
hub_grpc_port: 50051
# URL сервиса hub-core
hub_service_url: http://hub-core
# Включение сбора метрик сервиса hub-core
management_metrics_enable_all: true
# Путь конфигурационных файлов ZAP
hub_scan_config_file_path: "/opt/zapfiles"
auth_properties:
# Класс драйвера для БД
db_auth_driver: org.postgresql.Driver
#
db_auth_schema: auth
# Имя пользователя для сервиса аутентификации AppSec.Hub
db_auth_username: hubauth
## Пароль пользователя для сервиса аутентификации AppSec.Hub
db_auth_password: oxgfFsxcr
## Размер пула соединений для сервиса аутентификации AppSec.Hub
# db_auth_poolSize: 10
## Срок действия токена
# jwt_token_expiration_time: 60
## Эмитент токена
# jwt_token_issuer: AppSecHub
## Установить значение значение полученное в результате выполнения следующей команды
## полученное в результате выполнения следующей команды
## dd if=/dev/urandom bs=1 count=64 2>/dev/null | base64 -w 0 | rev | cut -b 3- | rev
jwt_token_signing_key: rKYno2eSNKM3mduCFv2NCpYDdoWz0HAs0Q9DhyAxEX/WEvHoYuoB2fjxRiibhwt4/0CVHRGVSvT5yHgRb8tPLQWpIm4xIFfAUmm4Iedc+8gKISHyVPp7Hi4iKYm+QMQkz8Zj9jVUyQpOH4Z2f0LqP/WtvjQenb6rI3dDfpR/xUVA=
## Время обновления токена
# jwt_token_refresh_expiration_time: 60
metrics_username: admin
metrics_password: gxuts4hg393779
product_properties:
## Имя продукта
report_product_name: AppSec.Hub
## Путь к файлу логотипа
# report_logo_path: /usr/local/tomcat/webapps/hub/WEB-INF/classes/resources/logo.svg
## Путь к файлу логотипа в формате png
# report_logo_path_png: /usr/local/tomcat/webapps/hub/WEB-INF/classes/resources/logo.png
## Путь к файлу темплейта pdf
# report_issue_pdf_template: /usr/local/tomcat/webapps/hub/WEB-INF/classes/resources/issue-report-pdf-template.xsl
env:
# -- Указание TimeZone Europe/Moscow
timezone: Europe/Moscow
# -- Уровень логгирования: INFO, DEBUG
HUB_LOG_LEVEL: info
# Передача параметров [app|auth|product].properties через переменные среды
# @default -- Смотреть _values.yaml_
JAVA_OPTS:
# "-Dserver.servlet.session.timeout=1m"
# -- Дополнительные лейблы для pods hub-core
podLabels: {}
# -- Имя контейнера hub-core
fullname: hub-core
image:
# -- Путь к репозиторию образа hub-core
name: appsechub/hub-core
# -- Политика загрузки образа
pullPolicy: Always
# -- Реестр образов контейнеров
repository: registry.appsec.global
# -- Тег версии образа
tag: 2025.3.2
# -- Количество реплик компонента (не менять)
replicas: 1
# -- Аннотации для пода hub-core
# Appsec.Hub не работатет с автоскейлингом
# annotations:
# cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
# -- nodeSelector для компонента hub-core
nodeSelector: {}
# label: value
# -- Стратегия развертывания новых pod's
strategy:
type: Recreate
# -- Установка лимитов для контейнера hub-core
# resources:
# requests:
# memory: "4096Mi"
# cpu: "200m"
# limits:
# memory: "8192Mi"
# cpu: "4000m"
service:
# -- При использовании service.type=LoadBalancer необходимо поставить true
# и указать статический ip адрес
enableIp: null
# -- Политика Service
externalTrafficPolicy: Local
# -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
ip: null
# -- Тип Service, LoadBalancer или ClusterIP
type: ClusterIP
# -- Аннотации к объекту Service
annotations: {}
# Порты для Service
ports:
- name: core
port: 8080
targetPort: 8080
protocol: TCP
- name: grpc
port: 50051
targetPort: 50051
protocol: TCP
# PVC hub-core
pvc:
# -- Создать постоянный том для хранения hub-core, данныхпри использовании zap необходимо включить
enable: true
storageClassName: yc-network-hdd
# -- Указание размера тома для хранения данных сервиса
storage: 5Gi
# -- Указание параметров доступа к тому с данными сервиса
accessModes:
- ReadWriteOnce
# -- Монтирование томов в контейнер
extraVolumemounts: {}
# - name: cacerts
# mountPath: /usr/lib/jvm/java-11-amazon-corretto/lib/security
# -- Указание дополнительного томов контейнера
extraVolumes: {}
# - name: ssl-root-ca
# secret:
# secretName: ssl-root-ca
# - name: cacerts
# emptyDir: {}
# -- Дополнительный контейнер
containers: {}
# - name: fluentd
# image: registry.appsec.global/public/fluentd-v1.12.1:latest
# #env:
# -- Дополнительный initcontainer
initcontainers: {}
# - name: update-ssl
# image: "{{ .Values.hubcore.image.repository }}/{{ .Values.hubcore.image.name }}:{{ .Values.hubcore.image.tag }}"
# command: ["/bin/sh", "-c"]
# args: ["cp -R /usr/lib/jvm/java-11-amazon-corretto/lib/security/* /cacerts/ &&
# keytool -import -noprompt -trustcacerts -alias local -file /tmp/certs/ssl-rootca.crt -keystore /cacerts/cacerts -storepass changeit &&
# keytool -list -keystore /cacerts/cacerts -alias local"]
# extraVolumeMounts:
# - name: ssl-root-ca
# mountPath: /tmp/certs/ssl-rootca.crt
# subPath: ssl-rootca.crt
# readOnly: false
# - name: cacerts
# mountPath: /cacerts
runAsUser: "2000"
hubui:
# -- Имя контейнера hub-ui
fullname: hub-ui
selectedNginxConf: "default" # Возможные значения: "default" - метрики выключены , "metrics" - метрики включены
# -- Переопределение конфига nginx. По умолчанию используется конфиг из файла conf/nginx_default.conf.tpl.
customNginxConfs: ""
# customNginxConfs: |-
# server {
# listen 0.0.0.0:8080;
# root /app;
# location / {
# index index.html index.php;
# }
# location ~ \.php$ {
# fastcgi_pass phpfpm-server:9000;
# fastcgi_index index.php;
# include fastcgi.conf;
# }
# }
# -- Дополнительные переменные окружения для Service Hub UI
env:
# -- Указание TimeZone Europe/Moscow
timezone: Europe/Moscow
# -- Дополнительные лейблы для pods hub-ui
podLabels: {}
image:
# -- Путь к репозиторию образа hub-ui
name: appsechub/hub-ui
# -- Политика загрузки образа
pullPolicy: Always
# -- Реестр образов контейнеров
repository: registry.appsec.global
# -- Тег версии образа
tag: 2025.3.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: 19.03.3-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: true
# -- Имя контейнера hub-engine-manager
fullname: hub-engine-manager
# -- Имя пользователя администратора
admin_username: admin
# -- Пароль администратора, необходимо поменять
admin_password:
# - Url адрес hub-engine-manager, необходимо поменять
base_url: hub-engine-manager.example.com
image:
# -- Путь к репозиторию образа
name: appsechub/hub-engine-manager
# -- Политика загрузки образа
pullPolicy: Always
# -- Реестр образов контейнеров
repository: registry.appsec.global
# -- Тег версии образа
tag: 2025.3.2
# -- Количество реплик компонента
replicas: 1
service:
# -- При использовании service.type=LoadBalancer необходимо поставить true
# -- и указать статический ip адрес
enableIp: null
# -- Политика Service
externalTrafficPolicy: Local
# -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
ip: null
# -- Порт для Service
port: 8080
# -- Порт на который нацелен Service
targetPort: 8080
# -- Имя порта на который нацелен Service
portName: port8080
# -- Тип Service, LoadBalancer или ClusterIP
type: ClusterIP
# -- Аннотации к объекту Service
annotations: {}
#resources:
# requests:
# memory: "128Mi"
# cpu: "50m"
# limits:
# memory: "4096Mi"
# cpu: "500m"
# PVC hub-engine-manager
pvc:
# -- Создать постоянный том для хранения данных сервиса hub-engine-manager (true/false)
enable: true
# -- Указание storageClassName для тома сервиса
storageClassName: yc-network-hdd
# -- Указание размера тома для хранения данных сервиса
storage: 10Gi
# -- Указание параметров доступа к тому с данными сервиса
accessModes:
- ReadWriteOnce
# -- nodeSelector для компонента hub-engine-manager
# nodeSelector:
# label: value
# -- Стратегия развертывания новых pod's
strategy: {}
env:
# hub-engine-manager -- Указание TimeZone Europe/Moscow
timezone: Europe/Moscow
# -- Дополнительные лейблы для pods hub-engine-manager
podLabels: {}
# -- Монтирование дополнительных томов в контейнер
extraVolumemounts: {}
# - name: ssl-root-ca
# mountPath: /tmp/certs/ssl-rootca.crt
# subPath: ssl-rootca.crt
# - name: varlog
# mountPath: /path/logs
# -- Указание дополнительных томов контейнера
extraVolumes: {}
# - name: ssl-root-ca
# secret:
# secretName: ssl-root-ca
# - name: varlog
# emptyDir: {}
# - name: config-volume
# secret:
# secretName: fluentd-config-avc
# Дополнительные переменные, при необходимости добавить свои
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: true
# для подключения ноды к hub-engine-manager - указать публичный ssh ключ
# например так:
# helm upgrade --install \
# --set-file hubEngine.authorized_keys=./id_rsa.pub \
# hub sfs/appsechub -f values.yaml
# -- Приватный ключ создается в секретах через web интерфейс hub-engine-manager (см. документацию)
authorized_keys:
env:
LOG_CONSOLE: "1"
SCHEDULER_INTERVAL_HOURS: "30"
ARCHIVE_LIFETIME_DAYS: "30"
LOG_FILE: "0"
LOGS_LIFETIME_DAYS: "10"
LOG_BASE_PATH:
AUTH_USE: "0"
AUTH_EXPIRED: "365"
AUTH_SECRET_KEY:
AUTH_SCHEME:
MODEL_USE_ENCRYPTION: "0"
MODEL_SECRET_KEY:
MODEL_DEFAULT_PRACTICE:
MODEL_LOWER_LIMIT: "0.8"
MODEL_MIN_FREE_DISK_SPACE: "100"
LOG_LEVEL: INFO
ENCRYPTION_KEY: ""
PIPELINE_SERVICE_NAME: grpc-pipeline-50053
SCANS_FOLDER: /app/scans_folder
ARCHIVE_FOLDER: /app/archive_folder
RABBITMQ_EXCHANGE: ""
RABBITMQ_ROUTING_KEY: super
nodes:
# -- Имя контейнера hub-engine
- fullname: hub-engine
image:
name: appsechub/hub-engine
pullPolicy: Always
repository: registry.appsec.global
tag: 2025.3.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
# -- Создание 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: nginx-internal
# Создать Ingress для AppSec.Hub (true/false)
enabled: true
# Ingress hosts AppSec.Hub
hosts:
# Указать домен AppSec.Hub
- host: appsec-hub.example.com
paths:
- path: /
pathType: Prefix
backend:
service:
name: hub-ui
port:
number: 80
# Ingress TLS AppSec.Hub
tls:
- hosts:
# Указать домен AppSec.Hub
- appsec-hub.example.com
# -- При `ingress.hub.ssl.enable: true` не менять значение, при использовании существующих секретов - поменять имя секрета на актуальное
secretName: secret-tls-hub
# Для создания секрета при старте `create: true`
# Указать сертификат и ключ ssl
# Создать секрет с SSL сертификатами (true/false)
create: false
# Сертфикат, закодированный в Base64
crt:
# Сертфикат, закодированный в Base64
key:
ssl:
# Использовать SSL (true/false)
enable: false
# Для запуска БД в k8s поставить `enable: true`
# вне зависимости от использования или нет, образ используется для проверки доступности БД, то есть данные должны быть актуальны
postgresql:
# -- Установить PostgreSQL (true/false)
enable: true
# -- Имя контейнера
fullname: postgresql
image:
# -- Путь к репозиторию образа
name: public/sfs-postgresql
# -- Политика загрузки образа
pullPolicy: IfNotPresent
# -- Реестр образов контейнеров
repository: registry.appsec.global
# -- Тег версии образа
tag: 13.2.2-alpine
# -- Количество реплик компонента
replicas: 1
# -- Дополнительные лейблы для Pods postgresql
podLabels: {}
service:
# -- При использовании service.type=LoadBalancer необходимо поставить true
# -- и указать статический ip адрес
enableIp: null
# -- Политика Service
externalTrafficPolicy: Local
# -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
ip: null
# -- Порт для Service
port: 5432
# -- Порт на который нацелен Service
targetPort: 5432
# -- Тип Service, LoadBalancer или ClusterIP
type: ClusterIP
# -- Аннотации к объекту Service
annotations: {}
# -- NodeSelector для компонента PostgreSQL
nodeSelector: {}
#label: value
# -- Стратегия развертывания новых pod's
strategy:
type: Recreate
# -- Установка лимитов для контейнера PostgreSQL
# resources:
# requests:
# memory: "128Mi"
# cpu: "30m"
# limits:
# memory: "4096Mi"
# cpu: "4000m"
# PVC PostgreSQL
pvc:
# -- Создать постоянный том для хранения PostgreSQL
enable: true
# -- Указание storageClassName для тома сервиса
storageClassName: yc-network-hdd
# -- Указание размера тома для хранения данных сервиса
storage: 10Gi
# -- Указание параметров доступа к тому с данными сервиса
accessModes:
- ReadWriteOnce
consul:
# -- Установить consul (true/false)
enabled: true
# -- Имя контейнера
fullnameOverride: consul
hubConnect:
# -- Доменное имя consul (http/https)
consulHost: "http://consul-expose-servers"
# -- Порт для consul, default 8500
consulPort: "8500"
# -- Токен consul для подключения
consulToken: "7d2Vd31mEymuX"
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:
#
imagePullSecrets:
- name: regcred
# - 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:
enabled: true
ingressClassName: nginx-internal
pathType: Prefix
hosts:
- host: consul-external
paths:
- /
tls: [ ]
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.3.2
# -- Политика загрузки образа
pullPolicy: Always
# -- Стратегия развертывания новых pod's
strategy:
type: Recreate
# -- Аннотации к объекту hub-issue-rule
annotations: {}
# Установка лимитов для контейнера
resources:
requests:
memory: "1024Mi"
cpu: "200m"
limits:
memory: "8192Mi"
cpu: "4000m"
service:
# -- Тип Service, LoadBalancer или ClusterIP
type: ClusterIP
# -- Политика Service
externalTrafficPolicy: local
# -- При использовании service.type=LoadBalancer необходимо поставить true
# и указать статический ip адрес
enableIp: false
# -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
ip: null
# -- Аннотации к объекту Service
annotations: {}
# -- nodeSelector для компонента hub-issue-rule
nodeSelector: {}
#label: value
env:
# -- Логирование с временными метками
executionLogEnabled: "false"
executionLogMinDurationMsToLog: "1000"
# -- Размер пула соединений с базой данных
dbPoolSize: "10"
# -- Указание TimeZone Europe/Moscow
timezone: Europe/Moscow
# -- Дополнительные лейблы для Pods hub-issue-rule
podLabels: {}
hubissue:
# -- Имя контейнера hub-issue
fullname: hub-issue
image:
# -- Путь к репозиторию образа hub-issue
name: appsechub/hub-issue
# -- Реестр образов контейнеров
repository: registry.appsec.global
# -- Тег версии образа
tag: 2025.3.2
# -- Политика загрузки образа
pullPolicy: Always
# -- Стратегия развертывания новых pod's
strategy:
type: Recreate
# -- Аннотации к объекту hub-issue
annotations: {}
# Установка лимитов для контейнера
resources:
requests:
memory: "1024Mi"
cpu: "200m"
limits:
memory: "8192Mi"
cpu: "4000m"
service:
# -- При использовании service.type=LoadBalancer необходимо поставить true
# и указать статический ip адрес
enableIp: false
# -- Политика Service
externalTrafficPolicy: local
# -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
ip: null
# -- Тип Service, LoadBalancer или ClusterIP
type: ClusterIP
# -- Аннотации к объекту Service
annotations: {}
# -- nodeSelector для компонента hub-issue
nodeSelector: {}
#label: value
env:
# -- Логирование с временными метками
executionLogEnabled: "false"
executionLogMinDurationMsToLog: "1000"
# -- Размер пула соединений с базой данных
dbPoolSize: "10"
# -- Указание TimeZone Europe/Moscow
timezone: Europe/Moscow
# -- Дополнительные лейблы для Pods hub-issue
podLabels: {}
gateway:
# -- Имя контейнера hub-gateway
fullname: hub-gateway
## -- Стратегия развертывания новых pod's
strategy:
type: Recreate
image:
# -- Путь к репозиторию образа
name: appsechub/hub-gateway
# -- Политика загрузки образа
pullPolicy: Always
# -- Реестр образов контейнеров
repository: registry.appsec.global
# -- Тег версии образа
tag: 2025.3.2
# -- Количество реплик компонента (не менять)
replicas: 1
env:
# -- Указание TimeZone Europe/Moscow
timezone:
# -- Ключ подписи jwt-токена для сервиса hub-gateway
# Для генерации токена можно использовать следующую команду
# dd if=/dev/urandom bs=1 count=64 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
jwtToken: ttBaLs8aIv0t8vSQ12209hVMftI6PVIRFsJsn2HX6h3gIv9vgoK2ZWIKxiB499qvOQITfpkVuXarxBC++3Rahg=
# -- Дополнительные лейблы для Pods hub-gateway
podLabels: {}
service:
# -- Тип Service, LoadBalancer или ClusterIP
type: ClusterIP
# -- Политика Service
externalTrafficPolicy: Local
# -- При использовании service.type=LoadBalancer необходимо поставить true
# и указать статический ip адрес
enableIp: null
# -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
ip: null
# -- Порт для Service
port: 8080
## -- Порт контейнера, на который ссылается Service
targetPort: 8080
####
# -- Аннотации к объекту Service hub-gateway
# Пример:
#annotations: {
# yandex.cloud/load-balancer-type: Internal,
# yandex.cloud/subnet-id: <id-subnet>
#}
annotations: null
## -- Аннотации для пода hub-gateway
## Appsec.Hub не работатет с автоскейлингом
#annotations:
# cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
annotations: null
###
# -- Установка лимитов для контейнера
#resources:
# requests:
# memory: "4096Mi"
# cpu: "200m"
# limits:
# memory: "8192Mi"
# cpu: "4000m"
###
# --NodeSelector для компонента hub-gateway deployment
nodeSelector: {}
# label: value
hubsso:
# -- Запуск hub-sso сервиса (true/false)
enable: true
# -- Имя контейнера hub-sso
fullname: hub-sso
image:
# -- Путь к репозиторию образа
name: appsechub/hub-sso
# -- Реестр образов контейнеров
repository: registry.appsec.global
# -- Тег версии образа
# -- Политика загрузки образа
tag: 2025.3.2
# -- Политика загрузки образа
pullPolicy: Always
# -- Стратегия развертывания новых pod's
strategy:
type: Recreate
# -- Аннотации к объекту hub-sso
annotations: {}
# Установка лимитов для контейнера
resources:
requests:
memory: "1024Mi"
cpu: "200m"
limits:
memory: "8192Mi"
cpu: "4000m"
## -- nodeSelector для компонента hub-sso
nodeSelector: {}
# Для генерации токена можно использовать следующую команду
# dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2-17 | rev
# -- Ключ шифрования SSO
encKey: "ADa29lu2+uoSiSA0"
service:
# -- Тип Service, LoadBalancer или ClusterIP
type: ClusterIP
# -- Политика Service
externalTrafficPolicy: local
# -- При использовании service.type=LoadBalancer необходимо поставить true
# и указать статический ip адрес
enableIp: false
# -- IP aдрес LoadBalancer для Service (Если frontend.service.type=LoadBalancer)
ip: null
# -- Аннотации к объекту Service hub-sso
annotations: {}
hub:
service:
# -- Указать url AppSec.Hub
url: https://appsec-hub.example.com
env:
# -- Размер пула соединений с базой данных
dbPoolSize: "10"
# -- Указание TimeZone Europe/Moscow
timezone: Europe/Moscow
# -- Дополнительные лейблы для Pods hub-sso
podLabels: {}
# -- Монтирование дополнительных томов в контейнер
extraVolumemounts: {}
# - name: varlog
# mountPath: /opt/py-model/logs
# -- Указание дополнительных томов контейнера
extraVolumes: {}
# - name: varlog
# emptyDir: {}
# - name: config-volume
# secret:
# secretName: fluentd-config-avc
rabbitmq:
enable: true
fullname: rabbitmq
image:
# -- Путь к репозиторию образа
name: public/sfs-rabbitmq
# -- Политика загрузки образа
pullPolicy: IfNotPresent
# -- Реестр образов контейнеров
repository: registry.appsec.global
# -- Тег версии образа
tag: 3.13-management
auth:
username: user
password: "61n!13)p6^J<$"
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: true
# -- Указание storageClassName для тома сервиса
storageClassName: yc-network-hdd
# -- Указание размера тома для хранения данных сервиса
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.3.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: {}
nodes:
- fullname: hub-pipeline-agent-1
image:
name: appsechub/hub-pipeline-agent
pullPolicy: Always
repository: registry.appsec.global
tag: 2025.3.2
service:
enableIp: null
externalTrafficPolicy: Local
ip: null
port: 50052
targetPort: 50052
portName: port50052
type: ClusterIP
# annotations:
# yandex.cloud/load-balancer-type: Internal
# yandex.cloud/subnet-id: e9bbd85jqhq3041sd9r0
resources:
requests:
memory: "128Mi"
cpu: "50m"
limits:
memory: "4096Mi"
cpu: "500m"
pvc:
enable: false
storageClassName: yc-network-hdd
storage: 10Gi
accessModes:
- ReadWriteOnce
disk: ssd
strategy:
type: Recreate
env:
timezone: Europe/Moscow
annotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
nodeSelector:
disk: ssd
pvc:
# -- Создать постоянный том для хранения
enable: true
# @ignored
pvc: {}
# - name: {{ k8s_namespace }}-hubair-logs-pvc"
# storageClassName: yc-network-ssd
# storageSize: 10Gi
configMaps:
# -- Включить дополнительный configMap
enable: false
deployments:
# -- Включить дополнительный deployment
enable: false
secrets:
enable: false
superset:
enabled: true
nameOverride: ~
fullnameOverride: hub-superset
runAsUser: 1000
secretEnv:
create: true
serviceAccountName: superset
serviceAccount:
create: true
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'
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: |
SECRET_KEY = '1bYnliuEC1vcNRDc+YWpA8M4oM4DjGAfbZghXuXMtpTfDbDVyweshpRU'
configMountPath: "/app/pythonpath"
extraConfigMountPath: "/app/configs"
image:
repository: registry.appsec.global/appsechub/hub-metrics
tag: 2025.3.2
pullPolicy: IfNotPresent
imagePullSecrets:
- name: regcred
initImage:
repository: registry.appsec.global/public/hub-metrics
tag: dockerize
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 8088
annotations: {}
# cloud.google.com/load-balancer-type: "Internal"
loadBalancerIP: ~
nodePort:
# -- (int)
http: nil
ingress:
enabled: false
ingressClassName: nginx-internal
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
# Superset node configuration
supersetNode:
replicaCount: 1
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 100
targetCPUUtilizationPercentage: 80
podDisruptionBudget:
enabled: false
minAvailable: 1
maxUnavailable: 1
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: aczxo2fh20g48
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 60s
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
init:
resources: {}
# limits:
# cpu: 200m
# memory: 1Gi
# requests:
# cpu: 100m
# memory: 256Mi
command:
- "/bin/sh"
- "-c"
- ". {{ .Values.configMountPath }}/superset_init.sh"
enabled: true
# автоматически удаляет Job через заданное время после завершения
# ttlSecondsAfterFinished: 600
jobAnnotations:
"helm.sh/hook": post-install,post-upgrade
"helm.sh/hook-delete-policy": "before-hook-creation"
loadExamples: false
createAdmin: true
adminUser:
username: admin
firstname: Metrics
lastname: Admin
email: admin@superset.com
password: gxuts4hg393779
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 60s
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
postgresql:
fullnameOverride: hub-postgresql
nameOverride: hub-postgresql
enabled: true
auth:
postgresPassword: metrics
enablePostgresUser: true
username: metrics
password: aczxo2fh20g48
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: yc-network-hdd
##
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.3.2
pullPolicy: Always
imagePullSecrets:
- name: regcred
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 60s
resources: {}
# limits:
# cpu: 500m
# memory: 512Mi
# requests:
# cpu: 100m
# memory: 256Mi
PG_USER: metrics
PGPASSWORD: aczxo2fh20g48
PG_URL: hub-postgresql
SCHEDULER_DB_PASSWORD: 4pF*9W41tG9p
METRICS_DB_PASSWORD: aczxo2fh20g48
REMOTE_HOST_DB: postgresql
REMOTE_PORT_DB: 5432
REMOTE_DB: hubdb
REMOTE_USER_DB: hubadm
REMOTE_PASSWORD_DB: p3VEthvxKr435
METRICS_HOST: http://hub-superset
METRICS_PORT: 8088
METRICS_USERNAME: admin
METRICS_PASSWORD: gxuts4hg393779
METRICS_DATABASE_URL: "postgresql+psycopg2://metrics_user:%s@hub-postgresql:5432/metrics_data"
CHRON: "0 0 * * * *"
nodeSelector: {}