Configuration Reference

Values

Key

Type

Default

Description

nameOverride

string

""

Unique identifier of SuperSONIC instance (equal to release name by default)

serverLoadMetric

string

""

Prometheus query used by the KEDA autoscaler and, per healthy replica, by Envoy’s prometheus-based rate limiter. Empty selects the default metric: the number of replicas the current in-flight work needs (see the configuration guide). A custom query is used verbatim.

serverLoadThreshold

float

1.5

Scaling threshold: KEDA scales to ceil(metric / threshold). Set fractions from a values file or –set-json. Remove a leftover serverLoadThreshold: 100 when upgrading.

serverLoadRateInterval

string

"30s"

rate() window of the default metric; keep it at or above 4x the Prometheus scrape interval.

serverAdmissionThreshold

float

3

Threshold of Envoy’s prometheus-based rate limiter (the scaling metric per healthy replica, or a custom serverLoadMetric verbatim). Envoy reads it at startup.

scaleFromZero

object

{"admissionImage":"python:3.14-slim","enabled":false,"holdMinReplicasSeconds":300,"readyTimeoutSeconds":300}

On RepositoryIndex, scale Triton to at least max(1, keda.minReplicaCount) replicas and return the index only after Envoy has a healthy Triton upstream. Requires keda.enabled and envoy.enabled.

scaleFromZero.enabled

bool

false

Enable scale from zero

scaleFromZero.readyTimeoutSeconds

int

300

Seconds to wait for a healthy Triton upstream before rejecting RepositoryIndex

scaleFromZero.holdMinReplicasSeconds

int

300

Seconds to keep KEDA minReplicaCount at the wake target after the last RepositoryIndex is answered (the hold is refreshed once the server is ready, so it is measured from readiness rather than from the wake request). Must be >= readyTimeoutSeconds (validated at render time), otherwise KEDA can scale the waking pod back to zero before RepositoryIndex is answered.

scaleFromZero.admissionImage

string

"python:3.14-slim"

Image for the admission sidecar on the Envoy pod

triton.replicas

int

1

Number of Triton server instances. Unused when scaleFromZero.enabled is true.

triton.image

string

"nvcr.io/nvidia/tritonserver:26.08-py3-min"

Docker image for the Triton server

triton.command

list

["/bin/sh","-c"]

Command and arguments to run in Triton container

triton.args[0]

string

"/opt/tritonserver/bin/tritonserver \\\n--model-repository=/tmp/ \\\n--log-verbose=0 \\\n--exit-timeout-secs=60\n"

triton.resources

object

{"limits":{"cpu":1,"memory":"2G"},"requests":{"cpu":1,"memory":"2G"}}

Resource limits and requests for each Triton instance. You can add necessary GPU request here.

triton.annotations

object

{}

Annotations for Triton pods

triton.nodeSelector

object

{}

Node selector for Triton pods

triton.tolerations

list

[]

Tolerations for Triton pods

triton.affinity

object

{}

Affinity rules for Triton pods - another way to request GPUs

triton.modelRepository

object

{"enabled":false,"mountPath":""}

Model repository configuration

triton.modelRepository.mountPath

string

""

Model repository mount path

triton.service.labels

object

{}

triton.service.annotations

object

{}

triton.service.ports

list

[{"name":"http","port":8000,"protocol":"TCP","targetPort":8000},{"name":"grpc","port":8001,"protocol":"TCP","targetPort":8001},{"name":"metrics","port":8002,"protocol":"TCP","targetPort":8002}]

Ports for communication with Triton servers. Inference sent directly to them bypasses Envoy and the scaling metric.

triton.readinessProbe

object

{"command":["/bin/sh","-c","curl -sf http://localhost:8000/v2/health/ready > /dev/null && [ ! -f /tmp/shutdown ]"],"failureThreshold":10,"initialDelaySeconds":10,"periodSeconds":10,"reset":false,"successThreshold":1,"timeoutSeconds":15}

Custom readiness probe configuration

triton.readinessProbe.reset

bool

false

If true, will reset settings to k8s defaults (other readinessProbe settings will be ignored)

triton.startupProbe

object

{"failureThreshold":24,"httpGet":{"path":"/v2/health/ready","port":"http"},"initialDelaySeconds":0,"periodSeconds":10,"reset":false,"timeoutSeconds":15}

Custom startup probe configuration

triton.startupProbe.reset

bool

false

If true, will reset settings to k8s defaults (other startupProbe settings will be ignored)

envoy.enabled

bool

true

Enable Envoy Proxy

envoy.replicas

int

1

Number of Envoy Proxy pods in Deployment

envoy.image

string

"envoyproxy/envoy:v1.39.1"

Envoy Proxy Docker image

envoy.args

list

["--config-path","/etc/envoy/envoy.yaml","--log-level","info","--log-path","/dev/stdout"]

Arguments for Envoy

envoy.external_config

object

{"configmap_key":"","configmap_name":"","load_from_configmap":false}

External Envoy configuration settings

envoy.external_config.load_from_configmap

bool

false

If true, load Envoy configuration from an external ConfigMap instead of generating it dynamically

envoy.external_config.configmap_name

string

""

Name of the external ConfigMap containing the Envoy configuration

envoy.external_config.configmap_key

string

""

Key name in the external ConfigMap (defaults to “envoy.yaml”)

envoy.resources

object

{"limits":{"cpu":8,"memory":"4G"},"requests":{"cpu":1,"memory":"2G"}}

Resource requests and limits for Envoy Proxy. Note: an Envoy Proxy with too many connections might run out of CPU

envoy.annotations

object

{}

Annotations for Envoy pods

envoy.nodeSelector

object

{}

Node selector for Envoy pods

envoy.tolerations

list

[]

Tolerations for Envoy pods

envoy.service.type

string

"ClusterIP"

This is the client-facing endpoint. In order to be able to connect to it, either enable ingress, or use type: LoadBalancer.

envoy.service.ports

list

[{"name":"grpc","port":8001,"targetPort":8001},{"name":"admin","port":9901,"targetPort":9901}]

Envoy Service ports

envoy.ingress

object

{"annotations":{},"enabled":false,"hostName":"","ingressClassName":""}

Ingress configuration for Envoy

envoy.grpc_route_timeout

string

"0s"

Timeout for gRPC route in Envoy; disabled by default (0s), preventing Envoy from closing connections too early.

envoy.rate_limiter.listener_level

object

{"enabled":false,"fill_interval":"12s","max_tokens":5,"tokens_per_fill":1}

This rate limiter explicitly controls the number of client connections to the Envoy Proxy.

envoy.rate_limiter.listener_level.enabled

bool

false

Enable rate limiter

envoy.rate_limiter.listener_level.max_tokens

int

5

Maximum number of simultaneous connections to the Envoy Proxy. Each new connection takes a “token” from the “bucket” which initially contains max_tokens tokens.

envoy.rate_limiter.listener_level.tokens_per_fill

int

1

tokens_per_fill tokens are added to the “bucket” every fill_interval, allowing new connections to be established.

envoy.rate_limiter.listener_level.fill_interval

string

"12s"

For example, adding a new token every 12 seconds allows 5 new connections every minute.

envoy.rate_limiter.prometheus_based

object

{"enabled":false,"luaConfig":"cfg/envoy-filter.lua"}

This rate limiter rejects new RepositoryIndex requests when the scaling metric per healthy Triton replica exceeds serverAdmissionThreshold.

envoy.rate_limiter.prometheus_based.enabled

bool

false

Enable rate limiter

envoy.rate_limiter.prometheus_based.luaConfig

string

"cfg/envoy-filter.lua"

Envoy Lua filter (prometheus rate limiter and scaleFromZero)

envoy.loadBalancerPolicy

string

"LEAST_REQUEST"

Envoy load balancer policy. Options: ROUND_ROBIN, LEAST_REQUEST, RING_HASH, RANDOM, MAGLEV

envoy.auth.enabled

bool

false

Enable authentication in Envoy proxy

envoy.auth.jwt_issuer

string

""

envoy.auth.jwt_remote_jwks_uri

string

""

envoy.auth.audiences

list

[]

envoy.auth.url

string

""

envoy.auth.port

int

443

keda.enabled

bool

false

Enable autoscaling (requires Prometheus). KEDA scales Triton on serverLoadMetric against serverLoadThreshold.

keda.metricType

string

""

How the HPA interprets the metric. Empty selects AverageValue (fleet-wide) for the default metric and Value (per replica) for a custom serverLoadMetric.

keda.minReplicaCount

int

1

Minimum and maximum number of Triton servers. Set minReplicaCount to 0 to release all resources when idle (requires scaleFromZero.enabled). With scaleFromZero, a RepositoryIndex request scales Triton to max(1, minReplicaCount), and upgrades keep the live ScaledObject minReplicaCount.

keda.maxReplicaCount

int

2

keda.pollingInterval

int

10

Seconds between KEDA activity checks, which govern scaling to and from zero (scaling between 1 and maxReplicaCount follows the HPA sync period). 0 falls back to 10.

keda.cooldownPeriod

int

300

Seconds the metric must stay at or below activationThreshold before KEDA scales to zero. An empty query result counts as no load.

keda.activationThreshold

float

0

Metric value at or below which the trigger is inactive for scaling to zero; about 0.1 ignores probe traffic through Envoy.

keda.zeroIdleReplicas

bool

false

If set to true, KEDA sets idleReplicaCount to 0. This cannot scale from 0 back to 1 when the load metric comes from Triton. Use scaleFromZero.enabled with keda.minReplicaCount: 0 instead.

keda.scaleUp.stabilizationWindowSeconds

int

0

HPA scale-up stabilization window in seconds (0 reacts to the latest evaluation)

keda.scaleUp.periodSeconds

int

15

Scale-up rate-limit period in seconds

keda.scaleUp.stepsize

int

2

Replicas added per period

keda.scaleDown.stabilizationWindowSeconds

int

90

HPA scale-down stabilization window in seconds

keda.scaleDown.periodSeconds

int

15

Scale-down rate-limit period in seconds

keda.scaleDown.stepsize

int

2

Replicas removed per period

prometheus.external.enabled

bool

false

Enable external Prometheus instance. If true, Prometheus parameters outside of prometheus.external will be ignored.

prometheus.external.url

string

""

External Prometheus server url

prometheus.external.port

int

443

External Prometheus server port number

prometheus.external.scheme

string

"https"

Specify whether external Prometheus endpoint is exposed as http or https

prometheus.enabled

bool

false

Enable or disable custom Prometheus deployment

prometheus.server.extraFlags[0]

string

"web.enable-remote-write-receiver"

prometheus.server.useExistingClusterRoleName

string

"supersonic-prometheus-role"

prometheus.server.releaseNamespace

bool

true

prometheus.server.persistentVolume.enabled

bool

false

prometheus.server.resources.requests.cpu

string

"500m"

prometheus.server.resources.requests.memory

string

"512Mi"

prometheus.server.resources.limits.cpu

int

1

prometheus.server.resources.limits.memory

string

"1Gi"

prometheus.server.retention

string

"15d"

prometheus.server.global.scrape_interval

string

"5s"

prometheus.server.global.evaluation_interval

string

"5s"

prometheus.server.service.enabled

bool

true

prometheus.server.service.servicePort

int

9090

prometheus.server.configMapOverrideName

string

"prometheus-config"

prometheus.server.ingress

object

{"annotations":{},"enabled":false,"hostName":"","hosts":[],"ingressClassName":"","tls":[{"hosts":[]}]}

Ingress configuration for Prometheus

prometheus.server.ingress.hostName

string

""

If this parameter is set in values.yaml, the hosts and tls parameters can be omitted, as they will be set by the installer plugin

prometheus.serviceAccounts.server.create

bool

false

prometheus.serviceAccounts.server.name

string

"supersonic-prometheus-sa"

prometheus.rbac.create

bool

false

prometheus.alertmanager.enabled

bool

false

prometheus.pushgateway.enabled

bool

false

prometheus.kube-state-metrics.enabled

bool

false

prometheus.prometheus-node-exporter.enabled

bool

false

prometheus.prometheus-pushgateway.enabled

bool

false

prometheus.configmapReload.prometheus.enabled

bool

false

grafana.enabled

bool

false

Enable Grafana

grafana.adminUser

string

"admin"

grafana.adminPassword

string

"admin"

grafana.persistence.enabled

bool

false

grafana.rbac.create

bool

false

grafana.serviceAccount.create

bool

false

grafana.datasources

object

{"datasources.yaml":{"apiVersion":1,"datasources":[{"access":"proxy","isDefault":true,"jsonData":{"timeInterval":"5s","tlsSkipVerify":true},"name":"prometheus","type":"prometheus","url":"http://supersonic-prometheus-server:9090"}]}}

Grafana datasources configuration

grafana.dashboardProviders.”dashboardproviders.yaml”.apiVersion

int

1

grafana.dashboardProviders.”dashboardproviders.yaml”.providers[0].name

string

"default"

grafana.dashboardProviders.”dashboardproviders.yaml”.providers[0].orgId

int

1

grafana.dashboardProviders.”dashboardproviders.yaml”.providers[0].folder

string

""

grafana.dashboardProviders.”dashboardproviders.yaml”.providers[0].type

string

"file"

grafana.dashboardProviders.”dashboardproviders.yaml”.providers[0].disableDeletion

bool

false

grafana.dashboardProviders.”dashboardproviders.yaml”.providers[0].editable

bool

true

grafana.dashboardProviders.”dashboardproviders.yaml”.providers[0].options.path

string

"/var/lib/grafana/dashboards/default"

grafana.dashboardsConfigMaps.default

string

"supersonic-grafana-default-dashboard"

grafana.”grafana.ini”.auth.disable_login_form

bool

true

grafana.”grafana.ini”.”auth.anonymous”.enabled

bool

true

grafana.”grafana.ini”.”auth.anonymous”.org_role

string

"Admin"

grafana.”grafana.ini”.dashboards.default_home_dashboard_path

string

"/var/lib/grafana/dashboards/default/default.json"

grafana.”grafana.ini”.server.root_url

string

""

grafana.resources.limits.cpu

int

1

grafana.resources.limits.memory

string

"1Gi"

grafana.resources.requests.cpu

string

"100m"

grafana.resources.requests.memory

string

"128Mi"

grafana.ingress

object

{"annotations":{},"enabled":false,"hostName":"","hosts":[],"ingressClassName":"","path":"/","pathType":"ImplementationSpecific","tls":[{"hosts":[]}]}

Ingress configuration for Grafana

grafana.ingress.hostName

string

""

If this parameter is set in values.yaml, the hosts and tls parameters can be omitted, as they will be set by the installer plugin

metricsCollector.enabled

bool

false

Enable metrics collector

metricsCollector.image

string

"python:3.14-slim"

Image for the metrics collector

metricsCollector.host

string

"0.0.0.0"

Host and port for metrics collector

metricsCollector.port

int

8003

metricsCollector.resources

object

{"limits":{"cpu":1,"memory":"1Gi"},"requests":{"cpu":"500m","memory":"512Mi"}}

Resource limits and requests for metrics collector

metricsCollector.service

object

{"port":8003,"type":"ClusterIP"}

Add service

metricsCollector.ingress

object

{"annotations":{},"enabled":false,"hostName":"","ingressClassName":""}

Ingress configuration for metrics collector