Configure optimization for individual workloads

Configure optimization settings for namespaces and workloads using annotations

The purpose of this topic is to describe how to use annotations to configure optimization settings.

Topics:

Configure optimization settings for a specific workload

To configure settings an individual workload, edit the resource definition or run kubectl annotate.

Workload optimization settings are defined by annotations in the metadata.annotations section of a Deployment, StatefulSet, or other supported workload resource type.

Workload optimization settings:

  • Directly define configuration settings for a workload
  • Are specified using annotations on workload resources, such as Deployments or StatefulSets
  • Override equivalent values configured as defaults for the namespace or cluster

Using YAML manifests

  1. Open the workload definition in your favorite editor. This is commonly done using commands like these (remember to replace DEPLOYMENT and FILENAME with your own values):

    kubectl get deployment DEPLOYMENT -o yaml > FILENAME && $EDITOR FILENAME
    

    or:

    kubectl edit deployment DEPLOYMENT
    
  2. Edit the metadata.annotations section to include the annotations you need. For a complete list of annotations for Optimize Live settings, see the the Optimization settings and descriptions topic.

    Your file will look something like this:

    apiVersion: apps/v1 # // just an example; represents any
    kind: Deployment    # \\ supported workload resource type
    metadata:
      name: example-workload-name
      annotations:
        live.stormforge.io/schedule: "@daily"
        live.stormforge.io/auto-deploy: "true"
    ...
    
  3. Save your changes.

  4. If you chose to run the kubectl get deployment DEPLOYMENT -o yaml > FILENAME ... command in step 1, apply your changes.

    kubectl apply -f FILENAME
    
  5. Optional: Confirm your changes by running the following command and then reviewing the annotations in the metadata.annotations section of the output:

    kubectl get deployment DEPLOYMENT -o yaml
    

Using the kubectl annotate command

  1. Run the kubectl annotate command and include the annotation=value pairs you want to set.

    The kubernetes object you annotate should be the workload resource itself, such as a Deployment or StatefulSet.

    As an example, a kubectl annotate for a Deployment workload might look something like this (remember to replace NAME with your appropriate value):

    kubectl annotate deployment NAME \
      live.stormforge.io/schedule="@daily" \
      live.stormforge.io/auto-deploy="true" \
      live.stormforge.io/containers.cpu.requests.min="20m" \
      live.stormforge.io/containers.cpu.requests.max="16000m"
    
  2. Optional: To confirm your changes, run the following command and review the annotations in the .metadata.annotations section of the output:

    kubectl get deployment NAME -o yaml
    
Last modified June 6, 2024