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.
GlobalConfiguration defines cluster-wide controller behavior that applies across strategies and policies. Use it to control recommendation refresh timing, proactive rescans, heartbeat reporting, global automation switches, protected namespaces, and webhook health thresholds.

Field Reference

The probe uses dry-run Pod admission, so no container runs. The secure probe defaults are supplied by Helm, not by the CRD or controller. Directly managed GlobalConfiguration resources must specify them under spec.webhookProbe, as in the example below. Partial Helm security settings retain other chart defaults; explicit overrides remain supported.

Status Reference

Global configuration remains IN_PROGRESS while webhook health transitions or a required reload or rescan is pending. A completed setup reports Success; a failed required operation reports Failure. Proposal sync maps current Success to APPLIED and current Failure to FAILED.

Example

Helm-Managed Mapping

The chart creates a default GlobalConfiguration when globalConfiguration.enabled=true. Legacy deployment.controllerEnv values still act as fallbacks for the default GlobalConfiguration: If both the new globalConfiguration.* value and the legacy value are set, the globalConfiguration.* value wins.

Multi-policy annotation keys

When multiPolicyContainerRightsizingEnabled is false, resource policies use their fixed legacy request and limit annotation keys. When true, each policy writes keys shaped like <policy-prefix>/h<digest>-desired-resource-requests and <policy-prefix>/h<digest>-desired-resource-limits. GPU reactive policies use the same digest for baseline state. A flag change converts each workload in one Kubernetes patch. Conversion across the cluster is eventual because policy reconcilers process workloads independently. Readers accept fixed and hashed keys throughout the transition. A selected recommendation that changes key restarts rollback monitoring because rollback fingerprints remain key-sensitive. Each matching policy adds up to two annotations, or three for GPU reactive state. Kubernetes limits total annotation data on an object to 256 KiB. Keep the number and payload size of overlapping policies within that limit.

Heartbeat Reporting

Proposal Sync Toggle

spec.proposalSyncEnabled is top-level operational switch for proposal-backed resource management. When the field is omitted from a directly managed GlobalConfiguration, proposal sync is disabled. The Helm chart sets it to true by default.
  • When true, the controller continues syncing proposals on the configured proposal sync interval.
  • When false, the controller skips proposal sync and deletes all controller-managed proposal-backed resources.
  • Re-enabling triggers immediate proposal sync on next reconcile.
  • For local dev, PROPOSALS_PATH=... make local-deploy opts proposal sync in automatically in helper flow.
Proposal sync accepts every CR registered in the controller’s runtime scheme under rightsizing.kubex.ai/v1alpha1, including both namespaced and cluster-scoped resources. The controller periodically sends health and activity status to Kubex. This allows the Kubex platform to monitor controller health, display the running version, and track automation activity across your clusters. The controller version included in heartbeat payloads is read from the IMAGE_TAG environment variable, which the Helm chart automatically injects into the manager container from the image.tag Helm value. In airgapped environments, ensure this value matches your mirrored image tag so Kubex can accurately report the running version.

Webhook Probe Pod Settings

The pod admission webhook health probe creates a dry-run Pod using spec.webhookProbe.
  • spec.webhookProbe.image controls the probe Pod container image
  • spec.webhookProbe.labels and spec.webhookProbe.annotations allow cluster-specific admission labels and annotations
  • spec.webhookProbe.resources, spec.webhookProbe.podSecurityContext, and spec.webhookProbe.securityContext help satisfy admission policies that require explicit resource or security settings
When spec.webhookProbe.image is unset, the Helm chart defaults it to the controller image (image.repository:image.tag). This allows airgapped environments to mirror only the controller image and have probe admissions use that same image by default. On EKS clusters, the probe pod is labeled with eks.amazonaws.com/skip-pod-identity-webhook: "true" so the AWS-managed pod identity webhook skips this dry-run probe admission.

Verification

Use these commands to inspect the rendered and live resource: