Seamlessly setup Automation with flexible CR configuration.
Use a Custom Resource (CR) to configure Automation through flexible configuration. This allows you to seamlessly integrate automation into your existing workflows and manage it using standard Kubernetes practices.
Create Custom Resource (CR)
After the installation of the automation agent, it is important to create a cluster automation configuration, as this step is mandatory:
apiVersion:perfectscale.io/v1kind:ClusterAutomationConfigmetadata:name:cluster-automation-configspec:automation:operational:stopAllAutomation:false# Global kill switch for automation (default: false)cleanupAllAutomation:false# Stops automation and reverts all changes, restoring original resource specifications and settings
Automation is only enabled in configurations where automationMode for the workload type is set to "Enabled". This can be configured in the ClusterAutomationConfig, NamespaceAutomationConfig, or WorkloadAutomationConfig.
Example:
apiVersion:perfectscale.io/v1kind:ClusterAutomationConfigmetadata:name:cluster-automation-configspec:automation:operational:stopAllAutomation:false# Global kill switch for automation (default: false)cleanupAllAutomation:false# Stops automation and reverts all changes, restoring original resource specifications and settings workloadTypes:Deployment:operational:automationMode:"Enabled"# Enables automation for the workloads with a specific type in the cluster/namespace
This configuration enables automation for all workloads in a cluster with type: Deployment. Learn more about enabling automation for particular workload types in a cluster, specific namespace, or specific workloads.
Only one cluster-level automation configuration can be applied per cluster. To prevent errors, PerfectScale recommends using consistent naming for cluster-level configurations within the same cluster. This ensures that a new configuration will override the previous one without causing any conflicts.
To help you quickly start using PerfectScale Automation and streamline the optimization process, we provide pre-built Custom Resources (CRs) focused on desired optimization goals. You can easily implement the following CRs and customize them if needed.
👉 Explore more configuration examples at our GitHub.
⚡Recommended adoption path
To minimize waste and achieve optimal savings, we recommend starting with a simple, cluster-level automation focused on cost reduction.
Create a YAML file with the recommended cluster-level automation configuration using the following template:
Apply the created configuration by running the following command (where cluster-automation-config.yaml - the name of your file created in the previous step):
Combining cost savings and performance improvement configuration
The following example of a Cluster-level automation configuration allows you to automate the optimization of the entire cluster, enhancing its performance while maintaining optimal costs.
Create a YAML file with the cluster-level automation configuration using the following template:
Apply the created configuration by running the following command (where cluster-automation-config.yaml - the name of your file created in the previous step):
Let's explore additional examples of automation configurations that offer more granular and flexible control over Automation:
Some automation configuration settings have predefined defaults. If you don’t specify a value, PerfectScale will automatically apply the default for that field. Below is the list of configurations and their default values.
apiVersion: perfectscale.io/v1
kind: ClusterAutomationConfig
metadata:
name: cluster-automation-config
spec:
automation:
operational:
stopAllAutomation: false # Global kill switch for automation (default: false)
cleanupAllAutomation: false # Stops automation and reverts all changes, restoring original resource specifications and settings
workloadTypes:
Deployment:
operational:
automationMode: "Enabled" # Enables automation for the workloads with a specific type in the cluster/namespace
restrictions:
DaemonSet:
operational:
automationMode: "Enabled" # Enables automation for the workloads with a specific type in the cluster/namespace
restrictions:
kubectl apply -f cluster-automation-config.yaml
apiVersion: perfectscale.io/v1
kind: ClusterAutomationConfig
metadata:
name: cluster-automation-config
spec:
automation:
operational:
stopAllAutomation: false # Global kill switch for automation (default: false)
cleanupAllAutomation: false # Stops automation and reverts all changes, restoring original resource specifications and settings
workloadTypes:
Deployment:
operational:
automationMode: "Enabled" # Enables automation for the workloads with a specific type in the cluster/namespace
restrictions:
workloadMinWasteUSDPerMonth: 5 # Activates automation only if monthly waste exceeds a set threshold (for example, $5)
cpuManagement:
request:
increaseEnabled: true # Allows PerfectScale Automation to increase CPU requests if the performance risks are observed
decreaseEnabled: true # Allows PerfectScale Automation to decrease CPU requests to minimize waste
limit:
keepLimit: true # Automation will maintain a non-zero CPU limit and will not set the value to zero
memoryManagement:
request:
increaseEnabled: true # Allows PerfectScale Automation to increase Memory requests if the performance risks are observed
decreaseEnabled: true # Allows PerfectScale Automation to decrease Memory requests to minimize waste
limit:
increaseEnabled: true # Allows PerfectScale Automation to increase Memory limit if the performance risks are observed
decreaseEnabled: true # Allows PerfectScale Automation to decrease Memory limit
DaemonSet:
operational:
automationMode: "Enabled" # Enables automation for the workloads with a specific type in the cluster/namespace
restrictions:
workloadMinWasteUSDPerMonth: 5 # Activates automation only if monthly waste exceeds a set threshold (for example, $5)
cpuManagement:
request:
increaseEnabled: true # Allows PerfectScale Automation to increase CPU requests if the performance risks are observed
decreaseEnabled: true # Allows PerfectScale Automation to decrease CPU requests to minimize waste
limit:
keepLimit: true # Automation will maintain a non-zero CPU limit and will not set the value to zero
memoryManagement:
request:
increaseEnabled: true # Allows PerfectScale Automation to increase Memory requests if the performance risks are observed
decreaseEnabled: true # Allows PerfectScale Automation to decrease Memory requests to minimize waste
limit:
increaseEnabled: true # Allows PerfectScale Automation to increase Memory limit if the performance risks are observed
decreaseEnabled: true # Allows PerfectScale Automation to decrease Memory limit