WorkloadDescriptor field reference

Prev Next

This topic describes the fields available to configure HiberScale protections.

Top-level fields

Field

Type

Required

Default

Format / Units

Description

Observable signals

Dependencies

apiVersion

string

Yes

None

String

API version of the custom resource. For WorkloadDescriptor, use kompass.zesty.co/v1alpha1.

N/A

Must match Kompass API version installed in the cluster.

kind

string

Yes

None

String

Object type. For HiberScale, this is always WorkloadDescriptor.

N/A

N/A

metadata.name

string

Yes

None

String

Name of the WorkloadDescriptorobject.

kubectl get workloaddescriptor shows object by this name.

Must be unique within the namespace.

metadata.namespace

string

Yes

None

String

Namespace in which the WorkloadDescriptoris created.

kubectl get workloaddescriptor -n <namespace>

Must match the namespace of the workload.

spec

object

Yes

None

Object

Specification of workload reference, protection options, and resources.

N/A

N/A

spec.workloadReference

Field

Type

Required

Default

Format / Units

Description

Observable signals

Dependencies

apiVersion

string

Yes

None

String

API version of the workload (for example, apps/v1).

N/A

Must correspond to an existing workload type in the cluster.

kind

string

Yes

None

String

Workload type (for example, Deployment, StatefulSet).

N/A

Must be a supported workload type.

name

string

Yes

None

String

Name of the workload that HiberScale protects.

kubectl get <kind> <name>

Must reference an existing workload in the same namespace.

spec.protection.spike

Field

Type

Required

Default

Format / Units

Description

Observable signals

Dependencies

active

boolean

No

false

true / false

Determines whether Kompass resumes hibernated nodes when Pods are unschedulable.

kubectl get workloaddescriptor shows resumed state when Pods are pending.

Requires hibernated node pool (resources) to be defined.

threshold

string

No

None

Percentage string (e.g., '10%')

Minimum percentage of Pods that must be unschedulable before Kompass resumes hibernated nodes. Ignored if active=false.

When threshold is exceeded, kubectl get qnodes shows resumed nodes.

Applies only if active=true.

strategy

string

No

manual

Enum: manual, default, conservative

Defines how Kompass manages the HPA minReplicas.

  • manual: user controls minReplicas.

  • default: Kompass adjusts based on usage.

  • conservative: more cautious setting for sensitive workloads.

HPA changes visible with kubectl get hpa.

Requires an HPA on the workload. If no HPA exists, strategy must remain manual.

spec.protection.spot

Field

Type

Required

Default

Format / Units

Description

Observable signals

Dependencies

active

boolean

No

false

true / false

Determines whether Kompass resumes hibernated nodes in response to Spot interruption notices.

When Spot interruptions occur, kubectl get nodes -l karpenter.sh/nodepool=<name> shows resumed nodes. Kompass logs show interruption handling.

Requires provider Spot interruption support (e.g., AWS two-minute warning). Requires nodes tagged with karpenter.sh/nodepool.

spec.resources

Field

Type

Required

Default

Format / Units

Description

Observable signals

Dependencies

cpu

string

No

None

Kubernetes CPU quantity (for example, 8000m)

Amount of vCPU allocated to hibernated nodes that protect the workload.

kubectl describe qnodes shows allocated CPU.

Must match supported instance sizing for the nodepool.

memory

string

No

None

Kubernetes memory quantity (for example, 8Gi)

Amount of memory allocated to hibernated nodes that protect the workload.

kubectl describe qnodes shows allocated memory.

Must match supported instance sizing for the nodepool.