The http probe allows developers to specify a URL which the experiment uses to gauge health/service availability (or other custom conditions) as part of the entry/exit criteria. The received status code is mapped against an expected status. It supports http Get and Post methods.
It can be executed by setting type as httpProbe inside .spec.experiments[].spec.probe.
View the http probe schema
Field
.name
Description
Flag to hold the name of the probe
Type
Mandatory
Range
n/a (type: string)
Notes
The .name holds the name of the probe. It can be set based on the usecase
Field
.type
Description
Flag to hold the type of the probe
Type
Mandatory
Range
httpProbe, k8sProbe, cmdProbe, promProbe
Notes
The .type supports four type of probes. It can one of the httpProbe, k8sProbe, cmdProbe, promProbe
Field
.mode
Description
Flag to hold the mode of the probe
Type
Mandatory
Range
SOT, EOT, Edge, Continuous, OnChaos
Notes
The .mode supports five modes of probes. It can one of the SOT, EOT, Edge, Continuous, OnChaos
Field
.httpProbe/inputs.url
Description
Flag to hold the URL for the httpProbe
Type
Mandatory
Range
n/a {type: string}
Notes
The .httpProbe/inputs.url contains the URL which the experiment uses to gauge health/service availability (or other custom conditions) as part of the entry/exit criteria.
Field
.httpProbe/inputs.insecureSkipVerify
Description
Flag to hold the flag to skip certificate checks for the httpProbe
Type
Optional
Range
true, false
Notes
The .httpProbe/inputs.insecureSkipVerify contains flag to skip certificate checks.
Field
.httpProbe/inputs.responseTimeout
Description
Flag to hold the flag to response timeout for the httpProbe
Type
Optional
Range
n/a {type: integer}
Notes
The .httpProbe/inputs.responseTimeout contains flag to provide the response timeout for the http Get/Post request.
Field
.httpProbe/inputs.method.get.criteria
Description
Flag to hold the criteria for the http get request
Type
Mandatory
Range
==, !=, oneOf
Notes
The .httpProbe/inputs.method.get.criteria contains criteria to match the http get request's response code with the expected responseCode, which need to be fulfill as part of httpProbe run
Field
.httpProbe/inputs.method.get.responseCode
Description
Flag to hold the expected response code for the get request
Type
Mandatory
Range
HTTP_RESPONSE_CODE
Notes
The .httpProbe/inputs.method.get.responseCode contains the expected response code for the http get request as part of httpProbe run
Field
.httpProbe/inputs.method.post.contentType
Description
Flag to hold the content type of the post request
Type
Mandatory
Range
n/a {type: string}
Notes
The .httpProbe/inputs.method.post.contentType contains the content type of the http body data, which need to be passed for the http post request
Field
.httpProbe/inputs.method.post.body
Description
Flag to hold the body of the http post request
Type
Mandatory
Range
n/a {type: string}
Notes
The .httpProbe/inputs.method.post.body contains the http body, which is required for the http post request. It is used for the simple http body. If the http body is complex then use .httpProbe/inputs.method.post.bodyPath field.
Field
.httpProbe/inputs.method.post.bodyPath
Description
Flag to hold the path of the http body, required for the http post request
Type
Optional
Range
n/a {type: string}
Notes
The .httpProbe/inputs.method.post.bodyPath This field is used in case of complex POST request in which the body spans multiple lines, the bodyPath attribute can be used to provide the path to a file consisting of the same. This file can be made available to the experiment pod via a ConfigMap resource, with the ConfigMap name being defined in the ChaosEngine OR the ChaosExperiment CR.
Field
.httpProbe/inputs.method.post.criteria
Description
Flag to hold the criteria for the http post request
Type
Mandatory
Range
==, !=, oneOf
Notes
The .httpProbe/inputs.method.post.criteria contains criteria to match the http post request's response code with the expected responseCode, which need to be fulfill as part of httpProbe run
Field
.httpProbe/inputs.method.post.responseCode
Description
Flag to hold the expected response code for the post request
Type
Mandatory
Range
HTTP_RESPONSE_CODE
Notes
The .httpProbe/inputs.method.post.responseCode contains the expected response code for the http post request as part of httpProbe run
Field
.runProperties.probeTimeout
Description
Flag to hold the timeout for the probes
Type
Mandatory
Range
n/a {type: integer}
Notes
The .runProperties.probeTimeout represents the time limit for the probe to execute the specified check and return the expected data
Field
.runProperties.retry
Description
Flag to hold the retry count for the probes
Type
Mandatory
Range
n/a {type: integer}
Notes
The .runProperties.retry contains the number of times a check is re-run upon failure in the first attempt before declaring the probe status as failed.
Field
.runProperties.interval
Description
Flag to hold the interval for the probes
Type
Mandatory
Range
n/a {type: integer}
Notes
The .runProperties.interval contains the interval for which probes waits between subsequent retries
Field
.runProperties.probePollingInterval
Description
Flag to hold the polling interval for the probes(applicable for Continuous mode only)
Type
Optional
Range
n/a {type: integer}
Notes
The .runProperties.probePollingInterval contains the time interval for which continuous probe should be sleep after each iteration
Field
.runProperties.initialDelaySeconds
Description
Flag to hold the initial delay interval for the probes
Type
Optional
Range
n/a {type: integer}
Notes
The .runProperties.initialDelaySeconds represents the initial waiting time interval for the probes.
Field
.runProperties.stopOnFailure
Description
Flags to hold the stop or continue the experiment on probe failure
Type
Optional
Range
false {type: boolean}
Notes
The .runProperties.stopOnFailure can be set to true/false to stop or continue the experiment execution after probe fails
In HTTP Get method, it sends an http GET request to the provided URL and matches the response code based on the given criteria(==, !=, oneOf).
It can be executed by setting httpProbe/inputs.method.get field.
Use the following example to tune this:
# contains the http probes with get method and verify the response codeapiVersion:litmuschaos.io/v1alpha1kind:ChaosEnginemetadata:name:engine-nginxspec:engineState:"active"appinfo:appns:"default"applabel:"app=nginx"appkind:"deployment"chaosServiceAccount:pod-delete-saexperiments:-name:pod-deletespec:probe:-name:"check-frontend-access-url"type:"httpProbe"httpProbe/inputs:url:"<url>"method:# call http get method and verify the response codeget:# criteria which should be matchedcriteria:==# ==, !=, oneof# exepected response code for the http request, which should follow the specified criteriaresponseCode:"<responsecode>"mode:"Continuous"runProperties:probeTimeout:5interval:2retry:1probePollingInterval:2
It contains the http body, which is required for the http post request. It is used for the simple http body. The http body can be provided in the body field.
It can be executed by setting httpProbe/inputs.method.post.body field.
Use the following example to tune this:
# contains the http probes with post method and verify the response codeapiVersion:litmuschaos.io/v1alpha1kind:ChaosEnginemetadata:name:engine-nginxspec:engineState:"active"appinfo:appns:"default"applabel:"app=nginx"appkind:"deployment"chaosServiceAccount:pod-delete-saexperiments:-name:pod-deletespec:probe:-name:"check-frontend-access-url"type:"httpProbe"httpProbe/inputs:url:"<url>"method:# call http post method and verify the response codepost:# value of the http body, used for the post requestbody:"<http-body>"# http body content typecontentType:"application/json;charset=UTF-8"# criteria which should be matchedcriteria:"=="# ==, !=, oneof# exepected response code for the http request, which should follow the specified criteriaresponseCode:"200"mode:"Continuous"runProperties:probeTimeout:5interval:2retry:1probePollingInterval:2
In the case of a complex POST request in which the body spans multiple lines, the bodyPath attribute can be used to provide the path to a file consisting of the same. This file can be made available to the experiment pod via a ConfigMap resource, with the ConfigMap name being defined in the ChaosEngine OR the ChaosExperiment CR.
It can be executed by setting httpProbe/inputs.method.post.body field.
NOTE: It is mutually exclusive with the body field. If body is set then it will use the body field for the post request otherwise, it will use the bodyPath field.
Use the following example to tune this:
# contains the http probes with post method and verify the response codeapiVersion:litmuschaos.io/v1alpha1kind:ChaosEnginemetadata:name:engine-nginxspec:engineState:"active"appinfo:appns:"default"applabel:"app=nginx"appkind:"deployment"chaosServiceAccount:pod-delete-saexperiments:-name:pod-deletespec:probe:-name:"check-frontend-access-url"type:"httpProbe"httpProbe/inputs:url:"<url>"method:# call http post method and verify the response codepost:# the configMap should be mounted to the experiment which contains http body# use the mounted path herebodyPath:"/mnt/body.yml"# http body content typecontentType:"application/json;charset=UTF-8"# criteria which should be matchedcriteria:"=="# ==, !=, oneof# exepected response code for the http request, which should follow the specified criteriaresponseCode:"200"mode:"Continuous"runProperties:probeTimeout:5interval:2retry:1probePollingInterval:2
It contains a flag to provide the response timeout for the http Get/Post request. It can be tuned via .httpProbe/inputs.responseTimeout field.
It is an optional field and its unit is milliseconds.
Use the following example to tune this:
# defines the response timeout for the http probeapiVersion:litmuschaos.io/v1alpha1kind:ChaosEnginemetadata:name:engine-nginxspec:engineState:"active"appinfo:appns:"default"applabel:"app=nginx"appkind:"deployment"chaosServiceAccount:pod-delete-saexperiments:-name:pod-deletespec:probe:-name:"check-frontend-access-url"type:"httpProbe"httpProbe/inputs:url:"<url>"# timeout for the http requestsresponseTimeout:100#in msmethod:get:criteria:==# ==, !=, oneofresponseCode:"<responsecode>"mode:"Continuous"runProperties:probeTimeout:5interval:2retry:1probePollingInterval:2
It contains flag to skip certificate checks. It can bed tuned via .httpProbe/inputs.insecureSkipVerify field.
It supports boolean values. Provide it to true to skip the certificate checks. Its default value is false.
Use the following example to tune this:
# skip the certificate checks for the httpProbeapiVersion:litmuschaos.io/v1alpha1kind:ChaosEnginemetadata:name:engine-nginxspec:engineState:"active"appinfo:appns:"default"applabel:"app=nginx"appkind:"deployment"chaosServiceAccount:pod-delete-saexperiments:-name:pod-deletespec:probe:-name:"check-frontend-access-url"type:"httpProbe"httpProbe/inputs:url:"<url>"# skip certificate checks for the httpProbe# supports: true, false. default: falseinsecureSkipVerify:"true"method:get:criteria:==responseCode:"<responsecode>"mode:"Continuous"runProperties:probeTimeout:5interval:2retry:1probePollingInterval:2