--- title: "Apply Fast scaling with YAML" slug: "apply-fast-scaling-with-yaml" updated: 2026-07-16T13:40:13Z published: 2026-07-16T13:40:21Z canonical: "docs.zesty.co/apply-fast-scaling-with-yaml" --- > ## 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. # Apply Fast scaling with YAML This topics describes how to apply Fast scaling to workloads using YAML. Fast scaling is powered by Zesty HiberScale technology. You enable HiberScale technology for workloads by defining a `WorkloadDescriptor` custom resource. The `WorkloadDescriptor `references a workload and defines spike protection that controls when HiberScale resumes hibernated nodes. When protection is activated for a workload, HiberScale creates hibernated node pools for that workload, based on the QScaler CRD. Kompass manages these pools through QScaler custom resources that correspond to your cluster's autoscaler or Karpenter nodepools. You can override the local nodepool settings, such as instance types and number of nodes as well as the global HiberScale settings as described in Advanced configuration and observability. For more information, see [HiberScale technology](/v1/docs/hiberscale-technology). ### WorkloadDescriptor overview A `WorkloadDescriptor `is a namespaced resource. The main fields include: - `workloadReference`: Identifies the workload by apiVersion, kind, and name. Supported workload types: Deployment. - `protection`: Defines conditions that trigger HiberScale for spike protection. - `resources`: Specifies the vCPU and memory reserved for hibernated nodes that protect the workload. **Example**: ```yaml apiVersion: kompass.zesty.co/v1alpha1 kind: WorkloadDescriptor metadata:  name: test-deployment  namespace: test spec:  workloadReference:    apiVersion: apps/v1    kind: Deployment    name: test-deployment  protection:    spike:      active: true      threshold: "10%"      strategy: "default"  draining:    method: regular # accelerated (default)|regular    threshold: 10% # percentage|integer value  resources:    cpu: 8000m    memory: 8Gi ``` For a full reference of the fields, see [WorkloadDescriptor field reference](/v1/docs/workloaddescriptor-field-reference). The protection section defines when HiberScale resumes hibernated nodes: ### Spike protection Spike protection reacts to unschedulable Pods. The `spike `section specifies how Kompass manages unschedulable Pods. For more information on how Kompass protects workloads, see [Spike protection with Fast scaling](/v1/docs/spike-protection-with-fast-scaling). - `active`: Determines whether the workload is protected for spikes. - `true`: Kompass resumes hibernated nodes when the number of unschedulable Pods exceeds the threshold. - `false`: Kompass ignores unschedulable Pods and does not resume hibernated nodes. - `threshold`: The percentage of Pods in the workload that must be unschedulable before Kompass resumes hibernated nodes. - `strategy: manual` (default) - `draining`: Controls how Kompass evicts Pods from its nodes during the drain process. - `method`: Selects the drain strategy. - `accelerated`: Evicts Pods without threshold control. - `regular`: Uses threshold-controlled eviction. - `threshold`: Maximum amount of simultaneous unscheduled Pods. Accepts percentage values (e.g., 10%) or integer values (e.g., 5). Applies only when the method is `regular`. > [!NOTE] > Argo CD > > When using ArgoCD, configure it so that changes to the HPA are not treated as conflicts; otherwise, ArgoCD may revert Kompass adjustments. ### Resources The `resources `section defines CPU and memory values for hibernated nodes. - Values determine the resources allocated to the pool of hibernated nodes used to protect the workload. > [!NOTE] > Recommended vCPU and RAM allocation > > It is recommended to allocate an amount of resources equal to the current Pod requests multiplied by the maximum number of Pods expected. - You can prevent workload protection in these ways: - Delete the `WorkloadDescriptor`. This is preferred when using IaC tools. - Set `spike.active=false `. This prevents HiberScale from creating hibernated nodes without deleting the `WorkloadDescriptor`. If there are previously created hibernated nodes, they will be removed. ### Deactivation You can deactivate HiberScale by disabling the `active `fields for `spike`. For more information, see [Resources](/v1/docs/workloaddescriptor-field-reference#specresources). ### Advanced configuration and observability The following options provide additional configuration and integration. They are not required for basic operation but can be used to tune behavior or integrate with observability systems. #### QScaler local setting overrides The `QScaler `CRD defines hibernated node pools. For each autoscaler or Karpenter nodepool that protects a workload, Kompass creates a corresponding QScaler object. You can override the following settings from the upstream nodepool: - `instanceTypes`: compatible instance types that support hibernation - `maxHibernatedQNodes`: maximum number of hibernated nodes - `maxRunningQNodes`: maximum number of Kompass-created nodes **Example**: ```yaml spec: overrides:   instanceTypes:   - c5.xlarge   - c5.2xlarge   maxHibernatedQNodes:     type: Absolute     value: 10   maxRunningQNodes:     type: Absolute     value: 10 ``` #### Sizing types for maximum values: - `Absolute`: fixed number of nodes - `PercentOfPool`: percentage of the maximum size of the upstream nodepool - `PercentOfRunning`**:** percentage of the current number of nodes in the upstream nodepool **Recommendation**: For predictability, use `Absolute `sizing. #### QubexConfig global setting overrides The `QubexConfig `CRD defines global HiberScale settings. You can override the default settings after installation in the `QubexConfig `CR: `kubectl edit qubexconfig qubex-config -n <namespace>` **Common settings:** - `cacheConfig.revisionMinCreationInterval`: Time to wait between checking for new images in the cluster. - `drainingConfig.scaleInProtectionDuration`: Before this time elapses, machines will not be cordoned. - `drainingConfig.drainGracePeriod`: The grace period of self-managed drain before forced termination. #### Metrics ingestion Kompass control plane components expose Prometheus metrics on a /metrics endpoint. These endpoints can be scraped by Prometheus to ingest Kompass metrics into an observability system.