|
2 | 2 |
|
3 | 3 | set -e
|
4 | 4 |
|
| 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 | + |
5 | 49 | ##Extract the base64 encoded config data and write this to the KUBECONFIG
|
6 | 50 | if [ ! -z "$KUBE_CONFIG_DATA" ]
|
7 | 51 | then
|
|
18 | 62 | aws configure set aws_secret_access_key ${AWS_SECRET_ACCESS_KEY}
|
19 | 63 | fi
|
20 | 64 |
|
| 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 | + |
21 | 127 | # Set default values for experiment configuration
|
22 | 128 | EXPERIMENT_IMAGE=${EXPERIMENT_IMAGE:-"litmuschaos/go-runner"}
|
23 | 129 | EXPERIMENT_IMAGE_TAG=${EXPERIMENT_IMAGE_TAG:-"3.18.0"}
|
24 | 130 | TOTAL_CHAOS_DURATION=${TOTAL_CHAOS_DURATION:-60}
|
25 | 131 |
|
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 |
| - |
39 | 132 | # Map experiment names to their corresponding scripts in chaos-ci-lib
|
40 | 133 | case "$EXPERIMENT_NAME" in
|
41 | 134 | "pod-delete")
|
|
0 commit comments