PowerfulSeal configuration schema

Type: object

The following configuration options document all features available for writing policy files with PowerfulSeal.

Type: object

General configuration of this policy.

Type: object

Configure how exit is configured

Type: enum (of string) Default: "report"

Affects what PowerfulSeal does when errors occur. The default report logs an error message, updates metrics and carries on. fail-fast fails and exits immediately on first exit (useful when running as a job).

Must be one of:

  • "report"
  • "fail-fast"

Type: object

Configure how the scenarios are run

Type: number Default: 300

The Seal waits a randomized amount of time before executing the scenarios. This sets the MAX number of seconds that it will wait.

Value must be greater or equal to 0

Type: number Default: 30

The Seal waits a randomized amount of time before executing the scenarios. This sets the MIN number of seconds that it will wait.

Value must be greater or equal to 0

Type: number

If set, it will exit after the given number of scenario runs. By default, it continues forever.

Value must be greater or equal to 1

Type: enum (of string) Default: "round-robin"

Affects how the scenarios are executed. The default round-robin iterates over the every scenario in the order they were defined. random picks a random scenario from the available pool every time.

Must be one of:

  • "round-robin"
  • "random"

Type: array of object

An array of scenarios, each describing a complete chaos experiment.

Each item of this array must be:

Type: object

A scenario contains all the steps necessary to prepare, implement and validate a chaos engineering experiment.

Type: string

A longer description, helping to understand what the scenario is doing when reading the yaml file. Optional.

Type: string

A brief, descriptive name of the scenario. Will be used to identify the scenario in logs.

Must be at least 3 characters long

Must be at most 80 characters long

Type: array

The sequence of events to prepare, validate, execute and analyse the chaos engineering experiment.

Each item of this array must be:

Type: object

Issue an HTTP request and validate the response.

Type: object

Type: string

Body of the HTTP request.

Type: number Default: 200

Expected status code.

Value must be greater or equal to 1 and lesser or equal to 599

Type: number Default: 1

Number of requests to make.

Value must be greater or equal to 1

Type: number Default: 100

Delay in ms between retries.

Value must be greater or equal to 1

Type: string

Endpoint to add to the url. For example /healthz. Works for both url and service.

Type: array of object

Give any additional headers to the request.

Each item of this array must be:

Type: object

Type: string

Type: string

Type: boolean Default: false

If you'd like to skip the SSL validation. For example for self-signed certs.

Type: enum (of string) Default: "get"

HTTP method to use.

Must be one of:

  • "get"
  • "post"
  • "patch"
  • "head"
  • "delete"

Type: string

Proxy to use with the requests. If not set no proxy will be used. NOTE, that the probe ignores (and overrides) HTTP{S}_PROXY envvars.

Type: number Default: 3

Number of retries before failing the probe. Ignored, if there are no errors on the probe.

Value must be greater or equal to 1

Type: object

A target of a static URL.

Type: string

The fully qualified url to issue the request to. For example: http://example.com.

Type: object

Target the given Kubernetes service in a given namespace. It will use directly the IP of the given service, so make sure it resolves.

Type: object

Type: string

Name of the kubernetes service.

Type: string

Namespace of the kubernetes service.

Type: number Default: 80

Port number to hit. Independent of what the service defines.

Value must be greater or equal to 1 and lesser or equal to 65535

Type: enum (of string) Default: "http"

Protocol to use for the probe.

Must be one of:

  • "http"
  • "https"

Type: number Default: 1000

Request timeout in ms.

Value must be greater or equal to 1

Type: object

Allows to execute a kubectl apply or kubectl delete command as part of the scenario.

Type: object

Type: enum (of string)

Must be one of:

  • "apply"
  • "delete"

Type: boolean Default: true

When set to true, all the kubectl apply commands will be kubectl deleteed at the end of the scenario.

Type: string Default: "kubectl"

The path to the binary of kubectl.

Type: string

Free-form, kubectl-compatible payload, which will be passed to kubectl as is.

Type: string Default: ""

Proxy to use with the kubectl command. If not set no proxy will be used. NOTE, that the probe ignores (and overrides) HTTP{S}_PROXY envvars.

Type: object

Match, filter and action on pods in your kubernetes cluster. Matchers create the initial set. That set is de-duplicated and passed on to the filters. Filters can exclude items. Whatever is passed through the filters will then be actioned with every action in the action array. See below for the details of the configuration available.

Type: object

Type: array of object

An array of actions to be applied to each pod from the set.

Each item of this array must be:

Type: object

Kill a pod.

Type: object

Type: boolean

Type: number

Value must be greater or equal to 0 and lesser or equal to 1

Type: object

Wait some seconds.

Type: object

Type: number

Value must be greater or equal to 0

Type: object

Check that all pods are in the desired state, fail otherwise.

Type: object

Type: string

Status, as returned by kubernetes (Running, Terminating, etc).

Type: object

Count the pods and fail if they don't match the desired number.

Type: object

Type: number

Type: array of object

An array of filters to only select certain pods from the initial set.

Each item of this array must be:

Type: object

Select pods by property values.

Type: object

Type: enum (of string)

Must be one of:

  • "name"
  • "state"

Type: boolean Default: false

Set to true to negate the match (logical NOT)

Type: string
Type: object

Only pass the filter during specific time of the day and week.

Type: object

Type: object

Describes a time of the day, in the local timezone.

Type: number

Value must be greater or equal to 0 and lesser or equal to 23

Type: number

Value must be greater or equal to 0 and lesser or equal to 59

Type: number

Value must be greater or equal to 0 and lesser or equal to 59

Type: array of enum (of string)

Each item of this array must be:

Type: enum (of string)

Must be one of:

  • "monday"
  • "tuesday"
  • "wednesday"
  • "thursday"
  • "friday"
  • "saturday"
  • "sunday"

Type: object

Take a random sample. Either a specific size (up to N), or a ratio (0.5 == 50%) of the initial size.

Type: object

Type: number

Value must be greater or equal to 0 and lesser or equal to 1

Type: number

Value must be greater or equal to 1

Type: object

Only pass the filter with a desired probability.

Type: number

Value must be greater or equal to 0 and lesser or equal to 1

Type: array

An array of match criteria to select a set of pods. Will be deduplicated.

Each item of this array must be:

Type: object

Pick all pods for a deployment in a namespace.

Type: string
Type: object

Pick all pods for a deployment in a namespace.

Type: object

Type: string

Type: string
Type: object

Pick all pods matching the particular set of labels in a namespace.

Type: object

Type: string

Type: string
Type: object

Match, filter and action on nodes in your kubernetes cluster. It can integrate with your cloud provider and take nodes up and down to simulate VMs going down. If you're running in SSH mode, it can also execute various commands on hosts. And much more! See below for mode details.

Type: object

Type: array of object

An array of actions, which will be executed on each node.

Each item of this array must be:

Type: object

Start a node.

Type: object or null
Type: object

Stop a node.

Type: object

Type: boolean Default: true

When set to true, the node will be restarted at the end of the scenario.

Type: boolean
Type: object

Executes arbitrary command on a particular node. Use with caution.

Type: object

Type: string

Type: array of object

An array of filters, which will be applied in the defined order.

Each item of this array must be:

Type: object

Select nodes by property values.

Type: object

Type: enum (of string)

Must be one of:

  • "name"
  • "ip"
  • "group"
  • "az"
  • "state"

Type: boolean Default: false

Set to true to negate the match (logical NOT)

Type: string

Only pass the filter during specific time of the day and week.

Same definition as scenarios_items_steps_items_oneOf_i2_podAction_filters_items_oneOf_i1

Take a random sample. Either a specific size (up to N), or a ratio (0.5 == 50%) of the initial size.

Same definition as scenarios_items_steps_items_oneOf_i2_podAction_filters_items_oneOf_i2

Type: array

An array of match criteria to select a set of nodes. Will be deduplicated.

Each item of this array must be:

Type: object

Allows to wait a number of seconds.

Type: object

Type: number

Value must be greater or equal to 0