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

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

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

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

# Модуль hub-air
# MODEL_SECRET_KEY - указать в открытом виде
# MODEL_USE_ENCRYPTION - поставить в 1
hubair:
  # -- Имя контейнера hub-air
  fullname: hub-air
  image:
    # -- Путь к репозиторию образа hub-air
    name: appsechub/hub-air
    # -- Политика загрузки образа
    pullPolicy: Always
    # -- Реестр образов контейнеров
    repository: registry.appsec.global
    # -- Тег версии образа
    tag: 2025.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: {}
К началу