Skip to content

Configuration reference

Every Helm value maps to an environment variable on the operator container (set by the chart’s Deployment template). You normally configure via Helm values; the env column is useful for local runs and for understanding the pod spec.

Helm valueEnv varDefaultMeaning
watchNamespacesSTEPSCALE_WATCH_NAMESPACES"" (all)Comma-separated namespaces to watch. Empty watches all namespaces. Example: prod,api.
intervalSecondsSTEPSCALE_INTERVAL_SECONDS300Seconds between reconcile ticks. Also drives the leader-lease duration (3× this value).
replicaCount-1Operator replicas. 2+ is safe with leader election (only the leader mutates).
Helm valueEnv varDefaultMeaning
metrics.prometheusUrlSTEPSCALE_PROMETHEUS_URL""Prometheus base URL. Set it for real history backfill; empty falls back to slow HPA-status accumulation. Example: http://prometheus.monitoring.svc:9090.
metrics.windowDaysSTEPSCALE_METRICS_WINDOW_DAYS14Days of history to backfill per workload from Prometheus.
metrics.stepSecondsSTEPSCALE_METRICS_STEP_SECONDS300Sampling step (seconds) for Prometheus history queries.
metrics.promqlCpuSTEPSCALE_PROMQL_CPU(built-in)PromQL override for CPU utilization. Supports {ns} / {deploy} placeholders. Defaults to a kube-state-metrics + cAdvisor query.
metrics.promqlReplicasSTEPSCALE_PROMQL_REPLICAS(built-in)PromQL override for replica count.
metrics.promqlQueueSTEPSCALE_PROMQL_QUEUE(built-in)PromQL override for queue depth (queue-based workloads).
Helm valueEnv varDefaultMeaning
safety.probationWindowMinutesSTEPSCALE_PROBATION_WINDOW_MINUTES45Minutes an applied change stays on probation before the verify pass judges its health. Clamped to a minimum of 1.
safety.rollbackEnabledSTEPSCALE_ROLLBACK_ENABLEDtrueAuto-revert a probationary change when health degrades. When false, a degraded change is held in degraded for re-judgement instead of reverted.
safety.healthCpuMarginSTEPSCALE_HEALTH_CPU_MARGIN0.15Headroom over the target CPU fraction tolerated before a change is judged degraded.
Helm valueEnv varDefaultMeaning
leaderElection.enabledSTEPSCALE_ENABLE_LEADER_ELECTIONtrueElect a single leader so replicaCount: 2+ never double-applies; only the leader mutates.
leaderElection.leaseNameSTEPSCALE_LEASE_NAMEstepscale-autoscaler-leaderName of the coordination.k8s.io Lease.
leaderElection.leaseNamespaceSTEPSCALE_LEASE_NAMESPACE"" (release ns)Namespace for the Lease; empty uses the operator’s own namespace.

Off by default. Requires Prometheus history and a genuinely periodic workload; flat or random workloads are left reactive.

Helm valueEnv varDefaultMeaning
forecasting.enabledSTEPSCALE_ENABLE_FORECASTINGfalseForecast recurring peaks and pre-scale the floor ahead of them.
forecasting.minHistoryDaysSTEPSCALE_FORECAST_MIN_HISTORY_DAYS14Minimum days of history before a forecast is attempted (needs ≥ 2 weekly cycles).
forecasting.binMinutesSTEPSCALE_FORECAST_BIN_MINUTES60Seasonal grid bin size in minutes (168 hourly bins per week by default).
forecasting.quantileSTEPSCALE_FORECAST_QUANTILE0.95Quantile of per-bin demand used for the forecast (safety headroom). Clamped to [0, 1].
forecasting.periodicityThresholdSTEPSCALE_PERIODICITY_THRESHOLD0.3Minimum lag-24h/7d autocorrelation for a workload to count as periodic.
forecasting.prescaleLeadMinutesSTEPSCALE_PRESCALE_LEAD_MINUTES10Minutes of head start to raise the floor before each forecasted peak.
Helm valueEnv varDefaultMeaning
llm.providerSTEPSCALE_LLM_PROVIDERopenaiopenai, anthropic, or none (deterministic rules-only).
llm.modelSTEPSCALE_LLM_MODELgpt-4o-miniModel name passed to the provider.
llm.apiKeyOPENAI_API_KEY (see note)""Your API key. Setting it makes the chart create a Secret.
llm.existingSecret-""Name of an existing Secret holding the key under apiKey, used instead of llm.apiKey.

See Licensing for the model and lifecycle. Values:

Helm valueEnv varDefaultMeaning
license.publicKeySTEPSCALE_LICENSE_PUBKEY""base64-encoded 32-byte ed25519 public key that verifies the license offline. Required to apply.
license.payload(via Secret)""The license JSON payload. Setting it (with signature) makes the chart create the license Secret.
license.signature(via Secret)""The detached ed25519 signature for the payload.
license.existingSecretSTEPSCALE_LICENSE_SECRET (derived)""Name of an existing Secret holding license + signature keys.
license.gracePeriodDaysSTEPSCALE_LICENSE_GRACE_DAYS14Days past expiry to keep applying before degrading.
Helm valueDefaultMeaning
image.repositoryghcr.io/stepscale/stepscale-autoscalerImage repository (override for a mirrored registry).
image.tag"" (chart appVersion)Image tag.
image.pullPolicyIfNotPresentImage pull policy.
serviceAccount.namestepscale-autoscalerService account the operator runs as.
resources.requestscpu: 50m, memory: 64MiResource requests.
resources.limitscpu: 250m, memory: 128MiResource limits.

A dedicated recommend-only flag is part of the run-mode work being finalized in a later release. Today, to run the operator as a pure advisor, either omit the license (the operator then runs analysis-only and will not apply) or simply never approve recommendations. See Operating §7.4 for current run-mode guidance.