Skip to content

Commit e4d7849

Browse files
committed
Enhance entrypoint.sh and experiment documentation with comprehensive environment variable configurations. Added default values for chaos experiments, including SDK authentication and probe settings. Updated README files for multiple experiments to reflect changes in infrastructure scope from 'namespace' to 'cluster' and standardized common environment variables for clarity.
Signed-off-by: Sky Singh <[email protected]>
1 parent f42cea9 commit e4d7849

File tree

14 files changed

+1001
-60
lines changed

14 files changed

+1001
-60
lines changed

entrypoint.sh

Lines changed: 106 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,50 @@
22

33
set -e
44

5+
# ==============================================================================
6+
# Litmus Chaos GitHub Action Environment Variables
7+
# ==============================================================================
8+
# The following environment variables can be set to customize chaos experiments:
9+
#
10+
# REQUIRED SDK Authentication Variables:
11+
# LITMUS_ENDPOINT - URL of Litmus Chaos Center (default: http://localhost:9091)
12+
# LITMUS_USERNAME - Username for authentication (default: admin)
13+
# LITMUS_PASSWORD - Password for authentication (default: litmus)
14+
# LITMUS_PROJECT_ID - Project ID in Litmus (default: admin-project)
15+
#
16+
# Common Environment Variables:
17+
# KUBECONFIG - Path to kubeconfig file (default: /home/runner/.kube/config)
18+
# APP_NS - Application namespace (default: litmus)
19+
# INSTALL_INFRA - Whether to install infrastructure (default: true)
20+
# ACTIVATE_INFRA - Whether to activate infrastructure (default: true)
21+
# CREATE_ENV - Whether to create environment (default: true)
22+
# ENV_NAME - Environment name (default: ci-test-env)
23+
# ENV_TYPE - Environment type (default: NON_PROD)
24+
# INFRA_NAMESPACE - Infrastructure namespace (default: litmus)
25+
# INFRA_ACTIVATION_TIMEOUT - Timeout for infrastructure activation (default: 5)
26+
#
27+
# Probe Configuration:
28+
# LITMUS_CREATE_PROBE - Create probe (default: true)
29+
# LITMUS_USE_EXISTING_PROBE - Use existing probe (default: false)
30+
# LITMUS_PROBE_TYPE - Probe type (default: httpProbe)
31+
# LITMUS_PROBE_MODE - Probe mode (default: SOT)
32+
# LITMUS_PROBE_TIMEOUT - Probe timeout (default: 30s)
33+
# LITMUS_PROBE_INTERVAL - Probe interval (default: 10s)
34+
# LITMUS_PROBE_ATTEMPTS - Probe attempts (default: 1)
35+
# LITMUS_PROBE_RESPONSE_CODE - Expected response code (default: 200)
36+
#
37+
# Experiment-Specific Variables (auto-set based on EXPERIMENT_NAME):
38+
# APP_LABEL - Application label for targeting
39+
# INFRA_NAME - Infrastructure name
40+
# INFRA_SCOPE - Infrastructure scope (cluster/namespace)
41+
# LITMUS_PROBE_NAME - Probe name
42+
# LITMUS_PROBE_URL - Probe URL
43+
#
44+
# Special Variables for container-kill experiment:
45+
# SOCKET_PATH - Container runtime socket path
46+
# CONTAINER_RUNTIME - Container runtime type
47+
# ==============================================================================
48+
549
##Extract the base64 encoded config data and write this to the KUBECONFIG
650
if [ ! -z "$KUBE_CONFIG_DATA" ]
751
then
@@ -18,24 +62,73 @@ then
1862
aws configure set aws_secret_access_key ${AWS_SECRET_ACCESS_KEY}
1963
fi
2064

65+
# Set default values for common environment variables
66+
export KUBECONFIG=${KUBECONFIG:-"/home/runner/.kube/config"}
67+
export LITMUS_ENDPOINT=${LITMUS_ENDPOINT:-"http://localhost:9091"}
68+
export LITMUS_USERNAME=${LITMUS_USERNAME:-"admin"}
69+
export LITMUS_PASSWORD=${LITMUS_PASSWORD:-"litmus"}
70+
export LITMUS_PROJECT_ID=${LITMUS_PROJECT_ID:-"admin-project"}
71+
72+
# Application and Infrastructure Setup
73+
export APP_NS=${APP_NS:-"litmus"}
74+
export INSTALL_INFRA=${INSTALL_INFRA:-"true"}
75+
export ACTIVATE_INFRA=${ACTIVATE_INFRA:-"true"}
76+
export CREATE_ENV=${CREATE_ENV:-"true"}
77+
export ENV_NAME=${ENV_NAME:-"ci-test-env"}
78+
export ENV_TYPE=${ENV_TYPE:-"NON_PROD"}
79+
export INFRA_NAMESPACE=${INFRA_NAMESPACE:-"litmus"}
80+
export INFRA_ACTIVATION_TIMEOUT=${INFRA_ACTIVATION_TIMEOUT:-"5"}
81+
82+
# Probe Configuration
83+
export LITMUS_CREATE_PROBE=${LITMUS_CREATE_PROBE:-"true"}
84+
export LITMUS_USE_EXISTING_PROBE=${LITMUS_USE_EXISTING_PROBE:-"false"}
85+
export LITMUS_PROBE_TYPE=${LITMUS_PROBE_TYPE:-"httpProbe"}
86+
export LITMUS_PROBE_MODE=${LITMUS_PROBE_MODE:-"SOT"}
87+
export LITMUS_PROBE_TIMEOUT=${LITMUS_PROBE_TIMEOUT:-"30s"}
88+
export LITMUS_PROBE_INTERVAL=${LITMUS_PROBE_INTERVAL:-"10s"}
89+
export LITMUS_PROBE_ATTEMPTS=${LITMUS_PROBE_ATTEMPTS:-"1"}
90+
export LITMUS_PROBE_RESPONSE_CODE=${LITMUS_PROBE_RESPONSE_CODE:-"200"}
91+
92+
# Set experiment-specific defaults based on experiment name
93+
case "$EXPERIMENT_NAME" in
94+
"container-kill")
95+
export APP_LABEL=${APP_LABEL:-"app=nginx-container-kill"}
96+
export INFRA_NAME=${INFRA_NAME:-"ci-infra-container-kill"}
97+
export INFRA_SCOPE=${INFRA_SCOPE:-"cluster"}
98+
export LITMUS_PROBE_NAME=${LITMUS_PROBE_NAME:-"ci-http-probe-container-kill"}
99+
export LITMUS_PROBE_URL=${LITMUS_PROBE_URL:-"http://nginx-service-container-kill.litmus.svc.cluster.local:80"}
100+
export SOCKET_PATH=${SOCKET_PATH:-"/run/containerd/containerd.sock"}
101+
export CONTAINER_RUNTIME=${CONTAINER_RUNTIME:-"containerd"}
102+
;;
103+
"node-cpu-hog"|"node-memory-hog"|"node-io-stress")
104+
export APP_LABEL=${APP_LABEL:-"app=nginx-${EXPERIMENT_NAME}"}
105+
export INFRA_NAME=${INFRA_NAME:-"ci-infra-${EXPERIMENT_NAME}"}
106+
export INFRA_SCOPE=${INFRA_SCOPE:-"cluster"}
107+
export LITMUS_PROBE_NAME=${LITMUS_PROBE_NAME:-"ci-http-probe-${EXPERIMENT_NAME}"}
108+
export LITMUS_PROBE_URL=${LITMUS_PROBE_URL:-"http://nginx-service-${EXPERIMENT_NAME}.litmus.svc.cluster.local:80"}
109+
;;
110+
"disk-fill"|"pod-autoscaler"|"pod-cpu-hog"|"pod-delete"|"pod-memory-hog"|"pod-network-corruption"|"pod-network-duplication"|"pod-network-latency"|"pod-network-loss")
111+
export APP_LABEL=${APP_LABEL:-"app=nginx-${EXPERIMENT_NAME}"}
112+
export INFRA_NAME=${INFRA_NAME:-"ci-infra-${EXPERIMENT_NAME}"}
113+
export INFRA_SCOPE=${INFRA_SCOPE:-"namespace"}
114+
export LITMUS_PROBE_NAME=${LITMUS_PROBE_NAME:-"ci-http-probe-${EXPERIMENT_NAME}"}
115+
export LITMUS_PROBE_URL=${LITMUS_PROBE_URL:-"http://nginx-service-${EXPERIMENT_NAME}.litmus.svc.cluster.local:80"}
116+
;;
117+
*)
118+
# Default values for unspecified experiments
119+
export APP_LABEL=${APP_LABEL:-"app=nginx"}
120+
export INFRA_NAME=${INFRA_NAME:-"ci-infra-default"}
121+
export INFRA_SCOPE=${INFRA_SCOPE:-"namespace"}
122+
export LITMUS_PROBE_NAME=${LITMUS_PROBE_NAME:-"ci-http-probe-default"}
123+
export LITMUS_PROBE_URL=${LITMUS_PROBE_URL:-"http://nginx-service.litmus.svc.cluster.local:80"}
124+
;;
125+
esac
126+
21127
# Set default values for experiment configuration
22128
EXPERIMENT_IMAGE=${EXPERIMENT_IMAGE:-"litmuschaos/go-runner"}
23129
EXPERIMENT_IMAGE_TAG=${EXPERIMENT_IMAGE_TAG:-"3.18.0"}
24130
TOTAL_CHAOS_DURATION=${TOTAL_CHAOS_DURATION:-60}
25131

26-
# Handle Litmus installation if requested
27-
if [ "$INSTALL_LITMUS" = "true" ]; then
28-
echo "Installing Litmus..."
29-
/app/install-litmus
30-
fi
31-
32-
# Handle Litmus cleanup if requested and no experiment is specified
33-
if [ "$LITMUS_CLEANUP" = "true" ] && [ -z "$EXPERIMENT_NAME" ]; then
34-
echo "Cleaning up Litmus..."
35-
/app/uninstall-litmus
36-
exit 0
37-
fi
38-
39132
# Map experiment names to their corresponding scripts in chaos-ci-lib
40133
case "$EXPERIMENT_NAME" in
41134
"pod-delete")

experiments/container-kill/README.md

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
INSTALL_INFRA: "true"
3535
INFRA_NAME: "container-kill-infra"
3636
INFRA_NAMESPACE: "litmus"
37-
INFRA_SCOPE: "namespace"
37+
INFRA_SCOPE: "cluster"
3838

3939
# Application Info
4040
APP_NS: default
@@ -109,6 +109,71 @@ The following environment variables are used to configure the container-kill exp
109109
</tr>
110110
</table>
111111
112+
### Common Environment Variables
113+
114+
<table>
115+
<tr>
116+
<th> Variables </th>
117+
<th> Description </th>
118+
<th> Specify In Chaos Action </th>
119+
<th> Default Value </th>
120+
</tr>
121+
<tr>
122+
<td> KUBECONFIG </td>
123+
<td> Path to kubeconfig file </td>
124+
<td> Optional </td>
125+
<td> /home/runner/.kube/config </td>
126+
</tr>
127+
<tr>
128+
<td> APP_NS </td>
129+
<td> Application namespace for chaos testing </td>
130+
<td> Optional </td>
131+
<td> litmus </td>
132+
</tr>
133+
<tr>
134+
<td> ACTIVATE_INFRA </td>
135+
<td> Whether to activate infrastructure </td>
136+
<td> Optional </td>
137+
<td> true </td>
138+
</tr>
139+
<tr>
140+
<td> CREATE_ENV </td>
141+
<td> Whether to create environment </td>
142+
<td> Optional </td>
143+
<td> true </td>
144+
</tr>
145+
<tr>
146+
<td> ENV_NAME </td>
147+
<td> Name of the environment </td>
148+
<td> Optional </td>
149+
<td> ci-test-env </td>
150+
</tr>
151+
<tr>
152+
<td> ENV_TYPE </td>
153+
<td> Type of environment </td>
154+
<td> Optional </td>
155+
<td> NON_PROD </td>
156+
</tr>
157+
<tr>
158+
<td> INFRA_ACTIVATION_TIMEOUT </td>
159+
<td> Timeout for infrastructure activation </td>
160+
<td> Optional </td>
161+
<td> 5 </td>
162+
</tr>
163+
<tr>
164+
<td> LITMUS_USE_EXISTING_PROBE </td>
165+
<td> Whether to use existing probe </td>
166+
<td> Optional </td>
167+
<td> false </td>
168+
</tr>
169+
<tr>
170+
<td> APP_LABEL </td>
171+
<td> Application label for targeting </td>
172+
<td> Optional </td>
173+
<td> app=nginx-container-kill </td>
174+
</tr>
175+
</table>
176+
112177
### Infrastructure Setup Variables
113178
114179
<table>
@@ -152,7 +217,7 @@ The following environment variables are used to configure the container-kill exp
152217
<td> INFRA_SCOPE </td>
153218
<td> Scope of infrastructure </td>
154219
<td> Optional </td>
155-
<td> namespace </td>
220+
<td> cluster </td>
156221
</tr>
157222
<tr>
158223
<td> INFRA_SERVICE_ACCOUNT </td>

experiments/disk-fill/README.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,71 @@ The following environment variables are used to configure the disk-fill experime
107107
</tr>
108108
</table>
109109
110+
### Common Environment Variables
111+
112+
<table>
113+
<tr>
114+
<th> Variables </th>
115+
<th> Description </th>
116+
<th> Specify In Chaos Action </th>
117+
<th> Default Value </th>
118+
</tr>
119+
<tr>
120+
<td> KUBECONFIG </td>
121+
<td> Path to kubeconfig file </td>
122+
<td> Optional </td>
123+
<td> /home/runner/.kube/config </td>
124+
</tr>
125+
<tr>
126+
<td> APP_NS </td>
127+
<td> Application namespace for chaos testing </td>
128+
<td> Optional </td>
129+
<td> litmus </td>
130+
</tr>
131+
<tr>
132+
<td> ACTIVATE_INFRA </td>
133+
<td> Whether to activate infrastructure </td>
134+
<td> Optional </td>
135+
<td> true </td>
136+
</tr>
137+
<tr>
138+
<td> CREATE_ENV </td>
139+
<td> Whether to create environment </td>
140+
<td> Optional </td>
141+
<td> true </td>
142+
</tr>
143+
<tr>
144+
<td> ENV_NAME </td>
145+
<td> Name of the environment </td>
146+
<td> Optional </td>
147+
<td> ci-test-env </td>
148+
</tr>
149+
<tr>
150+
<td> ENV_TYPE </td>
151+
<td> Type of environment </td>
152+
<td> Optional </td>
153+
<td> NON_PROD </td>
154+
</tr>
155+
<tr>
156+
<td> INFRA_ACTIVATION_TIMEOUT </td>
157+
<td> Timeout for infrastructure activation </td>
158+
<td> Optional </td>
159+
<td> 5 </td>
160+
</tr>
161+
<tr>
162+
<td> LITMUS_USE_EXISTING_PROBE </td>
163+
<td> Whether to use existing probe </td>
164+
<td> Optional </td>
165+
<td> false </td>
166+
</tr>
167+
<tr>
168+
<td> APP_LABEL </td>
169+
<td> Application label for targeting </td>
170+
<td> Optional </td>
171+
<td> app=nginx-disk-fill </td>
172+
</tr>
173+
</table>
174+
110175
### Infrastructure Setup Variables
111176
112177
<table>

experiments/node-cpu-hog/README.md

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
INSTALL_INFRA: "true"
3535
INFRA_NAME: "node-cpu-hog-infra"
3636
INFRA_NAMESPACE: "litmus"
37-
INFRA_SCOPE: "namespace"
37+
INFRA_SCOPE: "cluster"
3838

3939
# Application Info
4040
APP_NS: default
@@ -104,6 +104,71 @@ The following environment variables are used to configure the node-cpu-hog exper
104104
</tr>
105105
</table>
106106
107+
### Common Environment Variables
108+
109+
<table>
110+
<tr>
111+
<th> Variables </th>
112+
<th> Description </th>
113+
<th> Specify In Chaos Action </th>
114+
<th> Default Value </th>
115+
</tr>
116+
<tr>
117+
<td> KUBECONFIG </td>
118+
<td> Path to kubeconfig file </td>
119+
<td> Optional </td>
120+
<td> /home/runner/.kube/config </td>
121+
</tr>
122+
<tr>
123+
<td> APP_NS </td>
124+
<td> Application namespace for chaos testing </td>
125+
<td> Optional </td>
126+
<td> litmus </td>
127+
</tr>
128+
<tr>
129+
<td> ACTIVATE_INFRA </td>
130+
<td> Whether to activate infrastructure </td>
131+
<td> Optional </td>
132+
<td> true </td>
133+
</tr>
134+
<tr>
135+
<td> CREATE_ENV </td>
136+
<td> Whether to create environment </td>
137+
<td> Optional </td>
138+
<td> true </td>
139+
</tr>
140+
<tr>
141+
<td> ENV_NAME </td>
142+
<td> Name of the environment </td>
143+
<td> Optional </td>
144+
<td> ci-test-env </td>
145+
</tr>
146+
<tr>
147+
<td> ENV_TYPE </td>
148+
<td> Type of environment </td>
149+
<td> Optional </td>
150+
<td> NON_PROD </td>
151+
</tr>
152+
<tr>
153+
<td> INFRA_ACTIVATION_TIMEOUT </td>
154+
<td> Timeout for infrastructure activation </td>
155+
<td> Optional </td>
156+
<td> 5 </td>
157+
</tr>
158+
<tr>
159+
<td> LITMUS_USE_EXISTING_PROBE </td>
160+
<td> Whether to use existing probe </td>
161+
<td> Optional </td>
162+
<td> false </td>
163+
</tr>
164+
<tr>
165+
<td> APP_LABEL </td>
166+
<td> Application label for targeting </td>
167+
<td> Optional </td>
168+
<td> app=nginx-node-cpu-hog </td>
169+
</tr>
170+
</table>
171+
107172
### Infrastructure Setup Variables
108173
109174
<table>
@@ -147,7 +212,7 @@ The following environment variables are used to configure the node-cpu-hog exper
147212
<td> INFRA_SCOPE </td>
148213
<td> Scope of infrastructure </td>
149214
<td> Optional </td>
150-
<td> namespace </td>
215+
<td> cluster </td>
151216
</tr>
152217
<tr>
153218
<td> INFRA_SERVICE_ACCOUNT </td>

0 commit comments

Comments
 (0)