Skip to main content
Experimental: GPU/KAI-related fields in this resource are subject to breaking changes. When using them, set spec.experimental.gpuKaiContract: v1alpha1-2026-07.
ClusterAutomationStrategy defines how resizing is allowed to happen for cluster-scoped policy flows. Use it when a platform team wants one reusable resize behavior that can be referenced by ClusterProactivePolicy and ClusterStaticPolicy across multiple namespaces. For the namespaced variant, see Automation Strategies.

Reference Rules

  • ClusterProactivePolicy references a ClusterAutomationStrategy.
  • ClusterStaticPolicy references a ClusterAutomationStrategy.
  • Helm can generate ClusterAutomationStrategy resources from policy.policies, but these CRs can also be managed directly with manifests or GitOps.

Field Reference

ClusterAutomationStrategy.spec uses the same field structure and defaults as the namespaced AutomationStrategy: Usage-level floor and ceiling values apply to all containers by default. Add containers.<name> under the same requests or limits block when a multi-container pod needs different bounds for specific containers.

VPA Filter Behavior

Two complementary VPA filters help avoid conflicts between Kubex automation and Vertical Pod Autoscalers:

enableVpaFilter (default: true)

Filters actions when a VPA is actively managing the resource. This requires all of:
  • VPA updateMode is not Off (i.e., Auto, Recreate, or Initial)
  • VPA has an active recommendation with status RecommendationProvided=True
  • The resource dimension (e.g., cpu.requests) appears in the VPA’s containerRecommendations
Use case: Prevent conflicts when VPA is actively recommending and applying changes. This is the default safe behavior that defers to VPA when it’s doing work.

blockResizeOnVpaControlledResources (default: false)

Filters actions for resources declared in a VPA resourcePolicy, regardless of whether the VPA is active. This check is only evaluated when enableVpaFilter=true. It checks only:
  • The resource is listed in resourcePolicy.containerPolicies[].controlledResources
  • The usage type (requests/limits) matches controlledValues (defaults to both)
Does not check:
  • VPA updateMode (blocks even when Off)
  • Recommendation status (blocks even when no recommendations exist)
  • Whether VPA is actively applying changes
Use case: Reserve resources for future VPA management, or ensure strict non-interference when VPA ownership is declared but the VPA may be temporarily disabled or not yet providing recommendations.

Comparison

Note: blockResizeOnVpaControlledResources is ignored unless enableVpaFilter=true is enabled.

Scheduling Windows

spec.scheduling lets platform teams constrain when cluster-scoped proactive automation is allowed to execute.
  • inclusionWindows define allowed times. If multiple inclusion windows are defined, they are evaluated with OR logic (automation is allowed if it matches ANY inclusion window). Inclusion windows may overlap.
  • exclusionWindows define blocked times and always override inclusion windows.
  • If neither list is set, scheduling does not restrict automation.
  • If any inclusion window is defined, automation is allowed only while the current time matches at least one inclusion window.
  • start is inclusive and end is exclusive.
  • If start or end are omitted, they default to 00:00 and 24:00 respectively, allowing for easy “all day” configuration.
  • Windows are evaluated in the window’s local IANA timezone specified in the timezone field.
  • Overnight windows are supported. For example, 22:00 to 06:00 spans midnight. 24:00 is supported for exclusive end times.
When scheduling blocks a proactive resize, the controller keeps the recommendation pending and retries when the next allowed window opens.

Helm Mapping

The current chart can generate ClusterAutomationStrategy resources from policy.policies, but it does not render scheduling fields from Helm values. For scheduling-controlled cluster automation:
  • Create or manage the ClusterAutomationStrategy manifest directly.
  • Reference that strategy name from a Helm-managed or manually managed ClusterProactivePolicy.

Ephemeral Storage

spec.enablement.ephemeralStorage uses the same fields as spec.enablement.memory, plus restartStrategy. Unlike memory, every storage change is off by default. Set upsize, downsize, or setFromUnspecified to true for the changes you want. Example that allows storage changes with a floor, keeps limits from shrinking, and sets a per-container ceiling:
By default, storage changes are applied the next time the pod is recreated (for example a rollout, scale-up, or node drain). Set restartStrategy: Evict to let Kubex restart the pod to apply them. See Proactive Policies for how to turn them on, how they are applied, and how to turn them off.

Guaranteed QoS Behavior

When spec.safetyChecks.retainGuaranteedQOS is enabled:
  • The behavior applies only to pods that are currently in the Kubernetes Guaranteed QoS class.
  • For CPU and memory, desired limits are treated as the source of truth.
  • Request values are automatically set to match limit values so requests == limits remains true.
  • If a limit action exists but no request action exists, the controller can add a matching request action to preserve Guaranteed QoS.
When this toggle is disabled (default), requests and limits are handled independently by recommendation and enablement logic, and a pod can move away from Guaranteed QoS. Note: A pod is in the Guaranteed QoS class only when ALL containers have requests == limits for BOTH CPU and memory. If a container has CPU request=limit but memory request≠limit, the pod is Burstable, not Guaranteed, and this behavior does not activate.

Example

Notes

  • Prefer cluster strategies when one platform-owned policy model should apply across many namespaces.
  • Use namespaced AutomationStrategy instead when teams should own and evolve resize behavior independently inside their own namespaces.
  • For Helm-managed mappings and limits, see Policy Configuration.