--- title: "WorkloadDescriptor field reference" slug: "workloaddescriptor-field-reference" updated: 2026-07-15T12:08:37Z published: 2026-07-15T12:08:37Z canonical: "docs.zesty.co/workloaddescriptor-field-reference" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.zesty.co/llms.txt > Use this file to discover all available pages before exploring further. # 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 (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 | - `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. Evicts original Kompass Pod only when its duplicate is running. May exceed Pod count during drain.`regular`: Evicts Kompass Pods up to threshold limit. When evicted Pod runs on autoscaler node, next Pod is evicted. Never exceeds threshold for unscheduled Pods. | `accelerated`: Total Pod count temporarily exceeds workload size during drain. `regular`: Pod count remains stable, with max threshold Pods in Pending state. | None | | | | draining.threshold | string or integer | No | None | Percentage (e.g., "10%") or integer | Maximum Pods that can be unscheduled simultaneously. Accepts percentage of total Pods (e.g., "10%") or absolute number (e.g., 5). Only applies when method: `regular`. | `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 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. |