Configure optimization for individual workloads
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
-
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
-
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" ...
Tip
To save time, you can copy the complete list of annotations from the sample Deployment YAML excerpt on the Workload tab in the Copy a template section of the configuration topic. -
Save your changes.
-
If you chose to run the
kubectl get deployment DEPLOYMENT -o yaml > FILENAME ...
command in step 1, apply your changes.kubectl apply -f FILENAME
-
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
-
Run the
kubectl annotate
command and include theannotation=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"
Tip
To save time, you can copy the pairs you need from the sample Namespace YAML excerpt on the Namespace tab in the Copy a template section of the configuration topic. Be sure to replace the:
separator from the template with=
as shown in the sample command above. -
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