Skip to main content

Helm Chart Values 2026.9.0

Version: 2026.9.0

Here is the reference for the customizable values for Helm installation. See Helm installation documentation for more information.

global​

Global configuration

Default
global:
emptyDir:
sizeLimit: ""
fipsEnabled: false
image:
imagePullPolicy: IfNotPresent
registry: null
imagePullSecrets: []
imageRegistry: ""
labels: {}
nodeSelector: {}
priorityClassName: ""
tolerations: []
global.imageRegistrystring​

Global Docker image registry

Default: ""
global.image.registrystring​

Use the same value as global.imageRegistry here (for compatibility)

Default: nil
global.imagePullSecretslist​

Global Docker registry secret names as an array

Default: []
global.fipsEnabledbool​

Enable the use of FIPS compliant images

Default: false
global.priorityClassNamestring​

Default priority class for all components

Default: ""
global.labelsobject​

Common labels to add to all resources Format: name: value

Default: {}
global.tolerationslist​

Common tolerations applied to all workloads Example for ARM/Graviton nodes: tolerations: - key: graviton operator: Exists

Default: []
global.emptyDir.sizeLimitstring​

Default sizeLimit for every chart-managed emptyDir volume. Empty emits no sizeLimit (Kubernetes default: unbounded). Per-volume keys override this.

Default: ""
global.nodeSelectorobject​

Common nodeSelector for all components

Default: {}

hostname​

hostnamestring

Hostname for the GitGuardian application (without https://)

Default: "gitguardian.example.com"

extra_hostnames​

extra_hostnameslist

Additional hostnames accepted by the routing layer. Only effective on /api/v1/receiver (the hook webapp skips Host validation); other paths still require the canonical hostname above.

Default: []

network​

network.ipFamilystring​

IP family mode for the deployment ("ipv4", "ipv6", "dualstack")

Default: "ipv4"

postgresql​

PostgreSQL Database configuration

postgresql.hoststring​

PostgreSQL Database host name

Default: ""
postgresql.portint​

PostgreSQL Database host port

Default: 5432
postgresql.usernamestring​

PostgreSQL Database user name

Default: ""
postgresql.passwordstring​

PostgreSQL Database user password Should preferably be set in existing secret (see: postgresql.existingSecret)

Default: ""
postgresql.tls.modestring​

PostgreSQL Database SSL mode Possible values: disable, allow, prefer, require, verify-ca, verify-full See: PostgreSQL SSL Mode Descriptions

Default: "allow"
postgresql.tls.crtstring​

PostgreSQL Database Client certificate Should preferably be set in existing secret (see: postgresql.existingSecret)

Default: ""
postgresql.tls.keystring​

PostgreSQL Database Client certificate private key Should preferably be set in existing secret (see: postgresql.existingSecret)

Default: ""
postgresql.tls.caCrtstring​

PostgreSQL Database Custom Certificate Authority Should preferably be set in existing secret (see: postgresql.existingSecret)

Default: ""
postgresql.tls.existingSecretKeys.crtstring​

Existing secret key where to store PostgreSQL Database Client certificate

Default: ""
postgresql.tls.existingSecretKeys.keystring​

Existing secret key where to store PostgreSQL Database Client certificate private key

Default: ""
postgresql.tls.existingSecretKeys.caCrtstring​

Existing secret key where to store PostgreSQL Database Custom Certificate Authority

Default: ""
postgresql.existingSecretstring​

Secret used to store PostgreSQL password and Certificates (preferred method)

Default: ""
postgresql.existingSecretKeysobject​

Keys used for PostgreSQL Database secrets when using an existing secret

postgresql.existingSecretKeys.passwordstring​

Existing secret key where to store PostgreSQL Database user password

Default: ""

redis​

Redis Database configuration You can either provide a full qualified URI or fill each parts in dedicated fields Redis is used as a broker and result backend for celery and as a Commit Cache

redis.main.urlstring​

Full qualified URI of Redis Instance Should preferably be set in existing secret (see: redis.main.existingSecret) This values is not used if using Redis Sentinel

Default: ""
redis.main.userstring​

Redis Instance user (if redis.main.url is not specified) / Redis Sentinel master name

Default: ""
redis.main.passwordstring​

Redis Instance password (if redis.main.url is not specified) / Redis Sentinel master password Should preferably be set in existing secret (see: redis.main.existingSecret)

Default: ""
redis.main.hoststring​

Redis Instance host name (if redis.main.url is not specified) This values is not used if using Redis Sentinel

Default: ""
redis.main.portint​

Redis Instance host port (if redis.main.url is not specified)

Default: 6379
redis.main.sentinelobject​

Redis Sentinel dedicated parameters (works along with redis.main.url)

Default
redis:
main:
sentinel:
enabled: false
masterServiceName: ""
password: ""
url: ""
user: ""
redis.main.sentinel.enabledbool​

Redis Sentinel enabler

Default: false
redis.main.sentinel.urlstring​

Redis Sentinel instances list. Format: sentinel-1:26379,sentinel-2:26379 Should preferably be set in existing secret (see: redis.main.existingSecret)

Default: ""
redis.main.sentinel.userstring​

Redis Sentinel master user

Default: ""
redis.main.sentinel.passwordstring​

Redis Sentinel master password Should preferably be set in existing secret (see: redis.main.existingSecret)

Default: ""
redis.main.sentinel.masterServiceNamestring​

Redis Sentinel master service name

Default: ""
redis.main.tlsobject​

Redis Instance TLS configuration

Default: Not set
redis.main.tls.enabledbool​

Enable redis TLS (mandatory, whether using redis.main.url or redis.main.host)

Default: false
redis.main.tls.requireServerCertbool​

Enable redis server certificate check If true, you must provide a rediss:// URL Scheme for redis.main.url

Default: false
redis.main.tls.crtstring​

Redis Instance Client certificate Should preferably be set in existing secret (see: redis.main.existingSecret)

Default: ""
redis.main.tls.keystring​

Redis Instance Client certificate private key Should preferably be set in existing secret (see: redis.main.existingSecret)

Default: ""
redis.main.tls.caCrtstring​

Redis Instance Custom Certificate Authority Should preferably be set in existing secret (see: redis.main.existingSecret)

Default: ""
redis.main.tls.existingSecretKeys.crtstring​

Existing secret key where to store Redis Instance Client certificate

Default: ""
redis.main.tls.existingSecretKeys.keystring​

Existing secret key where to store Redis Instance Client certificate private key

Default: ""
redis.main.tls.existingSecretKeys.caCrtstring​

Existing secret key where to store Redis Instance Custom Certificate Authority

Default: ""
redis.main.existingSecretstring​

Secret used to store Redis Instance URL or password and Certificates (preferred method)

Default: ""
redis.main.existingSecretKeysobject​

Keys used for Redis secrets when using an existing secret

redis.main.existingSecretKeys.urlstring​

Redis url

Default: ""
redis.main.existingSecretKeys.passwordstring​

Redis password (You can't use this parameter with Argo CD, use url parameter instead)

Default: ""
redis.main.existingSecretKeys.sentinelUrlstring​

Redis Sentinel instances list

Default: ""
redis.main.existingSecretKeys.sentinelPasswordstring​

Redis Sentinel password

Default: ""
redis.commitCache.enabledbool​

Enable a separate Redis instance dedicated to the Commit Cache feature. Commit Cache feature allows to not scan already scanned commit by saving in Redis scan results. If not enabled, main Redis instance will be used for the Commit Cache

Default: false
redis.commitCache.urlstring​

Full qualified URI of Redis Instance Should preferably be set in existing secret (see: redis.commitCache.existingSecret)

Default: ""
redis.commitCache.userstring​

Redis Instance user name (if redis.commitCache.url is not specified)

Default: ""
redis.commitCache.passwordstring​

Redis Instance user password (if redis.commitCache.url is not specified) Should preferably be set in existing secret (see: redis.commitCache.existingSecret)

Default: ""
redis.commitCache.hoststring​

Redis Instance host name (if redis.commitCache.url is not specified)

Default: ""
redis.commitCache.portint​

Redis Instance host port (if redis.commitCache.url is not specified)

Default: 6379
redis.commitCache.tlsobject​

Redis Instance TLS configuration

Default: Not set
redis.commitCache.tls.enabledbool​

Enable redis TLS (mandatory, whether using redis.commitCache.url or redis.commitCache.host)

Default: false
redis.commitCache.tls.requireServerCertbool​

Enable redis server certificate check If true, you must provide a rediss:// URL Scheme for REDIS_URL

Default: false
redis.commitCache.tls.crtstring​

Redis Instance Client certificate Should preferably be set in existing secret (see: redis.commitCache.existingSecret)

Default: ""
redis.commitCache.tls.keystring​

Redis Instance Client certificate private key Should preferably be set in existing secret (see: redis.commitCache.existingSecret)

Default: ""
redis.commitCache.tls.caCrtstring​

Redis Instance Custom Certificate Authority Should preferably be set in existing secret (see: redis.commitCache.existingSecret)

Default: ""
redis.commitCache.tls.existingSecretKeys.crtstring​

Existing secret key where to store Redis Instance Client certificate

Default: ""
redis.commitCache.tls.existingSecretKeys.keystring​

Existing secret key where to store Redis Instance Client certificate private key

Default: ""
redis.commitCache.tls.existingSecretKeys.caCrtstring​

Existing secret key where to store Redis Instance Custom Certificate Authority

Default: ""
redis.commitCache.existingSecretstring​

Secret used to store Redis Instance URL or password and Certificates (preferred method)

Default: ""
redis.commitCache.existingSecretKeysobject​

Keys used for Redis secrets when using an existing secret

redis.commitCache.existingSecretKeys.urlstring​

Redis url can be set directly, or it will be recomposed from host, user, ...

Default: ""
redis.commitCache.existingSecretKeys.passwordstring​

Redis password (You can't use this parameter with Argo CD, use url parameter instead)

Default: ""

miscEncryption​

Encryption keys configuration Django Secret Key, X509 certificate and key are auto-generated during installation if not set

miscEncryption.djangoSecretKeystring​

Encryption key for sensitive database fields. Auto-generated at first install if empty (preferred method) IMPORTANT The key should be kept in a safe place at it is required to access all sensitive information in the database

Default: Auto-generated
miscEncryption.dbEncryptionKeysstring​

DB encryption secrets (optional, only needed for djangoSecretKey key rotation)

Default: ""
miscEncryption.existingSecretstring​

Secret used to store encryption secrets

Default: ""
miscEncryption.existingSecretKeysobject​

Keys used for encryption secrets when using an existing secret

miscEncryption.existingSecretKeys.djangoSecretKeystring​

Existing secret key where to store Django Secret Key Auto-generated at first install if empty (preferred method)

Default: ""
miscEncryption.existingSecretKeys.dbEncryptionKeysstring​

Existing secret key where to store DB encryption keys (optional, only needed for djangoSecretKey key rotation)

Default: ""
miscEncryption.existingSecretKeys.x509Certstring​

Existing secret key where to store certificate for SAML/SSO auth Auto-generated at first install if empty (preferred method)

Default: ""
miscEncryption.existingSecretKeys.x509PrivateKeystring​

Existing secret key where to store certificate private key for SAML/SSO auth Auto-generated at first install if empty (preferred method)

Default: ""

autoscaling​

Autoscaling configuration

Default
autoscaling:
keda:
additionalPromqlLabelSelectors: ""
prometheus: {}
autoscaling.keda.additionalPromqlLabelSelectorsstring​

Optional comma-terminated PromQL label selectors inserted at the start of every { in built-in KEDA Prometheus queries when your metrics need extra matchers (e.g. cluster="prod",). Leave empty to keep the default queries.

Default: ""
autoscaling.keda.prometheusobject​

Prometheus scaler configguration

Default: {}

front​

Frontend configuration The Frontend serves the Dashboard and acts as a proxy for other web deployments

front.nginx.replicasint​

Dashboard Frontend replicas count

Default: 1
front.nginx.nodeSelectorobject​

Node selection constraint for Frontend

Default: {}
front.nginx.tolerationslist​

Schedule Frontend pods with matching taints

Default: []
front.nginx.priorityClassNamestring​

priorityClassName (overrides global)

Default: ""
front.nginx.podAntiAffinityPresetstring​

Pod anti-affinity preset (hard or soft)

Default: "soft"
front.nginx.resourcesobject​

Dashboard Frontend resources

Default
front:
nginx:
resources:
requests:
cpu: "100m"
memory: "200Mi"
front.service.typestring​

Service type. Can be ClusterIP, NodePort or LoadBalancer

Default: "ClusterIP"
front.service.portint​

Dashboard Frontend Service port

Default: 80
front.service.annotationsobject​

Dashboard Frontend Service annotations

Default: {}

webappDefaults​

Backend deployments configuration

webappDefaults.autoscaling.hpa.enabledbool​

Enable Horizontal Pod Autoscaler

Default: false
webappDefaults.autoscaling.keda.enabledbool​

Enable Keda Autoscaler

Default: false
webappDefaults.autoscaling.keda.triggerslist​

Additional Keda triggers

Default: []
webappDefaults.autoscaling.minReplicasint​

Minimum number of workers created by autoscaler

Default: 1
webappDefaults.autoscaling.maxReplicasint​

Maximum number of workers created by autoscaler

Default: 10
webappDefaults.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
webappDefaults:
autoscaling:
metrics:
targetLatency: 1000
webappDefaults.podAntiAffinityPresetstring​

Pod anti-affinity preset (hard or soft)

Default: "soft"
webappDefaults.nodeSelectorobject​

Node selection constraint

Default: {}
webappDefaults.tolerationslist​

Schedule pods with matching taints

Default: []
webappDefaults.priorityClassNamestring​

priorityClassName (overrides global)

Default: ""

webapps​

webapps.internal_api.namestring​
Default: "internal-api"
webapps.internal_api.componentstring​
Default: "app"
webapps.internal_api.replicasint​

Internal API replicas count

Default: 1
webapps.internal_api.nginx.locationstring​
Default: "/api/v1/"
webapps.internal_api.gunicorn.portint​
Default: 5050
webapps.internal_api.gunicorn.workersint​
Default: 3
webapps.internal_api.resources.requests.cpustring​
Default: "100m"
webapps.internal_api.resources.requests.memorystring​
Default: "500Mi"
webapps.internal_api.readinessProbe.enabledbool​
Default: true
webapps.internal_api.readinessProbe.initialDelaySecondsint​
Default: 15
webapps.internal_api.readinessProbe.periodSecondsint​
Default: 5
webapps.internal_api.readinessProbe.timeoutSecondsint​
Default: 3
webapps.internal_api.readinessProbe.successThresholdint​
Default: 1
webapps.internal_api.readinessProbe.failureThresholdint​
Default: 3
webapps.internal_api_long.namestring​
Default: "internal-api-long"
webapps.internal_api_long.componentstring​
Default: "app"
webapps.internal_api_long.replicasint​

Internal API for long requests replicas count

Default: 1
webapps.internal_api_long.nginx.locationstring​
Default: `"~* "(?x)\n /api/v1/accounts/\d+/\n (\n report/\n
webapps.internal_api_long.nginx.keepalive_timeoutstring​
Default: "3600s"
webapps.internal_api_long.gunicorn.portint​
Default: 5050
webapps.internal_api_long.gunicorn.worker_classstring​
Default: "gthread"
webapps.internal_api_long.gunicorn.workersint​
Default: 4
webapps.internal_api_long.gunicorn.timeoutint​
Default: 300
webapps.internal_api_long.resources.requests.cpustring​
Default: "100m"
webapps.internal_api_long.resources.requests.memorystring​
Default: "500Mi"
webapps.internal_api_long.readinessProbe.enabledbool​
Default: true
webapps.internal_api_long.readinessProbe.initialDelaySecondsint​
Default: 15
webapps.internal_api_long.readinessProbe.periodSecondsint​
Default: 10
webapps.internal_api_long.readinessProbe.timeoutSecondsint​
Default: 5
webapps.internal_api_long.readinessProbe.successThresholdint​
Default: 1
webapps.internal_api_long.readinessProbe.failureThresholdint​
Default: 3
webapps.public_api.namestring​
Default: "public-api"
webapps.public_api.componentstring​
Default: "api"
webapps.public_api.replicasint​

Public API (used for ggshield scans) replicas count

Default: 1
webapps.public_api.nginx.locationstring​
Default: "/exposed"
webapps.public_api.nginx.locationDirectives[0]string​
Default: "client_max_body_size 25m;"
webapps.public_api.gunicorn.portint​
Default: 5051
webapps.public_api.gunicorn.workersint​
Default: 5
webapps.public_api.resources.requests.cpustring​
Default: "100m"
webapps.public_api.resources.requests.memorystring​
Default: "500Mi"
webapps.public_api.readinessProbe.enabledbool​
Default: true
webapps.public_api.readinessProbe.initialDelaySecondsint​
Default: 15
webapps.public_api.readinessProbe.periodSecondsint​
Default: 10
webapps.public_api.readinessProbe.timeoutSecondsint​
Default: 5
webapps.public_api.readinessProbe.successThresholdint​
Default: 1
webapps.public_api.readinessProbe.failureThresholdint​
Default: 3
webapps.hook.namestring​
Default: "hook"
webapps.hook.componentstring​
Default: "receiver"
webapps.hook.replicasint​

VCS Webhooks Receivers replicas count

Default: 1
webapps.hook.nginx.locationstring​
Default: "/api/v1/receiver"
webapps.hook.gunicorn.portint​
Default: 5050
webapps.hook.resources.requests.cpustring​
Default: "100m"
webapps.hook.resources.requests.memorystring​
Default: "500Mi"
webapps.hook.readinessProbe.enabledbool​
Default: false
webapps.app_exporter.namestring​
Default: "app-exporter"
webapps.app_exporter.replicasstring​

Prometheus exporter replicas count Will be set to 1 if .Values.observability.exporter.statefulAppExporter.enabled is true

Default: 0
webapps.app_exporter.internalbool​
Default: true
webapps.app_exporter.gunicorn.portint​
Default: 9808
webapps.app_exporter.readinessProbe.enabledbool​
Default: true
webapps.app_exporter.readinessProbe.initialDelaySecondsint​
Default: 15
webapps.app_exporter.readinessProbe.periodSecondsint​
Default: 10
webapps.app_exporter.readinessProbe.timeoutSecondsint​
Default: 5
webapps.app_exporter.readinessProbe.successThresholdint​
Default: 1
webapps.app_exporter.readinessProbe.failureThresholdint​
Default: 3

celeryWorkerDefaults​

celeryWorkerDefaultsobject

Default configuration applied to all celery workers Workers can override any of these values in their own configuration. NOTE: Do NOT set terminationGracePeriodSeconds here - it has a dedicated fallback mechanism.

Default
celeryWorkerDefaults:
autoscaling:
hpa:
enabled: false
keda:
enabled: false
idleReplicaCount: 0
triggers: []
maxReplicas: 10
minReplicas: 1
ephemeralStorage:
annotations: {}
enabled: false
labels: {}
size: "1Gi"
storageClass: ""
livenessProbe:
enabled: true
failureThreshold: 3
initialDelaySeconds: 30
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 10
metricsPort: 9808
nodeSelector: {}
podAntiAffinityPreset: soft
priorityClassName: ""
startupProbe:
enabled: true
failureThreshold: 30
heartbeatThreshold: 120
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
tolerations: []

celeryWorkers​

Asynchronous Workers deployments configuration

celeryWorkers.worker.queuesstring​

Queues consumed by default workers

Default: "celery,check_run,realtime,realtime_retry,honeytoken,reports,core_default,sources_default,incidents_default,individual_validity_check"
celeryWorkers.worker.replicasint​

Default workers (incl. realtime scans) replicas count

Default: 2
celeryWorkers.worker.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
worker:
autoscaling:
metrics:
celery: 10
check_run: 10
core_default: 10
honeytoken: 10
incidents_default: 10
individual_validity_check: 10
realtime: 10
realtime_retry: 10
reports: 10
sources_default: 10
celeryWorkers.check-runs.queuesstring​

Queues consumed by Check Run workers

Default: "check_run"
celeryWorkers.check-runs.replicasint​

Check Run workers replicas count

Default: 0
celeryWorkers.check-runs.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
check-runs:
autoscaling:
metrics:
check_run: 10
celeryWorkers.email.queuesstring​

Queues consumed by Messaging workers

Default: "email,notifier"
celeryWorkers.email.replicasint​

Messaging workers replicas count

Default: 2
celeryWorkers.email.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
email:
autoscaling:
metrics:
email: 10
notifier: 10
celeryWorkers.public-monitoring.queuesstring​

Queues consumed by Public Monitoring workers

Default: "public_monitoring,public_monitoring_historical_scan,public_monitoring_realtime_scan"
celeryWorkers.public-monitoring.replicasint​

Worker count when enabled (gated to 0 unless the license field below is true)

Default: 1
celeryWorkers.scanners.queuesstring​

Queues consumed by Historical Scan workers

Default: "basic_repo_scan,premium_repo_scan,manual_repo_scan,code_fixing"
celeryWorkers.scanners.replicasint​

Historical Scan workers replicas count

Default: 2
celeryWorkers.scanners.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
scanners:
autoscaling:
metrics:
basic_repo_scan: 10
code_fixing: 10
manual_repo_scan: 10
premium_repo_scan: 10
celeryWorkers.check-run-scanners.queuesstring​

Queues consumed by scan-based check-run workers

Default: "check_run_scan"
celeryWorkers.check-run-scanners.replicasint​

Scan-based check-run workers replicas count (0 = fall back to scanners)

Default: 0
celeryWorkers.check-run-scanners.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
check-run-scanners:
autoscaling:
metrics:
check_run_scan: 10
celeryWorkers.premium-scanners-retry.queuesstring​

Queues consumed by the VCS scan retry workers

Default: "premium_repo_scan_retry"
celeryWorkers.premium-scanners-retry.replicasint​

VCS scan retry workers replicas count (0 disables the dedicated worker)

Default: 0
celeryWorkers.premium-scanners-retry.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
premium-scanners-retry:
autoscaling:
metrics:
premium_repo_scan_retry: 1
celeryWorkers.long.queuesstring​

Queues consumed by Long Tasks workers

Default: "background_validity_check,update_sources_state,nhi_ingestion,endpoints,hmsl,core_long,sources_long,incidents_long,ml_backpopulate,core_aspm,team_sync"
celeryWorkers.long.replicasint​

Long Tasks workers replicas count

Default: 2
celeryWorkers.long.autoscaling.metricsobject​

HPA metrics threshold

Default
celeryWorkers:
long:
autoscaling:
metrics:
background_validity_check: 10
core_aspm: 10
core_long: 10
endpoints: 10
hmsl: 10
incidents_long: 10
ml_backpopulate: 10
nhi_ingestion: 10
sources_long: 10
team_sync: 10
update_sources_state: 10
celeryWorkers.automatic-severities.queuesstring​

Queues consumed by automatic severities workers

Default: "automatic_severities"
celeryWorkers.automatic-severities.replicasint​

Automatic severities workers replicas count

Default: 1
celeryWorkers.automatic-severities.autoscaling.maxReplicasint​

Autoscaling metrics threshold

Default: 3
celeryWorkers.incidents-disk.queuesstring​

Queues consumed by the locations recompute workers

Default: "incidents_disk"
celeryWorkers.incidents-disk.replicasint​

Locations recompute workers replicas count (0 = fall back to scanners)

Default: 0
celeryWorkers.incidents-disk.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
incidents-disk:
autoscaling:
metrics:
incidents_disk: 10
celeryWorkers.scanners-ods.queuesstring​

Queues consumed by non-VCS Historical Scan workers

Default: "ods_scan"
celeryWorkers.scanners-ods.replicasint​

Non-VCS Historical Scan workers replicas count

Default: 0
celeryWorkers.scanners-ods.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
scanners-ods:
autoscaling:
metrics:
ods_scan: 10
celeryWorkers.scanners-ods-highdisk.queuesstring​

Queues consumed by non-VCS Historical Scan workers

Default: "ods_scan_highdisk"
celeryWorkers.scanners-ods-highdisk.replicasint​

Non-VCS Historical Scan workers replicas count

Default: 0
celeryWorkers.scanners-ods-highdisk.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
scanners-ods-highdisk:
autoscaling:
metrics:
ods_scan_highdisk: 10
celeryWorkers.realtime-ods.queuesstring​

Queues consumed by default workers

Default: "realtime_ods,realtime_retry_ods"
celeryWorkers.realtime-ods.replicasint​

Default workers (incl. realtime scans) replicas count

Default: 0
celeryWorkers.realtime-ods.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
realtime-ods:
autoscaling:
metrics:
realtime_ods: 10
realtime_retry_ods: 10
celeryWorkers.long-ods.queuesstring​

Queues consumed by none-VCS Long Tasks workers

Default: "long_ods"
celeryWorkers.long-ods.replicasint​

Non-VCS Long Tasks workers replicas count

Default: 0
celeryWorkers.long-ods.autoscaling.maxReplicasint​

Maximum number of workers created by autoscaler

Default: 15
celeryWorkers.long-ods.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
long-ods:
autoscaling:
metrics:
long_ods: 10
celeryWorkers.long-ods-io.replicasint​

Number of replica for Non-VCS workers specialized in IO operations

Default: 0
celeryWorkers.long-ods-io.autoscaling.maxReplicasint​

Maximum number of workers created by autoscaler

Default: 1
celeryWorkers.long-ods-io.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
long-ods-io:
autoscaling:
metrics:
long_ods_io: 10
celeryWorkers.container-registries.replicasint​

Number of replica for Container Registries scans

Default: 0
celeryWorkers.container-registries.autoscaling.maxReplicasint​

Maximum number of workers created by autoscaler

Default: 1
celeryWorkers.container-registries.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
container-registries:
autoscaling:
metrics:
container_registries: 10
celeryWorkers.scanners-slack.replicasint​

Number of replica for Slack scans

Default: 0
celeryWorkers.scanners-slack.autoscaling.maxReplicasint​

Maximum number of workers created by autoscaler

Default: 4
celeryWorkers.scanners-slack.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
scanners-slack:
autoscaling:
metrics:
slack_scan: 6
celeryWorkers.business-contribution.replicasint​

Number of replica for Business Contrib Worker

Default: 0
celeryWorkers.business-contribution.autoscaling.maxReplicasint​

Maximum number of workers created by autoscaler

Default: 5
celeryWorkers.business-contribution.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
business-contribution:
autoscaling:
metrics:
business_contribution: 10
celeryWorkers.business-contribution.prefetchMultiplierint​

Prefetch multiplier for Business Contrib Worker

Default: 100
celeryWorkers.ml-api-priority.replicasint​

Number of replica for ML API priority worker

Default: 1
celeryWorkers.ml-api-priority.autoscaling.metricsobject​

Autoscaling metrics threshold

Default
celeryWorkers:
ml-api-priority:
autoscaling:
metrics:
ml_api_priority: 10
celeryWorkers.ml-api-priority.autoscaling.maxReplicasint​

Maximum number of workers created by autoscaler

Default: 1

beat​

Asynchronous tasks scheduler

beat.priorityClassNamestring​

priorityClassName (overrides global)

Default: ""
beat.resourcesobject​

Asynchronous tasks scheduler resources

Default
beat:
resources:
requests:
cpu: "10m"
memory: "200Mi"

secretEngine​

ML Secret Engine

Default
secretEngine:
autoscaling:
hpa:
enabled: false
keda:
enabled: false
triggers: []
maxReplicas: 1
metrics:
bentoml_service_request_in_progress: 10
minReplicas: 1
emptyDir:
bentomlProm:
sizeLimit: ""
bentomlTmp:
sizeLimit: ""
modelDir:
sizeLimit: ""
labels: {}
nodeSelector: {}
pdb:
enabled: false
minAvailable: "50%"
priorityClassName: ""
replicas: 1
tolerations: []
secretEngine.replicasint​

Number of replicas

Default: 1
secretEngine.nodeSelectorobject​

Node selection constraint for secret-engine

Default: {}
secretEngine.tolerationslist​

Schedule secret-engine pods with matching taints

Default: []
secretEngine.priorityClassNamestring​

priorityClassName (overrides global)

Default: ""
secretEngine.labelsobject​

Additional labels

Default: {}
secretEngine.pdb.enabledbool​

Activate PodDisruptionBudget on secret engine Note: podDisruptionBudget.enabled must be true

Default: false
secretEngine.pdb.minAvailablestring​

Minimum percentage of available replicas

Default: "50%"
secretEngine.autoscaling.hpa.enabledbool​

Enable HPA on secret engine

Default: false
secretEngine.autoscaling.keda.enabledbool​

Enable Keda Autoscaler

Default: false
secretEngine.autoscaling.keda.triggerslist​

Additional Keda triggers

Default: []
secretEngine.autoscaling.minReplicasint​

Minimum number of workers created by autoscaler

Default: 1
secretEngine.autoscaling.maxReplicasint​

Maximum number of workers created by autoscaler

Default: 1
secretEngine.autoscaling.metricsobject​

Metrics

Default
secretEngine:
autoscaling:
metrics:
bentoml_service_request_in_progress: 10
secretEngine.emptyDir.modelDir.sizeLimitstring​

sizeLimit for the model-dir emptyDir holding the ML model bundle, by far the largest of the three (>650Mi as of 1.11.0). Size it accordingly if your platform caps emptyDir volumes. Empty falls back to global.emptyDir.sizeLimit.

Default: ""
secretEngine.emptyDir.bentomlTmp.sizeLimitstring​

sizeLimit for the bentoml-tmp emptyDir. Empty falls back to global.emptyDir.sizeLimit.

Default: ""
secretEngine.emptyDir.bentomlProm.sizeLimitstring​

sizeLimit for the bentoml-prom emptyDir. Empty falls back to global.emptyDir.sizeLimit.

Default: ""

inAppAnalytics​

InApp Analytics

Default
inAppAnalytics:
annotations: {}
enabled: true
ephemeralStorage:
annotations: {}
enabled: false
labels: {}
size: "20Gi"
storageClass: ""
labels: {}
nodeSelector: {}
podAnnotations: {}
podLabels: {}
postgresql:
analyticsSchema: ""
applicationSchema: ""
useSeparateAnalyticsSchema: null
priorityClassName: ""
tolerations: []
inAppAnalytics.enabledbool​

Enable InApp Analytics

Default: true
inAppAnalytics.postgresqlobject​

PostgreSQL schema layout used by the analytics pipeline. Each setting is passed to the job only when set; leaving them unset keeps the historical layout (GitGuardian tables in public, intermediate objects in their own analytics schema).

Default
inAppAnalytics:
postgresql:
analyticsSchema: ""
applicationSchema: ""
useSeparateAnalyticsSchema: null
inAppAnalytics.postgresql.applicationSchemastring​

Schema holding the GitGuardian tables, where the pipeline writes the product-facing analytics objects. Must match the default schema of the database user.

Default: ""
inAppAnalytics.postgresql.useSeparateAnalyticsSchemabool​

Give the pipeline's intermediate objects a schema of their own. Set to false to keep them in applicationSchema, so that the job never issues a CREATE SCHEMA.

Default: nil
inAppAnalytics.postgresql.analyticsSchemastring​

Name of the schema holding the intermediate objects. A pre-created schema is accepted, as long as the database user has USAGE, CREATE on it.

Default: ""
inAppAnalytics.nodeSelectorobject​

Node selection constraint

Default: {}
inAppAnalytics.tolerationslist​

Schedule with matching taints

Default: []
inAppAnalytics.priorityClassNamestring​

priorityClassName (overrides global)

Default: ""
inAppAnalytics.annotationsobject​

Additional annotations

Default: {}
inAppAnalytics.labelsobject​

Additional labels

Default: {}
inAppAnalytics.podLabelsobject​

Additional pod labels

Default: {}
inAppAnalytics.podAnnotationsobject​

Additional pod annotations

Default: {}
inAppAnalytics.ephemeralStorage.enabledbool​

Enable ephemeral storage

Default: false
inAppAnalytics.ephemeralStorage.annotationsobject​

Additional annotations

Default: {}
inAppAnalytics.ephemeralStorage.labelsobject​

Additional labels

Default: {}
inAppAnalytics.ephemeralStorage.storageClassstring​

Storage class

Default: ""
inAppAnalytics.ephemeralStorage.sizestring​

Size

Default: "20Gi"

apacheTika​

Apache Tika

Default
apacheTika:
autoscaling:
hpa:
enabled: false
keda:
enabled: false
triggers: []
maxReplicas: 10
minReplicas: 1
targetCPUUtilizationPercentage: 60
targetMemoryUtilizationPercentage: 60
labels: {}
nodeSelector: {}
pdb:
enabled: false
minAvailable: "50%"
priorityClassName: ""
replicas: 0
tolerations: []
apacheTika.replicasint​

Number of replicas

Default: 0
apacheTika.nodeSelectorobject​

Node selection constraint for apache-tika

Default: {}
apacheTika.tolerationslist​

Schedule secret-engine pods with matching taints

Default: []
apacheTika.priorityClassNamestring​

priorityClassName (overrides global)

Default: ""
apacheTika.labelsobject​

Additional labels

Default: {}
apacheTika.pdb.enabledbool​

Activate PodDisruptionBudget on apache-tika Note: podDisruptionBudget.enabled must be true

Default: false
apacheTika.pdb.minAvailablestring​

Minimum percentage of available replicas

Default: "50%"
apacheTika.autoscaling.hpa.enabledbool​

Enable HPA on apache-tika

Default: false
apacheTika.autoscaling.keda.enabledbool​

Enable Keda Autoscaler

Default: false
apacheTika.autoscaling.keda.triggerslist​

Additional Keda triggers

Default: []
apacheTika.autoscaling.targetCPUUtilizationPercentageint​

Autoscaling CPU threshold

Default: 60
apacheTika.autoscaling.targetMemoryUtilizationPercentageint​

Autoscaling Memory threshold

Default: 60
apacheTika.autoscaling.minReplicasint​

Minimum number of workers created by autoscaler

Default: 1
apacheTika.autoscaling.maxReplicasint​

Maximum number of workers created by autoscaler

Default: 10

onPrem​

onPrem.adminUserobject​

GitGuardian Admin User A temporary password has to be set in secret "gim-secrets" under ADMIN_PASSWORD key. You'll be asked to change this password on your connection

Default
onPrem:
adminUser:
email: admin@example.com
existingSecret: ""
existingSecretKeys:
password: ""
firstname: Admin
onPrem.replicatedRbac.modestring​

Controls the RBAC mode for the Replicated SDK. - full: default, grants all permissions required by the SDK (get/list/watch on core resources, create/update secrets) - minimal: read-only permissions scoped to specific resource names. Some SDK features (e.g. status informers, custom metrics reporting) may not work. Reserved for environments with strict RBAC policies that prohibit runtime secret creation and broad resource access. - disabled: no Role or RoleBinding created for the SDK. The ServiceAccount is still created.

Default: "full"

mcpServer​

MCP Server (opt-in: requires enabled: true)

Default
mcpServer:
annotations: {}
autoscaling:
hpa:
enabled: false
keda:
enabled: false
triggers: []
maxReplicas: 10
metrics:
targetLatency: 1000
minReplicas: 1
enabled: false
extraEnv: []
gunicorn:
maxRequests: 1000
port: 8000
timeout: 120
workers: 1
image:
imagePullPolicy: IfNotPresent
name: gitguardian/mcp-server
registry: proxy.replicated.com/proxy/gitguardian/ghcr.io
tag: "0.7.0"
ingress:
enabled: true
labels: {}
livenessProbe:
enabled: true
failureThreshold: 3
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
mcpOAuthProxyEnabled: true
nodeSelector: {}
oauth:
extraRedirectUris: []
podAnnotations: {}
podAntiAffinityPreset: soft
podLabels: {}
priorityClassName: ""
readinessProbe:
enabled: true
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 3
replicas: 1
resources:
limits:
cpu: "1000m"
memory: "1500Mi"
requests:
cpu: "250m"
memory: "1Gi"
sentry:
dsn: ""
enabled: false
profilesSampleRate: "0.1"
tracesSampleRate: "0.1"
service:
annotations: {}
port: 8000
type: ClusterIP
tolerations: []
mcpServer.enabledbool​

Toggle deployment of the MCP server

Default: false
mcpServer.replicasint​

Number of replicas (only effective when enabled is true)

Default: 1
mcpServer.labelsobject​

Additional labels for the MCP server Deployment

Default: {}
mcpServer.annotationsobject​

Additional annotations for the MCP server Deployment

Default: {}
mcpServer.podLabelsobject​

Additional pod labels

Default: {}
mcpServer.podAnnotationsobject​

Additional pod annotations

Default: {}
mcpServer.podAntiAffinityPresetstring​

Pod anti-affinity preset (hard or soft)

Default: "soft"
mcpServer.mcpOAuthProxyEnabledbool​

Enable the MCP OAuth proxy behaviour (MCP_OAUTH_PROXY_ENABLED env var in gg-mcp)

Default: true
mcpServer.oauth.extraRedirectUrislist​

Extra OAuth callback URLs for your own MCP gateway (absolute https://, host you control)

Default: []
mcpServer.nodeSelectorobject​

Node selection constraint

Default: {}
mcpServer.tolerationslist​

Schedule MCP server pods with matching taints

Default: []
mcpServer.priorityClassNamestring​

priorityClassName (overrides global)

Default: ""
mcpServer.extraEnvlist​

Additional environment variables

Default: []

replicated​

replicated.replicaCountint​

Number of Replicated SDK replicas

Default: 2
replicated.highAvailability.podAntiAffinityPresetstring​

antiAffinity for Replicated SDK, applies only if replicaCount > 1

Default: "soft"
replicated.highAvailability.podDisruptionBudget.enabledbool​

Enable podDisruptionBudget for Replicated SDK

Default: true
replicated.highAvailability.podDisruptionBudget.minAvailableint​

podDisruptionBudget minAvailable for Replicated SDK

Default: 1
replicated.image.registrystring​

Replicated SDK image registry

Default: "proxy.replicated.com/proxy/gitguardian/docker.io"
replicated.image.repositorystring​

Replicated SDK image repository

Default: "replicated/replicated-sdk"
replicated.image.tagstring​

Replicated SDK image tag

Default: "1.19.10"
replicated.imagePullSecretslist​

Image pullsecrets

Default
replicated:
imagePullSecrets:
- name: gim-replicated-registry
replicated.extraEnvlist​

Replicated SDK env vars update this to use an existing Secret for proxy urls. gim-proxy only exists when proxy.httpProxyUrl or proxy.httpsProxyUrl is set inline, so the references stay optional and the SDK starts without a proxy.

Default
replicated:
extraEnv:
- name: HTTP_PROXY
valueFrom:
secretKeyRef:
key: http_proxy
name: gim-proxy
optional: true
- name: HTTPS_PROXY
valueFrom:
secretKeyRef:
key: https_proxy
name: gim-proxy
optional: true
- name: NO_PROXY
valueFrom:
configMapKeyRef:
key: NO_PROXY
name: gim-config
replicated.isAirgapbool​

Disable Replicated outbound connections

Default: false
replicated.privateCASecretobject​

Specify secret containing Custom Certificate Authority certificate. See GitGuardian doc

Default: nil
replicated.supportBundle.enabledbool​

Enable/Disable Support Bundle related file generation entirely

Default: true
replicated.supportBundle.rbac.createPodRolebool​

Add pod create/get/delete permissions to the GIM ServiceAccount role, allowing the application to spawn support-bundle pods. Set to false to prevent in-cluster support bundle generation entirely.

Default: true
replicated.supportBundle.rbac.serviceAccount.createbool​
Default: true
replicated.supportBundle.rbac.serviceAccount.existingServiceAccountNamestring​

Use an existing ServiceAccount instead of creating one If set, this takes precedence over create: true

Default: ""
replicated.supportBundle.rbac.role.createbool​

Create role (optional) for Support Bundle generation

Default: true
replicated.supportBundle.rbac.clusterRole.createbool​

Create ClusterRole (optional) for Support Bundle generation

Default: true
replicated.supportBundle.admissionPolicy.enabledbool​

Create a ValidatingAdmissionPolicy to restrict support bundle pod creation. Only effective when rbac.enabled

Default: true
replicated.supportBundle.credentials.existingSecretstring​

Use an existing Secret instead of creating one. The secret must contain the keys: 'license-id' and 'upload-domain'. If set, the chart will not create the 'support-bundle-credentials' secret.

Default: ""
replicated.supportBundle.logs.maxLinesint​

Set the max number of lines in the support bundle logs

Default: 10000
replicated.supportBundle.nodeSelectorobject​

Node selector for the support bundle pod. Falls back to global.nodeSelector.

Default: {}
replicated.supportBundle.tolerationslist​

Tolerations for the support bundle pod, to schedule it on tainted nodes. Concatenated with global.tolerations.

Default: []
replicated.supportBundle.affinityobject​

Affinity rules for the support bundle pod

Default: {}
replicated.supportBundle.podAnnotationsobject​

Annotations for the support bundle pod. The pod has no controller, so an eviction loses the bundle: set the annotation that your node autoscaler or descheduler honors to prevent voluntary eviction (for example karpenter.sh/do-not-disrupt: "true").

Default: {}
replicated.supportBundle.resourcesobject​

Resource requests/limits for the support bundle pod containers

Default
replicated:
supportBundle:
resources:
initContainer:
limits:
cpu: "500m"
memory: "4Gi"
requests:
cpu: "100m"
memory: "1Gi"
mainContainer:
limits:
cpu: "100m"
memory: "64Mi"
requests:
cpu: "10m"
memory: "32Mi"
replicated.supportBundle.resources.initContainer.requests.cpustring​

CPU request for the bundle generation init container

Default: "100m"
replicated.supportBundle.resources.initContainer.requests.memorystring​

Memory request for the bundle generation init container

Default: "1Gi"
replicated.supportBundle.resources.initContainer.limits.cpustring​

CPU limit for the bundle generation init container

Default: "500m"
replicated.supportBundle.resources.initContainer.limits.memorystring​

Memory limit for the bundle generation init container

Default: "4Gi"
replicated.supportBundle.resources.mainContainer.requests.cpustring​

CPU request for the HTTP server container

Default: "10m"
replicated.supportBundle.resources.mainContainer.requests.memorystring​

Memory request for the HTTP server container

Default: "32Mi"
replicated.supportBundle.resources.mainContainer.limits.cpustring​

CPU limit for the HTTP server container

Default: "100m"
replicated.supportBundle.resources.mainContainer.limits.memorystring​

Memory limit for the HTTP server container

Default: "64Mi"

ggscout​

ggscout.enabledbool​

Enable ggscout

Default: false
ggscout.inventory.config.gitguardian.endpointstring​

GitGuardian API endpoint (optional; if not specified, the current self-hosted GitGuardian instance URL will be used)

Default: "http://public-api:5051/exposed/v1"
ggscout.inventory.config.gitguardian.api_tokenstring​

GitGuardian API token for ggscout, please refer to ggscout Helm configuration

Default: ""
ggscout.inventory.config.sourcesobject​

For ggscout inventory sources configuration details, please refer to ggscout Helm chart examples

Default: {}
ggscout.caBundle.certsstring​

Specify CA certificates to inject (PEM format)

Default: ""
ggscout.caBundle.existingSecretstring​

Specify the secret containing the CA certificate to inject

Default: ""
ggscout.caBundle.existingSecretKeystring​

Specify secret key under the CA certificate is stored

Default: "ca.crt"

GGBridge​

GGBridge.enabledbool​

Enable GitGuardian Bridge, to scan sources reachable only from an isolated network. Read the dedicated documentation.

Default: false
GGBridge.basePublicDomainstring​

Public domain shared by every bridge server: the domain of the ggbridge server releases, so that a bridge is reachable at <subdomain>.<basePublicDomain>

Default: ""
GGBridge.baseInternalDomainstring​

Cluster DNS suffix of the namespace running the ggbridge server releases, for example ggbridge.svc.cluster.local. All the server releases must be installed in that single namespace

Default: ""
GGBridge.bridgeslist​

One entry per isolated network. subdomain must match the subdomain value of the ggbridge server release, and it names the proxy Service GitGuardian connects to, it must be unique. domains are the hostnames routed through that bridge.

Default: []

tls​

HTTPS TLS configuration You can manage the certificate manually or use Cert-Manager

tls.certManager.enabledbool​

Use Cert-Manager instead of a manual certificate

Default: false
tls.certManager.certificatesSecretstring​

Name of the created cert-manager Certificate object

Default: "gitguardian-certificate"
tls.certManager.certificatesNamespacestring​

Namespace where certificate will be created

Default: .Release.Namespace
tls.certManager.issuer.groupstring​

Cert-Manager Issuer Group

Default: "cert-manager.io"
tls.certManager.issuer.kindstring​

Cert-Manager Issuer Class

Default: "ClusterIssuer"
tls.certManager.issuer.namestring​

Cert-Manager Issuer Name

Default: "gitguardian"
tls.customCaobject​

Custom Certificate Authority certificate for integrations (VCS, notifiers, webhooks, ...)

tls.customCa.caCrtstring​

Certificates full chain in the PEM format Should preferably be set in existing secret (see: tls.customCa.existingSecret)

Default: ""
tls.customCa.existingSecretstring​

Existing secret containing certificates full chain in the PEM format

Default: ""
tls.customCa.existingSecretKeys.caCrtstring​

Key name of the certificate authority entry

Default: ""
tls.customCa.imageobject​

Custom CA (used for init-containers only) image configuration

Default
tls:
customCa:
image:
name: gitguardian/wolfi/bash
pullSecrets: []
registry: proxy.replicated.com/proxy/gitguardian/ghcr.io
tag: "5.3"
tls.customCa.image.registrystring​

Registry source to fetch the image Empty = from dockerhub

Default: "proxy.replicated.com/proxy/gitguardian/ghcr.io"
tls.customCa.image.namestring​

Image name

Default: "gitguardian/wolfi/bash"
tls.customCa.image.tagstring​

Image tag

Default: "5.3"
tls.customCa.image.pullSecretslist​

Image pullsecrets

Default: []
tls.customCa.resourcesobject​

Resource requests and limits for the init-custom-ca init container

Default
tls:
customCa:
resources:
limits:
memory: "128Mi"
requests:
cpu: "50m"
memory: "64Mi"
tls.clientAuthobject​

Client (end user) authentication

tls.clientAuth.enabledbool​

Enable client authentication. This is required for Common Access Card

Default: false
tls.clientAuth.modestring​

Set client authentication mode (one of enforce, audit). audit mode must be used for initial setup.

Default: "enforce"
tls.clientAuth.userRegexstring​

Regex to extract the unique user identifier from the certificate DN. You must use a capture group using parenthesis to catch the user ID. Default regex will match 117 here: CN=hubert.bonisseur.delabath.117,O=DGSE,C=FR

Default: "(?:.+,)?CN=[^.]+\\.[^.]+\\.[^.]+\\.(\\d+)(?:,.+)?"
tls.clientAuth.crtstring​

NGINX Server certificate (PEM) Should preferably be set in existing secret (see: tls.clientAuth.existingSecret)

Default: ""
tls.clientAuth.keystring​

NGINX Server key (PEM) Should preferably be set in existing secret (see: tls.clientAuth.existingSecret)

Default: ""
tls.clientAuth.caCrtstring​

NGINX Authority that validates user certificates (PEM) Should preferably be set in existing secret (see: tls.clientAuth.existingSecret)

Default: ""
tls.clientAuth.crlobject​

Nginx CRL usage for clientAuth

Default
tls:
clientAuth:
crl:
cron: "0 0 * * *"
persistence:
accessModes:
- ReadWriteMany
annotations: {}
labels: {}
size: "1Gi"
storageClass: ""
url: ""
tls.clientAuth.crl.urlstring​

Nginx CRL URL. Use a CRL instead of OCSP to check revokations status. Keep empty to use OCSP.

Default: ""
tls.clientAuth.crl.cronstring​

Nginx CRL refresh cron expression. This example means daily at 00:00

Default: "0 0 * * *"
tls.clientAuth.crl.persistence.storageClassstring​

storageClass to use for the CRL PVC

Default: ""
tls.clientAuth.crl.persistence.accessModeslist​

accessModes to use for the CRL PVC. Use only ReadWriteMany (HA) if available.

Default
tls:
clientAuth:
crl:
persistence:
accessModes:
- ReadWriteMany
tls.clientAuth.crl.persistence.sizestring​

PVC size

Default: "1Gi"
tls.clientAuth.crl.persistence.labelsobject​

PVC Labels

Default: {}
tls.clientAuth.crl.persistence.annotationsobject​

PVC Annotations

Default: {}
tls.clientAuth.existingSecretstring​

Existing secret name

Default: ""

networkPolicy​

networkPolicy.enabledbool​

Enable network policies for GIM namespace isolation. When enabled, ingress from outside the GIM namespace is denied by default, and only explicitly allowed namespaces can reach GIM pods. Start with mode=dryrun to verify your config, then switch to mode=enforce.

Default: false
networkPolicy.modestring​

Network policy mode dryrun: all policies are deployed but a temporary allow-all prevents any blocking — verify your config first enforce: the allow-all is removed and policies actively block unauthorized ingress

Default: "dryrun"
networkPolicy.allowedNamespaceslist​

List of namespace names allowed to reach GIM pods Include your ingress controller namespace, monitoring, and any other namespace that needs access. Example: ["ingress-nginx", "monitoring"]

Default: []
networkPolicy.extraPolicieslist​

Extra NetworkPolicy resources to create alongside the default ones Each entry is rendered as a full NetworkPolicy spec — full flexibility for custom rules.

Default: []

securityContext​

securityContextobject

Specify Pod Security Context.

Default
securityContext:
enabled: true
fsGroup: 65532
runAsGroup: 65532
runAsNonRoot: true
runAsUser: 65532

containerSecurityContext​

containerSecurityContextobject

Specify Container Security Context. Note: Enabled if securityContext.enabled is true.

Default
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
seccompProfile:
type: RuntimeDefault

podDisruptionBudget​

podDisruptionBudget.enabledbool​

Deploy PodDisruptionBudget globally. Note: Some Deployments have their own enabler (like apacheTika or secretEngine)

Default: true

ingress​

ingress.enabledbool​

Enable ingress resource

Default: false
ingress.routingApistring​

Routing API used to expose the application: - "ingress" -> Kubernetes Ingress v1 / IngressRoute / VirtualService / HTTPProxy / Route (templates/exposure/) - "gateway-api" -> Gateway API HTTPRoute + Gateway (templates/exposure-gateway-api/)

Default: "ingress"
ingress.controllerstring​

Data plane / ingress controller in use in the cluster. Supported: ingress-nginx / traefik / contour / aws_alb / openshift (Openshift Route) / istio. Drives which exposure/* template is picked (when routingApi=ingress) AND which Prometheus metric is used for HPA/KEDA latency-based autoscaling. With routingApi=gateway-api, only istio / contour / traefik are supported. "other" = any controller without a built-in integration (Kong, Cilium, …): generic routing, no built-in autoscaling query (use keda.triggers).

Default: "ingress-nginx"
ingress.pathstring​

The routing path to the GitGuardian instance. You may need to set this to '/*' in order to use this with ALB ingress controllers.

Default: "/"
ingress.pathTypestring​

Ingress Path type (only used when routingApi=ingress and experimental.ingressRoutes=false)

Default: "Prefix"
ingress.ingressClassNamestring​

IngressClass that will be used to implement the Ingress (only used when routingApi=ingress)

Default: ""
ingress.gatewayApiobject​

Gateway API configuration (only used when routingApi=gateway-api)

Default
ingress:
gatewayApi:
gateway:
create: false
httpListenerPort: 80
httpsListenerPort: 443
name: gitguardian
namespace: ""
gatewayClassName: ""
ingress.gatewayApi.gatewayClassNamestring​

GatewayClass name

Default: ""
ingress.gatewayApi.gateway.createbool​

Create the Gateway resource or use an existing one

Default: false
ingress.gatewayApi.gateway.namestring​

Name of the Gateway (created or existing)

Default: "gitguardian"
ingress.gatewayApi.gateway.namespacestring​

Namespace of the Gateway (empty = same as release namespace)

Default: ""
ingress.gatewayApi.gateway.httpListenerPortint​

HTTP listener port (only used when create=true)

Default: 80
ingress.gatewayApi.gateway.httpsListenerPortint​

HTTPS listener port (only used when create=true)

Default: 443
ingress.annotationsobject​

Additional annotations for the Ingress resource.

Default: {}
ingress.labelsobject​

Additional labels for the Ingress resource.

Default: {}
ingress.istio.revisionstring​

Istio revision, if any

Default: ""
ingress.istio.gateway.enabledbool​

Enable Istio gateway handling

Default: false
ingress.istio.gateway.namestring​

Istio Gateway name

Default: "{{.Release.Name}}-{{.Release.Namespace}}"
ingress.istio.gateway.namespacestring​

Istio Gateway namespace

Default: "istio-system"
ingress.istio.gateway.selectorstring​

Istio Gateway selector

Default: "ingressgateway"
ingress.tls.enabledbool​

Enable TLS configuration for the hostname defined at ingress.hostname parameter

Default: false
ingress.tls.existingSecretstring​

Existing secret containing TLS certificates

Default: ""
ingress.tls.crtstring​

TLS certificate in PEM format Should preferably be set in existing secret (see: ingress.tls.existingSecret)

Default: ""
ingress.tls.keystring​

TLS private key Should preferably be set in existing secret (see: ingress.tls.existingSecret)

Default: ""

observability​

observability.exportersobject​

Prometheus exporters configuration

observability.exporters.webAppExporter.enabledbool​

Enable GitGuardian Applicative metrics on Webapp pods and Celery Workers

Default: false
observability.exporters.statefulAppExporter.enabledbool​

Enable Stateful metrics on Applicative Exporter See: GitGuardian documentation

Default: false
observability.exporters.statefulAppExporter.resourcesobject​

Applicative Exporter resources

Default
observability:
exporters:
statefulAppExporter:
resources:
requests:
cpu: "100m"
memory: "500Mi"
observability.serviceMonitors.enabledbool​

Enable ServiceMonitors for Prometheus Operator Note: this requires to install Prometheus Operator (not included in this chart) See: Prometheus documentation

Default: false

rbac​

GitGuardian pods will use a limited role if enabled

Default
rbac:
enabled: true
rbac.enabledbool​

Creates a Role and bind it to GitGuardian ServiceAccount (see serviceAccount.name). See GitGuardian doc

Default: true

serviceAccount​

GitGuardian Pods are using this ServiceAccount

Default
serviceAccount:
annotations: {}
autoMount: true
create: true
labels: {}
name: gim
serviceAccount.createbool​

create the serviceAccount

Default: true
serviceAccount.namestring​

name of the serviceAccount (if serviceAccount.create is false, it must exists prior to chart deployment)

Default: "gim"

migration​

migration.nodeSelectorobject​
Default: {}
migration.tolerationslist​
Default: []
migration.labelsobject​
Default: {}
migration.podLabelsobject​
Default: {}
migration.podAnnotationsobject​
Default: {}
migration.preDeploy.resourcesobject​

Pre Deployment Job resources

Default
migration:
preDeploy:
resources:
limits:
memory: "10Gi"
requests:
cpu: "500m"
memory: "3Gi"
migration.postDeploy.resourcesobject​

Post Deployment Job resources

Default
migration:
postDeploy:
resources:
limits:
memory: "2Gi"
requests:
cpu: "500m"
memory: "1Gi"
migration.upgradePathCheck.resourcesobject​

upgradePathCheck Job resources

Default
migration:
upgradePathCheck:
resources:
limits:
memory: "1Gi"
requests:
cpu: "200m"
memory: "500Mi"
migration.serviceAccountobject​

GitGuardian migration pods are using this ServiceAccount

Default
migration:
serviceAccount:
annotations: {}
autoMount: true
create: true
labels: {}
name: gim-migration
migration.serviceAccount.createbool​

create the migration serviceAccount

Default: true
migration.serviceAccount.namestring​

name of the serviceAccount (if migration.serviceAccount.create is false, it must exists prior to chart deployment)

Default: "gim-migration"

hookMethod​

hookMethodstring

Hook Method (helm/argocd/none)

Default: "helm"

proxy​

HTTP(s) proxy configuration You can configure a proxy server for outgoing traffic from the application

proxy.httpProxyUrlstring​

Url of the proxy server to be used for HTTP requests

Default: ""
proxy.httpsProxyUrlstring​

Url of the proxy server to be used for HTTPS requests

Default: ""
proxy.noProxyHostNameslist​

List of host names through which the traffic should not go via the proxy

Default: []
proxy.existingSecretstring​

Secret used to store proxy urls (preferred method)

Default: ""
proxy.existingSecretKeys.httpProxyUrlstring​

Existing secret key where to store proxy http url

Default: ""
proxy.existingSecretKeys.httpsProxyUrlstring​

Existing secret key where to store proxy https url

Default: ""

logCollector​

logCollector.enabledbool​

Enable logCollector

Default: true
logCollector.emptyDir.sizeLimitstring​

sizeLimit for the logs emptyDir shared by every log collector sidecar. Empty falls back to global.emptyDir.sizeLimit.

Default: ""
logCollector.collectMigrationLogsbool​

Also collect logs from the pre-deploy and post-deploy hook Jobs. The collector is injected as a native sidecar (initContainer with restartPolicy: Always), which requires Kubernetes >= 1.29 so the hook Job can still complete. Leave disabled on older clusters.

Default: true
logCollector.image.registrystring​

Fluent-bit image registry

Default: "proxy.replicated.com/proxy/gitguardian/ghcr.io"
logCollector.image.namestring​

Fluent-bit image repository

Default: "gitguardian/wolfi/fluent-bit"
logCollector.image.tagstring​

Fluent-bit image tag

Default: "4.2.4"
logCollector.image.pullSecretslist​

Fluent-bit image pull secrets

Default: []
logCollector.envlist​

- Environment variables to be passed to logCollector

Default: []
logCollector.envFromlist​

- Environment variables to be passed to logCollector from configMaps or Secrets

Default: []
logCollector.pipelinesobject​

- Specify additional logCollector pipelines

Default: {}
logCollector.networkPolicyDEPRECATED​

Use networkPolicy.enabled instead. Will be removed in a future release.

Default
logCollector:
networkPolicy:
enabled: false
logCollector.resources.requests.cpustring​

Specify CPU request

Default: "10m"
logCollector.resources.requests.memorystring​

Specify Memory request

Default: "32Mi"
logCollector.supportBundle.sincestring​

lookback window for retrieving logs

Default: "24h"
logCollector.supportBundle.limitint​

Limit on number of logs to retrieve for each component (0 means disabled)

Default: 0
logCollector.supportBundle.logLevelstring​

Log levels for support-bundle Loki queries: info (all levels) or error (error

loki-minio​

loki-minio.image.registrystring​

MinIO image registry

Default: "proxy.replicated.com/proxy/gitguardian/ghcr.io"
loki-minio.image.repositorystring​

MinIO image repository

Default: "gitguardian/wolfi/minio"
loki-minio.image.tagstring​

MinIO image tag

Default: "0.20260717"
loki-minio.image.digeststring​

MinIO image digest

Default: ""
loki-minio.image.imagePullPolicystring​

MinIO image pull policy

Default: "IfNotPresent"
loki-minio.image.pullSecretslist​

MinIO image pull secrets

Default
loki-minio:
image:
pullSecrets:
- name: gim-replicated-registry
loki-minio.persistence.storageClassstring​

Storage class for MinIO

Default: ""
loki-minio.persistence.sizestring​

MinIO persistent storage size

Default: "20Gi"
loki-minio.podSecurityContext.fsGroupint​

Enable pod Security Context for MinIO

Default: 65532
loki-minio.containerSecurityContext.runAsUserint​

Enable container Security Context for MinIO

Default: 65532
loki-minio.containerSecurityContext.runAsGroupint​
Default: 65532
loki-minio.containerSecurityContext.seccompProfile.typestring​
Default: "RuntimeDefault"
loki-minio.resources.requests.cpustring​

Specify CPU request for MinIO

Default: "100m"
loki-minio.resources.requests.memorystring​

Specify Memory request for MinIO

Default: "512Mi"

loki​

loki.serviceAccount.createbool​

Specifies whether a ServiceAccount should be created

Default: true
loki.rbac.sccEnabledbool​

For OpenShift set sccEnabled to 'true' to use the SecurityContextConstraints.

Default: false
loki.imagePullSecretslist​

Loki image pull secrets

Default
loki:
imagePullSecrets:
- name: gim-replicated-registry
loki.loki.image.registrystring​

Loki image registry

Default: "proxy.replicated.com/proxy/gitguardian/ghcr.io"
loki.loki.image.repositorystring​

Loki image repository

Default: "gitguardian/wolfi/loki"
loki.loki.image.tagstring​

Loki image tag

Default: "3.7.7"
loki.loki.image.digeststring​

Loki image digest

Default: ""
loki.loki.image.pullPolicystring​

Loki image pull policy

Default: "IfNotPresent"
loki.loki.compactor.retention_delete_delaystring​

Delay after which chunks will be fully deleted during retention.

Default: "2h"
loki.loki.podSecurityContext.fsGroupint​
Default: 65532
loki.loki.podSecurityContext.runAsGroupint​
Default: 65532
loki.loki.podSecurityContext.runAsNonRootbool​
Default: true
loki.loki.podSecurityContext.runAsUserint​
Default: 65532
loki.loki.containerSecurityContext.runAsNonRootbool​
Default: true
loki.loki.containerSecurityContext.privilegedbool​
Default: false
loki.loki.containerSecurityContext.readOnlyRootFilesystembool​
Default: true
loki.loki.containerSecurityContext.allowPrivilegeEscalationbool​
Default: false
loki.loki.containerSecurityContext.capabilities.drop[0]string​
Default: "ALL"
loki.loki.containerSecurityContext.seccompProfile.typestring​
Default: "RuntimeDefault"
loki.singleBinary.replicasint​

Number of replicas

Default: 1
loki.singleBinary.extraEnv[0].namestring​
Default: "LOKI_ADDR"
loki.singleBinary.extraEnv[0].valuestring​
Default: "http://localhost:3100"
loki.singleBinary.persistence.sizestring​

Size of persistent disk

Default: "10Gi"
loki.singleBinary.persistence.storageClassstring​

Storage class to be used

Default: ""
loki.singleBinary.resources.requests.cpustring​

Specify CPU request for Loki

Default: "100m"
loki.singleBinary.resources.requests.memorystring​

Specify Memory request for Loki

Default: "256Mi"

clickhouse​

clickhouse.enabledbool​
Default: false
clickhouse.serverConfigobject​

Settings that vary with a customer's infrastructure sizing, unlike the GG-chosen guardrails defaults

Default
clickhouse:
serverConfig:
cacheMaxSize: ""
extraVars: {}
maxBytesRatioBeforeExternalGroupBy: 0.4
maxBytesRatioBeforeExternalSort: 0.4
maxConcurrentQueries: 32
maxExecutionTime: 55
maxServerMemoryUsageToRamRatio: 0.9
metadataDiskKeepFreeSpaceBytes: 1073741824
nonReplicatedDeduplicationWindow: 1000
partsToDelayInsert: 1000
partsToThrowInsert: 3000
clickhouse.serverConfig.cacheMaxSizestring​

Filesystem cache disk max size (object_cache.xml). "" auto-derives it from clickhouse.cache.size minus a 2Gi safety margin (recommended); set explicitly only to override that derivation. Unused (no need to set it, whatever clickhouse.cache.enabled is) when clickhouse.objectStorage.provider=local

Default: ""
clickhouse.serverConfig.metadataDiskKeepFreeSpaceBytesint​

Free space to reserve on the metadata disk (01-metadata-guardrails.xml), 1GiB by default: refuse writes below this threshold so it never fills to 100%

Default: 1073741824
clickhouse.serverConfig.extraVarsobject​

Extra env vars injected as-is into the clickhouse-server-config-defaults ConfigMap, for guardrails.xml/guardrails-users.xml from_env references you add yourself

Default: {}
clickhouse.objectStorageobject​

ClickHouse object storage backend, auto-generates configdFiles."00-object-storage.xml" instead of hand-writing it. clickhouse.backup.config is configured separately below (deliberately independent, see its own comment)

Default
clickhouse:
objectStorage:
azblob:
containerName: ""
credentialless: false
existingSecret: ""
storageAccountUrl: ""
gcs:
bucket: ""
endpoint: "https://storage.googleapis.com"
existingSecret: ""
prefix: ""
provider: ""
s3:
bucket: ""
credentialless: false
endpoint: ""
existingSecret: ""
forcePathStyle: false
prefix: ""
region: ""
clickhouse.objectStorage.providerstring​

"" disables generation (hand-write configdFiles."00-object-storage.xml" and backup.config yourself, as before), "local" runs on the metadata PVC only, no object storage at all

Default: ""
clickhouse.objectStorage.s3.endpointstring​

Required when provider=s3, e.g. https://mybucket.s3.<region>.amazonaws.com (a bucket-less regional endpoint if forcePathStyle=true, e.g. MinIO)

Default: ""
clickhouse.objectStorage.s3.bucketstring​

Required when provider=s3

Default: ""
clickhouse.objectStorage.s3.prefixstring​

Optional S3 key prefix within the bucket, e.g. to share it with another consumer, no leading/trailing slash needed

Default: ""
clickhouse.objectStorage.s3.regionstring​

Required, AWS S3 SigV4 signing needs it even when the endpoint doesn't encode it (e.g. MinIO)

Default: ""
clickhouse.objectStorage.s3.forcePathStylebool​

false = virtual-hosted style, endpoint must already embed the bucket as a subdomain (AWS default). Set true for MinIO/most S3-compatible stores, with a bucket-less endpoint

Default: false
clickhouse.objectStorage.s3.credentiallessbool​

true = IRSA (AWS), no static credentials. Requires the pod's ServiceAccount annotated via serviceAccount.annotations

Default: false
clickhouse.objectStorage.s3.existingSecretstring​

Secret with keys: access-key-id, secret-access-key. Required unless credentialless=true

Default: ""
clickhouse.objectStorage.gcs.endpointstring​

GCS has no native ClickHouse disk type, accessed via its S3-compatible HMAC interface

Default: "https://storage.googleapis.com"
clickhouse.objectStorage.gcs.bucketstring​

Required when provider=gcs

Default: ""
clickhouse.objectStorage.gcs.prefixstring​

Optional key prefix within the bucket, e.g. to share it with another consumer, no leading/trailing slash needed

Default: ""
clickhouse.objectStorage.gcs.existingSecretstring​

HMAC keys, Secret with keys: access-key-id, secret-access-key

Default: ""
clickhouse.objectStorage.azblob.storageAccountUrlstring​

Required when provider=azblob, e.g. https://myaccount.blob.core.windows.net

Default: ""
clickhouse.objectStorage.azblob.containerNamestring​

Required when provider=azblob

Default: ""
clickhouse.objectStorage.azblob.credentiallessbool​

true = Entra Workload ID (AKS), no static credentials. Requires the pod's ServiceAccount annotated (serviceAccount.annotations) and podLabels set for the mutating webhook

Default: false
clickhouse.objectStorage.azblob.existingSecretstring​

Secret with keys: account-name, account-key. Required unless credentialless=true

Default: ""
clickhouse.backup.enabledbool​

Runs the clickhouse-backup sidecar. Set to false to fully manage it yourself via clickhouse.sidecars instead

Default: true
clickhouse.backup.metricsobject​

Ship a ServiceMonitor for the backup sidecar's Prometheus metrics (requires Prometheus Operator CRDs)

Default
clickhouse:
backup:
metrics:
enabled: false
clickhouse.backup.objectStorageobject​

Backup destination, same structure as clickhouse.objectStorage but deliberately independent values (a backup must never target the bucket it protects; the chart fails the render when both sides name the same bucket/container on the same store). Auto-generates the provider env vars (S3_, GCS_, AZBLOB_*) in the clickhouse-backup-config ConfigMap and the credential env from existingSecret. Setting a provider also stops mounting the legacy clickhouse-backup-secret (a stale one would silently override the generated destination); put extra sensitive settings in backup.sidecar.extraEnvVarsSecret instead

Default
clickhouse:
backup:
objectStorage:
azblob:
containerName: ""
credentialless: false
existingSecret: ""
prefix: ""
storageAccountName: ""
gcs:
bucket: ""
credentialless: false
existingSecret: ""
prefix: ""
provider: ""
s3:
bucket: ""
credentialless: false
endpoint: ""
existingSecret: ""
forcePathStyle: false
prefix: ""
region: ""
clickhouse.backup.objectStorage.providerstring​

"" disables generation (hand-write provider settings via backup.config.extraVars and credentials via the clickhouse-backup-secret Secret, as before), or one of "s3", "gcs", "azblob"

Default: ""
clickhouse.backup.objectStorage.s3.endpointstring​

Optional bucket-less endpoint for S3-compatible stores (e.g. MinIO, http://minio:9000). Leave "" on AWS: clickhouse-backup derives the endpoint from region

Default: ""
clickhouse.backup.objectStorage.s3.bucketstring​

Required when provider=s3. Use a DIFFERENT bucket than clickhouse.objectStorage.s3.bucket

Default: ""
clickhouse.backup.objectStorage.s3.prefixstring​

Optional key prefix within the bucket; backup manifests land under <prefix>/metadata and object-disk blob copies under <prefix>/objects

Default: ""
clickhouse.backup.objectStorage.s3.regionstring​

Required when provider=s3

Default: ""
clickhouse.backup.objectStorage.s3.forcePathStylebool​

Required true whenever endpoint is set (the chart fails the render otherwise): custom endpoints almost never serve virtual-hosted bucket subdomains

Default: false
clickhouse.backup.objectStorage.s3.credentiallessbool​

true = IRSA (AWS), no static credentials, via the AWS SDK default chain: the ServiceAccount token (serviceAccount.annotations) is mounted into every container of the pod, this sidecar included

Default: false
clickhouse.backup.objectStorage.s3.existingSecretstring​

Secret with keys: access-key-id, secret-access-key (same shape as clickhouse.objectStorage.s3.existingSecret, but a different secret for a different bucket). Required unless credentialless=true

Default: ""
clickhouse.backup.objectStorage.gcs.bucketstring​

Required when provider=gcs. Use a DIFFERENT bucket than clickhouse.objectStorage.gcs.bucket

Default: ""
clickhouse.backup.objectStorage.gcs.prefixstring​

Optional key prefix within the bucket; backup manifests land under <prefix>/metadata and object-disk blob copies under <prefix>/objects

Default: ""
clickhouse.backup.objectStorage.gcs.credentiallessbool​

true = GKE Workload Identity (Application Default Credentials), no static key. Unlike clickhouse.objectStorage.gcs (S3-HMAC only), the backup sidecar speaks native GCS via the Google SDK

Default: false
clickhouse.backup.objectStorage.gcs.existingSecretstring​

Secret with key: credentials-json (a GCP service-account JSON key; never put it in a ConfigMap/values file). Required unless credentialless=true

Default: ""
clickhouse.backup.objectStorage.azblob.storageAccountNamestring​

Required when provider=azblob, the storage account NAME (clickhouse-backup takes the name, not the URL clickhouse.objectStorage.azblob uses)

Default: ""
clickhouse.backup.objectStorage.azblob.containerNamestring​

Required when provider=azblob. Use a DIFFERENT container than clickhouse.objectStorage.azblob (ideally a different storage account)

Default: ""
clickhouse.backup.objectStorage.azblob.prefixstring​

Optional key prefix within the container; backup manifests land under <prefix>/metadata and object-disk blob copies under <prefix>/objects

Default: ""
clickhouse.backup.objectStorage.azblob.credentiallessbool​

true = Entra Workload ID (AKS), no static credentials: the AKS mutating webhook injects the federated token into every container of the pod, this sidecar included

Default: false
clickhouse.backup.objectStorage.azblob.existingSecretstring​

Secret with key: account-key (a secret shaped like clickhouse.objectStorage.azblob's, with an extra account-name key, works as-is: only account-key is read). Required unless credentialless=true

Default: ""
clickhouse.backup.configobject​

clickhouse-backup sidecar's settings, deliberately independent from clickhouse.objectStorage (a backup must never default to the same bucket as the data it protects)

Default
clickhouse:
backup:
config:
allowEmptyBackups: true
backupsToKeepRemote: 7
downloadConcurrency: 2
extraVars: {}
logLevel: info
rebaseBeforeRemoveOldRemote: true
rebaseConcurrency: 2
remoteStorage: s3
s3Concurrency: 2
uploadConcurrency: 2
watchSchedules: "name=ch-bkp,full=0 2 * * 0,increment=0 2 * * *,full_type=rebase,delete_previous_cycle=false"
clickhouse.backup.config.remoteStoragestring​

Only used when backup.objectStorage.provider is "" (otherwise derived from the provider)

Default: "s3"
clickhouse.backup.config.watchSchedulesstring​

Full backup Sunday 2am (server-side rebase after the first, no re-upload), daily increment at 2am, mutually exclusive with WATCH_INTERVAL/FULL_INTERVAL, see clickhouse-backup#1354

Default: "name=ch-bkp,full=0 2 * * 0,increment=0 2 * * *,full_type=rebase,delete_previous_cycle=false"
clickhouse.backup.config.rebaseBeforeRemoveOldRemotebool​

Without this, backupsToKeepRemote isn't a hard cap, old chains stay if a newer increment depends on them

Default: true
clickhouse.backup.config.allowEmptyBackupsbool​

Without this, a first install crash-loops the sidecar, no tables yet is treated as a fatal error

Default: true
clickhouse.backup.config.uploadConcurrencyint​

Pins concurrency instead of clickhouse-backup's own auto-calc, which is NumCPU()-based and not cgroup-aware

Default: 2
clickhouse.backup.config.extraVarsobject​

Escape hatch for any NON-SENSITIVE clickhouse-backup setting (github.com/Altinity/clickhouse-backup) the chart doesn't model, e.g. S3_STORAGE_CLASS. Renders into a ConfigMap: credential keys (S3_ACCESS_KEY, GCS_CREDENTIALS_JSON, AZBLOB_ACCOUNT_KEY, ...) are refused, they belong in a Secret. Provider basics (bucket, region, paths) are better set via backup.objectStorage above; a key it owns fails the render here. Use a DIFFERENT bucket/account than clickhouse.objectStorage

Default: {}
clickhouse.backup.sidecar.image.registrystring​
Default: "proxy.replicated.com/proxy/gitguardian/513715405986.dkr.ecr.us-west-2.amazonaws.com"
clickhouse.backup.sidecar.image.repositorystring​
Default: "cgr.dev/gitguardian.com/clickhouse-backup"
clickhouse.backup.sidecar.image.tagstring​
Default: "2.8.1"
clickhouse.backup.sidecar.resources.requests.cpustring​
Default: "100m"
clickhouse.backup.sidecar.resources.requests.memorystring​
Default: "128Mi"
clickhouse.backup.sidecar.resources.limits.cpustring​
Default: "1"
clickhouse.backup.sidecar.resources.limits.memorystring​
Default: "1Gi"
clickhouse.backup.sidecar.containerSecurityContext.enabledbool​
Default: true
clickhouse.backup.sidecar.extraEnvVarslist​

Additive env vars for the backup sidecar, to add one without redeclaring the hardcoded ones (CLICKHOUSE_PASSWORD, API_USERNAME, ...)

Default: []
clickhouse.backup.sidecar.extraVolumeMountslist​

Extra volumeMounts for the backup sidecar, e.g. to mount a volume declared via clickhouse.extraVolumes

Default: []
clickhouse.commonAnnotationsobject​
Default: {}
clickhouse.image.registrystring​
Default: "proxy.replicated.com/proxy/gitguardian/513715405986.dkr.ecr.us-west-2.amazonaws.com"
clickhouse.image.repositorystring​
Default: "cgr.dev/gitguardian.com/clickhouse-iamguarded"
clickhouse.image.tagstring​
Default: "26.4"
clickhouse.image.pullSecrets[0].namestring​
Default: "gim-replicated-registry"
clickhouse.configdFilesobject​

Add your own config.d XML files here, or reuse a chart-generated key (guardrails.xml, object-cache.xml, 09-log-tables.xml, 00-object-storage.xml) to override it entirely

Default: {}
clickhouse.usersdFilesobject​

Add your own users.d XML files here, or reuse the chart-generated key (guardrails-users.xml) to override it entirely

Default: {}
clickhouse.initdbScripts."00-create-gim-db.sql"string​
Default
"CREATE DATABASE IF NOT EXISTS gim;\n"
clickhouse.resourcesobject​

Recommended: keep requests equal to limits to prevent over-commitment on the node. See the ClickHouse sizing guide: https://docs.gitguardian.com/self-hosting/management/infrastructure-management/clickhouse/sizing

Default
clickhouse:
resources:
limits:
cpu: 4
memory: "16Gi"
requests:
cpu: 4
memory: "16Gi"
clickhouse.podSecurityContext.enabledbool​
Default: true
clickhouse.podSecurityContext.runAsUserint​
Default: 1001
clickhouse.podSecurityContext.runAsGroupint​
Default: 1001
clickhouse.podSecurityContext.runAsNonRootbool​
Default: true
clickhouse.podSecurityContext.seccompProfile.typestring​
Default: "RuntimeDefault"
clickhouse.containerSecurityContext.enabledbool​
Default: true
clickhouse.podLabelsobject​
Default: {}
clickhouse.podAnnotationsobject​
Default: {}
clickhouse.nodeSelectorobject​

Recommended for production: pin ClickHouse to a dedicated, on-demand node pool. See: https://docs.gitguardian.com/self-hosting/management/infrastructure-management/clickhouse/sizing

Default: {}
clickhouse.tolerationslist​

Must match a taint on the dedicated node pool selected via nodeSelector above

Default: []
clickhouse.priorityClassNamestring​

Recommended for production: protects ClickHouse from preemption/eviction under node pressure; the PriorityClass must already exist in-cluster

Default: ""
clickhouse.extraEnvVarslist​
Default: []
clickhouse.extraVolumeMountslist​

Use this for extra volumes beyond persistence/cache, e.g. a customer-managed cache PVC when clickhouse.cache.enabled=false

Default: []
clickhouse.extraVolumeClaimTemplateslist​

Use this for extra PVC templates beyond persistence/cache, e.g. a customer-managed cache PVC when clickhouse.cache.enabled=false

Default: []
clickhouse.cache.enabledbool​

Filesystem cache PVC for the object_cache disk, set to false to fully manage yourself

Default: true
clickhouse.cache.storageClassstring​

Recommended for production: use an SSD/NVMe-backed class, same as clickhouse.persistence.storageClass. See: https://docs.gitguardian.com/self-hosting/management/infrastructure-management/clickhouse/sizing

Default: ""
clickhouse.cache.accessModes[0]string​
Default: "ReadWriteOnce"
clickhouse.cache.sizestring​
Default: "50Gi"
clickhouse.sidecarslist​

Extra sidecars, or the clickhouse-backup one entirely when clickhouse.backup.enabled=false

Default: []
clickhouse.persistence.enabledbool​
Default: true
clickhouse.persistence.storageClassstring​
Default: ""
clickhouse.persistence.accessModes[0]string​
Default: "ReadWriteOnce"
clickhouse.persistence.sizestring​
Default: "20Gi"
clickhouse.serviceAccount.createbool​
Default: true
clickhouse.serviceAccount.namestring​
Default: "clickhouse"
clickhouse.serviceAccount.annotationsobject​
Default: {}
clickhouse.metricsobject​

Ship a ServiceMonitor for ClickHouse's own Prometheus metrics (requires Prometheus Operator CRDs, requires metrics.enabled)

Default
clickhouse:
metrics:
enabled: false
serviceMonitor:
enabled: false

experimental​

Experimental features

experimental.tinibool​

Enable tini to terminate zombie processes on workers

Default: true
experimental.ingressRoutesbool​

Use Ingress routes instead of legacy nginx ⚠️ WARNING: This feature is deprecated and should not be used.

Default: false