The HTTP workload playbook is workloads/http.yml
and will run the HTTP(s) workload on your cluster.
The purpose of the HTTP workload is to test TPS and latency of the OpenShift Router/Ingress (HAProxy). The workload creates workload generator (WLG) pods and nginx pods to serve as endpoints. Traffic passes from the WLG to the nginx pods through OpenShift routes, thus stressing the ingress components of the OpenShift cluster.
Running from CLI:
$ cp workloads/inventory.example inventory
$ # Add orchestration host to inventory
$ # Edit vars in workloads/vars/http.yml or define Environment vars (See below)
$ time ansible-playbook -vv -i inventory workloads/http.yml
Default: ~/.ssh/id_rsa.pub
Public ssh key file for Ansible.
Default: ~/.ssh/id_rsa
Private ssh key file for Ansible.
Default: root
User for Ansible to log in as. Must authenticate with PUBLIC_KEY/PRIVATE_KEY.
Default: quay.io/openshift-scale/scale-ci-workload
Container image that runs the workload script.
Default: true
Enables/disables the node selector that places the workload job on the workload
node.
Default: true
Enables/disables the toleration on the workload job to permit the workload
taint.
Default: ~/.kube/config
Location of kubeconfig on orchestration host.
Default: ~/.ssh/id_rsa
Location of ssh private key to authenticate to the pbench results server.
Default: ~/.ssh/id_rsa.pub
Location of the ssh public key to authenticate to the pbench results server.
Default: false
Enables/disables the collection of pbench data on the pbench agent pods. These pods are deployed by the tooling playbook.
Default: There is no public default.
DNS address of the pbench results server.
Default: There is no public default.
Future use for pbench and prometheus scraper to place results into git repo that holds results data.
Default: 1000
Number of retries for Ansible to poll if the workload job has completed. Poll attempts delay 10s between polls with some additional time taken for each polling action depending on the orchestration host setup.
Default: 1router
A label to append to pbench directories and mb result directories.
Default: 1
How many workload generators to use.
Default: empty
Load-generator nodes described by an extended regular expression (use "oc get nodes" node names). If unset/empty, do not pin the workload generators to any nodes.
Default: 10
Number of projects to create for each type of application (4 types currently).
Default: 1
Number of templates to create per project.
Default: 120
Run time of individual HTTP test iterations in seconds.
Default: 0
Thread ramp-up time in seconds. Must be < HTTP_TEST_RUNTIME.
Default: 0
Maximum delay between client requests in ms. Can be a list of numbers separated by commas.
Default: true
Use TLS session reuse.
Default: GET
HTTP method to use for backend servers (GET/POST).
Default: 1024
Backend server (200 OK) response document length.
Default: 1024
Body length of POST requests in characters for backend servers.
Default: mix
Perform the test for the following (comma-separated) route terminations: mix,http,edge,passthrough,reencrypt.
Default: false
Run only a single HTTP test to establish functionality. It also overrides HTTP_TEST_APP_PROJECTS and HTTP_TEST_APP_TEMPLATES.
Default: true
Delete all namespaces with application pods, services and routes created for the purposes of HTTP tests.
Default: quay.io/openshift-scale/http-stress
HTTP workload generator container image.
Default: quay.io/openshift-scale/nginx
HTTP server container image.
Default: empty
Public elasticsearch server.
Default: empty
Port number for public elasticsearch server.
Default: empty
To compare two similar runs, export this variable.
Default: empty
Accepted deviation in percentage when compared to a baseline run.
Default: empty
Link to tarball on a public instance which serves as a baseline for the test run. Pbench tarballs are internal to RHT, copy them to a public instance.
Default: empty
Email Id to which the results in google spreadsheet will be mailed
Default: empty
The service account key for communicating with Google API.
Note: Please pad the key i.e " will be backslash" and \n will be backslash\n
HTTP smoke test is the shortest-running HTTP test that establishes test's basic functionality and the ability of the framework to upload results to the pbench results server.
PBENCH_SERVER=pbench.example.com # set to your own pbench server
ENABLE_PBENCH_AGENTS=false
HTTP_TEST_SMOKE_TEST=true
A suggested configuration for running HTTP tests on a small-scale cluster with 4 worker nodes, each with 4 vCPUs, 16GB RAM. This configuration is used for documenting OpenShift's "Baseline router performance".
PBENCH_SERVER=pbench.example.com # set to your own pbench results server
ENABLE_PBENCH_AGENTS=true
#HTTP_TEST_LOAD_GENERATOR_NODES= # set when you have cluster administrator privileges
HTTP_TEST_APP_TEMPLATES=10
HTTP_TEST_ROUTE_TERMINATION=http,edge,passthrough,reencrypt
A suggested configuration for running HTTP tests on a larger-scale cluster with 10+ worker nodes, each with 4 vCPUs, 16GB RAM. This configuration is used for router regression testing between OpenShift releases.
PBENCH_SERVER=pbench.example.com # set to your own pbench results server
ENABLE_PBENCH_AGENTS=true
#HTTP_TEST_LOAD_GENERATOR_NODES= # set when you have cluster administrator privileges
HTTP_TEST_APP_TEMPLATES=50