StormForge Agent releases

Release history for the StormForge Agent

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) when openshift=true and commonPodSecurityContext is unset.

Version 3.1.0

Added

  • JVM old-gen live-set metric: The forwarder (formerly exporter) now collects jvm_memory_pool_collection_used_bytes for live data size transforms.
  • Chart deepOverride helper: Explicit-zero-preserving merge helper so intentional 0 values in overrides are no longer dropped.

Changed

  • exporter component renamed to forwarder: The exporter Helm values key is renamed to forwarder. The old key is deprecated but still works (see the note above).
  • agent component renamed to cluster-agent: The agent Helm values key is renamed to clusterAgent, and the agent config file to cluster-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 mounts additionalVolumeMounts. Previously it mounted no volumes, so customers injecting a corporate CA cert hit x509: certificate signed by unknown authority during init and the pod never started. Restores the 2.x chart behavior and matches the additionalVolumeMounts docs (“added to all containers”).

  • SuspendState event silently skipped: The applier Deployment now projects POD_NAME / POD_NAMESPACE from the downward API, so the applier can resolve its own Deployment and emit the SuspendState event on startup (for example, when setting suspend=All). Previously this failed with ErrSelfPodEnvUnset and only logged a warning.

Version 3.0.0

Added

  • Unified stormforge Helm chart: New chart that bundles the workload-agent and the applier in a single installation, replacing the separate stormforge-agent chart. Required values are the same (clusterName, authorization.clientID, authorization.clientSecret). Breaking change — replaces stormforge-agent.

  • workloadResourceKinds model: A single list replaces the two parallel v2 parameters (workloadResourceTypes + ownerResourceTypes). Each entry carries an explicit role field — workload, conditionalWorkload, owner, ignoredOwner — eliminating the ambiguity of separate lists. patchTargetDefaults (renamed from patchTargetTypeDefaults) is set per entry; the chart injects the required live.stormforge.io/ prefix internally. Breaking change — see Migrate v2 → v3.

  • includeCommonAddOnResourceKinds: Replaces includeCommonAddOnResourceTypes, 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/ to templates/crds/ so they upgrade in lockstep with the chart. crds.enabled (default true) opts out for out-of-band CRD management; crds.keep (default true) prevents cascade-delete on uninstall. Breaking change — upgrade note below.

  • cAdvisor scrape method auto-detected: The CadvisorDirectScrape config flag is removed. The scrape method is now inferred automatically from the instance label 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. The SampleInterval config field is removed; set WaitingAverageWindow (default 10m) 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
    

Previous StormForge Agent and Applier releases