For the complete documentation index, see llms.txt. This page is also available as Markdown.

Command Probe

Execute custom commands and scripts for flexible validation

This topic describes the definition and schema of the command probe. It also describes how to tune the probe in two modes: inline mode and source mode.

The command probe allows you to run Bash commands and match the output as part of the entry or exit criteria. The intent behind this probe is to implement a non-standard and imperative way to express the hypothesis. For example, you can check for specific data within a database, parse the value out of a JSON blob that is dumped into a certain path, or check for the existence of a particular string in the service logs.

YAML ONLY FEATURE

By default, this probe can be defined in inline mode from the user interface, where the command is run from within the experiment image. It can also be run in source mode, where the command execution is carried out from within a new pod whose image is specified. Inline mode is preferred for simple shell commands, and source mode is preferred when application-specific binaries are required.

Probe definition

You can define the probe at .spec.experiments[].spec.probe path inside the chaos engine.

kind: Workflow
apiVersion: argoproj.io/v1alpha1
spec:
  templates:
    - inputs:
        artifacts:
          - raw:
              data: |
                apiVersion: litmuschaos.io/v1alpha1
                kind: ChaosEngine
                spec:
                  experiments:
                    - spec:
                        probe:
                          ####################################
                          Probes are defined here
                          ####################################

The command probe expects you to provide a shell command to implement checks that are highly specific to the application use case.

Schema

Listed below is the probe schema for the command probe with properties shared across all the probes and properties unique to the command probe.

Field

Description

Type

Range

Notes

name

Flag that holds the name of the probe

Mandatory

N/A type: string

The name holds the name of the probe. It can be set based on the use-case

type

Flag to hold the type of the probe

Mandatory

httpProbe, k8sProbe, cmdProbe, promProbe, and datadogProbe

The type supports five types of probes: httpProbe, k8sProbe, cmdProbe, promProbe, and datadogProbe.

mode

Flag to hold the mode of the probe

Mandatory

SOT, EOT, Edge, Continuous, OnChaos

The mode supports five modes of probes: SOT, EOT, Edge, Continuous, and OnChaos. Datadog probe supports EOT mode only.

command

Flag to hold the command for the cmdProbe

Mandatory

N/A type: string

The command contains the shell command, which should be run as part of cmdProbe

Source

Field

Description

Type

Range

Notes

image

Flag to hold the image for the cmdProbe

Mandatory

any source docker image

The image provides the source image which can be used to launch a external pod where the command execution is carried out.

hostNetwork

Flag to allow or deny the image access to the node network namespace

Optional

true, false

The hostNetwork provides a possibility to allow the pod executing the cmdProbe access to the network of the node he is running on. For more details, go to the official Kubernetes documentation.

inheritInputs

Flag for inheriting experiment pod attributes such as ENV, volumes, and volumeMounts into the probe pod

Optional

true, false

Default is false i.e. the experiment pod attributes won't be inherited by the probe pod by default

args

Arguments to be used for the source probe

Optional

type: string

List of arguments to be used along with the probe command

env

Environment variables to be used for the source probe pod

Optional

type: string

List of environment variables to be used probe pod container

labels

Labels for the source probe pod

Optional

type: string

Labels to be added to the source probe pod

annotations

Annotations for the source probe pod

Optional

type: string

Annotations to be added to the source probe pod

command

Command to be executed using the source probe image

Optional

type: string

Command to be executed using the source probe image, which can be provided as a list

imagePullPolicy

Image Pull Policy to be used for the source pod image

Optional

type: string

Image Pull Policy to be used for the source pod image, supports Always, IfNotPresent, and Never

privileged

Privileged execution permissions for the probe image

Optional

true, false

Privileged execution permissions for the probe image, supports a boolean value

nodeSelector

Label(s) of the node(s) to be used for deploying the source probe pod

Optional

type: string

Key-Value label(s) of the node(s) to be used for deploying the source probe pod

volumes

Volumes to be mounted to the source probe pod

Optional

N/A

Depending on the type of the volume, additional properties need to be provided

volumesMount

Volume mount paths for the corresponding source pod volumes

Optional

type: string

List of volume mount paths for the corresponding source pod volumes

imagePullSecrets

Image pull secrets for the source pod image

Optional

type: string

List of image pull secrets for the source pod image

Comparator

Field

Description

Type

Range

Notes

type

Flag to hold type of the data used for comparison

Mandatory

string, int, float

The type contains type of data, which should be compared as part of comparison operation.

criteria

Flag to hold criteria for the comparison

Mandatory

It supports {>=, <=, ==, >, <, !=, oneOf, between} for int and float type. And {equal, notEqual, contains, matches, notMatches, oneOf} for string type.

The criteria contains criteria of the comparison, which should be fulfill as part of comparison operation.

value

Flag to hold value for the comparison

Mandatory

N/A type: string

The value contains value of the comparison, which should follow the given criteria as part of comparison operation.

Run properties

Field

Description

Type

Range

Notes

probeTimeout

Flag to hold the timeout of the probe

Mandatory

N/A type: string

The probeTimeout represents the time limit for the probe to execute the specified check and return the expected data

attempt

Flag to hold the attempt of the probe

Mandatory

N/A type: integer

The attempt contains the number of times a check is run upon failure in the previous attempts before declaring the probe status as failed.

interval

Flag to hold the interval of the probe

Mandatory

N/A type: string

The interval contains the interval for which probes waits between subsequent retries

probePollingInterval

Flag to hold the polling interval for the probes (applicable for all modes)

Optional

N/A type: string

The probePollingInterval contains the time interval for which continuous and onchaos probe should be sleep after each iteration

initialDelaySeconds

Flag to hold the initial delay interval for the probes

Optional

N/A type: integer

The initialDelaySeconds represents the initial waiting time interval for the probes.

stopOnFailure

Flags to hold the stop or continue the experiment on probe failure

Optional

N/A type: boolean

The stopOnFailure can be set to true/false to stop or continue the experiment execution after probe fails

Definition

A sample definition of the probe is given below.

Inline mode

In the inline mode, the command probe is executed directly within the experiment pod. This mode is recommended for executing straightforward shell commands. It is the default mode and can be tuned by leaving out the 'source' field.

Use the following example to tune this:

Source Mode

In source mode, the command is executed within a newly created pod, allowing for the specification of its image. This mode is useful when application-specific binaries are needed.

Use the following example to tune this:

Last updated

Was this helpful?