StormForge Agent releases
To install the latest version, see the Upgrade topic.
For past releases, see Previous StormForge Agent and Applier releases.
Version 3.1.1
Fixed
- OpenShift pod scheduling: The consolidated v3 chart no longer applies a hardcoded pod
securityContext(fsGroup/runAsGroup/runAsUser: 65534) whenopenshift=trueandcommonPodSecurityContextis unset.
Version 3.1.0
The agent parameter group is renamed to clusterAgent, and exporter to forwarder. The deprecated agent.* and exporter.* values still work, overriding their clusterAgent.* and forwarder.* equivalents, and will be removed in a future major version. Update your values when convenient.
Added
- JVM old-gen live-set metric: The forwarder (formerly
exporter) now collectsjvm_memory_pool_collection_used_bytesfor live data size transforms. - Chart
deepOverridehelper: Explicit-zero-preserving merge helper so intentional0values in overrides are no longer dropped.
Changed
exportercomponent renamed toforwarder: TheexporterHelm values key is renamed toforwarder. The old key is deprecated but still works (see the note above).agentcomponent renamed tocluster-agent: TheagentHelm values key is renamed toclusterAgent, and the agent config file tocluster-agent.yml. The old key is deprecated but still works (see the note above); the config file is passed via--config, so no action is needed for it.- Webhook injection scope narrowed to the applier’s own pods: The mutating webhook exclusion no longer covers the entire release namespace. It now skips only pods labeled
webhook.stormforge.io/skip(which the applier carries). As a result:- StormForge’s own workloads in the release namespace become eligible for webhook-based apply.
- The release namespace may now appear in
allowNamespaces. - Helm 4 server-side-apply upgrades work without
--force-conflicts.
- Quieter logging: Pod spec generation failures now log at debug instead of error.
- Dependency updates
Fixed
-
Applier init container fails behind a corporate CA/proxy: The applier init container (
applier license-check, which calls the StormForge API over TLS) now mountsadditionalVolumeMounts. Previously it mounted no volumes, so customers injecting a corporate CA cert hitx509: certificate signed by unknown authorityduring init and the pod never started. Restores the 2.x chart behavior and matches theadditionalVolumeMountsdocs (“added to all containers”). -
SuspendStateevent silently skipped: The applier Deployment now projectsPOD_NAME/POD_NAMESPACEfrom the downward API, so the applier can resolve its own Deployment and emit theSuspendStateevent on startup (for example, when settingsuspend=All). Previously this failed withErrSelfPodEnvUnsetand only logged a warning.
Version 3.0.0
Version 3.0.0 unifies all StormForge components into a single Helm chart. Upgrading from the v2 Agent and Applier charts requires migration — see Migrate v2 → v3.
Added
-
Unified
stormforgeHelm chart: New chart that bundles the workload-agent and the applier in a single installation, replacing the separatestormforge-agentchart. Required values are the same (clusterName,authorization.clientID,authorization.clientSecret). Breaking change — replacesstormforge-agent. -
workloadResourceKindsmodel: A single list replaces the two parallel v2 parameters (workloadResourceTypes+ownerResourceTypes). Each entry carries an explicitrolefield —workload,conditionalWorkload,owner,ignoredOwner— eliminating the ambiguity of separate lists.patchTargetDefaults(renamed frompatchTargetTypeDefaults) is set per entry; the chart injects the requiredlive.stormforge.io/prefix internally. Breaking change — see Migrate v2 → v3. -
includeCommonAddOnResourceKinds: ReplacesincludeCommonAddOnResourceTypes, enabled by default. Prepends curated entries for Argo Rollouts, Prometheus operator, OpenTelemetry collector, KEDA, and Dynatrace.
Changed
-
CRDs are now Helm-managed: CRDs moved from
crds/totemplates/crds/so they upgrade in lockstep with the chart.crds.enabled(defaulttrue) opts out for out-of-band CRD management;crds.keep(defaulttrue) prevents cascade-delete on uninstall. Breaking change — upgrade note below. -
cAdvisor scrape method auto-detected: The
CadvisorDirectScrapeconfig flag is removed. The scrape method is now inferred automatically from theinstancelabel on incoming PSI metrics. -
PSI waiting-rate uses a time-weighted window: The fixed-sample-count ring buffer is replaced with timestamped samples averaged over a configurable
WaitingAverageWindow. TheSampleIntervalconfig field is removed; setWaitingAverageWindow(default10m) instead. Stale samples outside the window are excluded regardless of scrape cadence changes.
Upgrade note — CRD ownership transfer
CRDs previously installed from the crds/ directory carry no Helm ownership metadata. The first helm upgrade onto v3.0.0 may fail with “invalid ownership metadata.” Remediation options:
- Helm ≥ 3.17: run the upgrade once with
--take-ownership - GitOps / older Helm: label and annotate the existing CRDs before upgrading:
kubectl label crd <name> app.kubernetes.io/managed-by=Helm --overwrite kubectl annotate crd <name> \ meta.helm.sh/release-name=<release> \ meta.helm.sh/release-namespace=<namespace> --overwrite