WorkloadDescriptor field reference
WorkloadDescriptor field reference
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 WorkloadDescriptor object. |
kubectl get workloaddescriptor shows object by this name. |
Must be unique within the namespace. |
| metadata.namespace | string | Yes | None | String | Namespace in which the WorkloadDescriptor is 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 | N/A | Must be a Deployment 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 | Minimum percentage of Pods that must be unschedulable before Kompass resumes hibernated nodes. | When threshold is exceeded, kubectl get qnodes shows resumed nodes. |
Applies only if active=true. |
|
| strategy | string | No | manual | Enum: manual | - manual: user controls minReplicas. |
HPA changes visible with kubectl get hpa. |
||
| draining.method | string | No | accelerated | Enum: accelerated, regular | Drain strategy. accelerated: Duplicates Pods and schedules duplicates on autoscaler nodes. |
accelerated: Total Pod count temporarily exceeds workload size during drain. |
None | |
| draining.threshold | string or integer | No | None | Percentage or integer | Maximum Pods that can be unscheduled simultaneously. | kubectl get pods shows Pending Pods limited to threshold during drain. |
Requires method: regular. Has no effect when method: accelerated. |
spec.resources
| Field | Type | Required | Default | Format / Units | Description | Observable signals | Dependencies |
|---|---|---|---|---|---|---|---|
| cpu | string | No | None | Kubernetes CPU | 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 | 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. |