application/apps/v1alpha1

Table of Contents

Application

Application represents a description of an application to run experiments on.

Field Description Scheme Required
metadata ObjectMeta false
resources Resources are references to application resources to consider in the generation of the experiment. These strings are the same format as used by Kustomize. konjure.Resources false
parameters Parameters specifies additional details about the experiment parameters. []Parameters false
ingress Ingress specifies how to find the entry point to the application. *Ingress false
scenarios The list of scenarios to optimize the application for. []Scenario false
objectives The list of objectives to optimize the application for. []Objective false
stormForger StormForger allows you to configure StormForger to apply load on your application. *StormForger false

Back to TOC

ContainerResources

ContainerResources specifies which resources in the application should have their container resources (CPU and memory) optimized.

Field Description Scheme Required
selector Label selector of Kubernetes objects to consider when generating container resources patches. string false
resources The names of the resources to optimize. Defaults to [“memory”, “cpu”]. []corev1.ResourceName false

Back to TOC

CustomScenario

CustomScenario is used for advanced cases where more flexibility is required.

Field Description Scheme Required
pushGateway Enables Prometheus Push Gateway support for objectives that require it. The PUSHGATEWAY_URL environment variable will be added to all containers when the trial job starts. bool false
podTemplate The default specification of a pod to use for executing a trial. *corev1.PodTemplateSpec false
initialDelaySeconds Additional delay before starting the trial pod. int32 false
approximateRuntimeSeconds The estimated amount of time the trial should last. int32 false
image Override the image of the first container in the trial pod. string false

Back to TOC

DatadogGoal

DatadogGoal is used to define an external optimization metric from DataDog.

Field Description Scheme Required
query The Datadog query to execute. string true
aggregator The aggregator to use on the query results (one of: avg, last, max, min, sum). string false
maximize Flag indicating the goal of optimization should be to maximize a metric. bool false

Back to TOC

DurationGoal

DurationGoal is used to optimize the amount of time elapsed in a specific scenario.

Field Description Scheme Required
DurationType The duration to optimize. Can be one of the following values: trial. DurationType false

Back to TOC

ErrorRateGoal

ErrorRateGoal is used to optimize the error rate of an application in a specific scenario.

Field Description Scheme Required
ErrorRateType The error rate to optimize. Can be one of the following values: requests. ErrorRateType false

Back to TOC

Goal

Goal is an individual component of an objective.

Field Description Scheme Required
name The name of the goal. If no specific configuration is supplied, the name is used to derive a configuration. For example, any valid latency (prefixed or suffixed with “latency”) will configure a default latency goal. string false
max The upper bound for the objective. *resource.Quantity false
min The lower bound for the objective. *resource.Quantity false
optimize Flag indicating that this objective should optimized instead of monitored (default: true). *bool false
requests Requests is used to optimize the resources consumed by an application. *RequestsGoal false
latency Latency is used to optimize the responsiveness of an application. *LatencyGoal false
errorRate ErrorRate is used to optimize the failure rate of an application. *ErrorRateGoal false
duration Duration is used to optimize the elapsed time of an application performing a fixed amount of work. *DurationGoal false
prometheus Prometheus is used to optimize against a Prometheus metric. *PrometheusGoal false
datadog Datadog is used to optimize against a Datadog metric. *DatadogGoal false

Back to TOC

Ingress

Ingress describes the point of ingress to the application.

Field Description Scheme Required
url The URL used to access the application from outside the cluster. string false

Back to TOC

LatencyGoal

LatencyGoal is used to optimize the responsiveness of an application in a specific scenario.

Field Description Scheme Required
LatencyType The latency to optimize. Can be one of the following values: minimum (or min), maximum (or max), mean (or average, avg), percentile_50 (or p50, median, med), percentile_95 (or p95), percentile_99 (or p99). LatencyType false

Back to TOC

LocustScenario

LocustScenario is used to generate load using Locust.

Field Description Scheme Required
locustfile Path to a Python module file to import. string false
users Number of concurrent Locust users. *int false
spawnRate The rate per second in which users are spawned. *int false
runTime Stop after the specified amount of time. *metav1.Duration false

Back to TOC

Objective

Objective describes the goals of the optimization in terms of specific metrics.

Field Description Scheme Required
name The name of the objective. If omitted, a default name will be generated based on the goals. string false
goals The list of goals for the objective. []Goal false

Back to TOC

Parameters

Parameters describes the strategy for tuning the application.

Field Description Scheme Required
containerResources Information related to the discovery of container resources parameters like CPU and memory. *ContainerResources false
replicas Information related to the discovery of replica parameters. *Replicas false

Back to TOC

PrometheusGoal

PrometheusGoal is used to define an external optimization metric from Prometheus.

Field Description Scheme Required
query The PromQL query to execute; the result of this query MUST be a scalar value. string true
url The URL of the Prometheus deployment, leave blank to leverage a Prometheus instance whose lifecycle it tied to the trial. string false
maximize Flag indicating the goal of optimization should be to maximize a metric. bool false

Back to TOC

Replicas

Replicas specifies which resources in the application should have their replica count optimized.

Field Description Scheme Required
selector Label selector of Kubernetes objects to consider when generating replica patches. string false

Back to TOC

RequestsGoal

RequestsGoal is used to optimize the resource requests of an application in a specific scenario.

Field Description Scheme Required
selector Label selector of the pods which should be considered when collecting cost information. string false
weights Weights are used to determine which container resources should be optimized. corev1.ResourceList false

Back to TOC

Scenario

Scenario describes a specific pattern of load to optimize the application for.

Field Description Scheme Required
name The name of scenario. string false
stormforger StormForger configuration for the scenario. *StormForgerScenario false
locust Locust configuration for the scenario. *LocustScenario false
custom Custom configuration for the scenario. *CustomScenario false

Back to TOC

StormForger

StormForger describes global configuration related to StormForger.

Field Description Scheme Required
org The name of the StormForger organization. string false
accessToken Configuration for the StormForger service account. *StormForgerAccessToken false

Back to TOC

StormForgerAccessToken

StormForgerAccessToken is used to configure a service account access token for the StormForger API.

Field Description Scheme Required
file The path to the file that contains the service account access token. string false
literal A literal token value, this should only be used for testing as it is not secure. string false
secretKeyRef Reference to an existing secret key that contains the access token. *corev1.SecretKeySelector false

Back to TOC

StormForgerScenario

StormForgerScenario is used to generate load using StormForger.

Field Description Scheme Required
testCase The test case can be used to specify an existing test case in the StormForger API or it can be used to override the generated test case name when specified in conjunction with the local test case file. The organization is optional if it is configured globally. string false
testCaseFile Path to a local test case file used to define a new test case in the StormForger API. string false

Back to TOC


Last modified March 30, 2021