Chaos Chart : ChaosMonkeys
This helm chart used to deploy kube-monkey on Openshift or Kubernetes cluster. Kube-monkey is a chaos injection tool that randomly terminates pods during business hours to test application resilience.
This chart is part of the chaos startx helm chart series focused on deploying various kind of chaos tools for cluster infrastructure or applications chaos-testing. chaos-xxx charts.
Requirements and guidelines
Read the startx helm-repository homepage for more information on how to use these resources.
Deploy this helm chart on openshift
1. Connect to your Openshift cluster
oc login -t <token> <cluster-url>
2. Install the repository
helm repo add startx https://helm-repository.readthedocs.io/en/latest/repos/stable/
3. Get information about this chart
helm show chart startx/chaos-monkey
4. Install this component
# Install the monkey project
helm install --set project.enabled=true chaos-monkey-project startx/chaos-monkey
# Deploy the monkey instance
helm install --set monkey.enabled=true chaos-monkey-instance startx/chaos-monkey
Values dictionary
context values dictionary
| Key | Default | Description |
|---|---|---|
| context.scope | default | Name of the global scope for this application (organisational tenant) |
| context.cluster | localhost | Name of the cluster running this application (platform tenant) |
| context.environment | dev | Name of the environment for this application (ex: dev, factory, preprod or prod) |
| context.component | demo | Component name of this application (logical tenant) |
| context.app | kube-monkey | Application name (functional tenant, default use Chart name) |
| context.version | 0.0.1 | Version name of this application (default use Chart appVersion) |
chaos-monkey values dictionary
| Key | Default | Description |
|---|---|---|
| project | {…} | Configuration of the project (or namespace). Inherit from the project chart (see chart options for more options) |
| project.enable | false | Enable creation of the namespace |
| monkey | {…} | Configuration of the kube-monkey deployment. Inherit from the asobti kube-monkey chart (see chart options for more options) |
| monkey.enable | false | Enable deploying the kube-monkey chaos injector |
Values files
Default values file (values.yaml)
Simple monkey with default configuration :
- 1 project named chaos-monkey
- 1 scc with privileged context for monkey deployment
- 1 kube-monkey deployment using asobti helm chart
# Install the kube-monkey project
helm install --set project.enable=true chaos-monkey-project startx/chaos-monkey
# Deploy the kube-monkey instance
helm install --set monkey.enable=true -n chaos-monkey chaos-monkey-instance startx/chaos-monkey
STARTX values file (values-startx-xxx.yaml)
Same as the default configuration but with namespace prefixed with startx-
# Configuration running demo example configuration
helm install chaos-monkey-project startx/chaos-monkey -f https://raw.githubusercontent.com/startxfr/helm-repository/master/charts/chaos-monkey/values-startx-project.yaml
helm install chaos-monkey-deploy startx/chaos-monkey -f https://raw.githubusercontent.com/startxfr/helm-repository/master/charts/chaos-monkey/values-startx-deploy.yaml
Usage examples
Deploy kube-monkey with basic kill schedule
Enable kube-monkey to run daily at 8am and terminate pods in opted-in namespaces:
# my-monkey-values.yaml
context:
scope: myorg
cluster: prod-cluster
environment: chaos
component: monkey
app: kube-monkey
monkey:
enabled: true
config:
dryRun: false
timezone: America/New_York
startHour: 8
endHour: 17
gracePeriodSec: 5
killAllOnFail: false
debug:
enabled: false
helm install chaos-monkey-instance startx/chaos-monkey -f my-monkey-values.yaml -n chaos-monkey
Dry-run mode (simulate without killing)
Test the configuration without actually terminating pods:
# my-monkey-dryrun-values.yaml
monkey:
enabled: true
config:
dryRun: true
timezone: Europe/Paris
startHour: 9
endHour: 18
helm install chaos-monkey-dryrun startx/chaos-monkey -f my-monkey-dryrun-values.yaml -n chaos-monkey
Opt in a deployment for kube-monkey
Add annotations to your application’s Deployment to opt in and set the kill probability:
# In your application Deployment manifest
metadata:
labels:
kube-monkey/enabled: "enabled"
annotations:
kube-monkey/enabled: "enabled"
kube-monkey/identifier: "myapp"
kube-monkey/mtbf: "3" # mean time between failures (days)
kube-monkey/kill-mode: "fixed" # or "random-max-percent"
kube-monkey/kill-value: "1" # number of pods to kill
ArgoCD deployment
Deploy via ArgoCD Application
chaos-monkey deploys kube-monkey which runs on a schedule (configurable startHour/endHour). Target deployments must opt in via annotations.
git clone https://gitlab.com/startx1/helm.git
cd helm-repository/charts/chaos-monkey/examples/argocd/
oc apply -k .
History
| Release | Date | Description |
|---|---|---|
| 16.19.59 | 2024-12-09 | Align all chart to the 16.19.59 release |
| 17.14.19 | 2025-03-12 | Align all chart to the 17.14.19 release |
| 17.14.90 | 2025-04-30 | Publish stable release for 4.17 version |
| 18.11.71 | 2025-11-27 | Align all charts to the same releas |
| 18.23.0 | 2026-02-28 | Start 4.19 branch |
| 19.23.15 | 2026-03-02 | Prepare upgrading dependency to 19.23.11 |
| 19.23.17 | 2026-03-02 | Align all dependencies to chart v19.23.11 |
| 20.14.7 | 2026-03-02 | Update dependencies to version 20.14.0 |
| 20.14.15 | 2026-03-02 | Update all chrat to OCP version 4.20.14 |
| 21.3.0 | 2026-03-02 | Update all chart to OCP version 4.21.3 |
| 21.3.1 | 2026-03-02 | Prepare release 21.3.x with 21.x dependencies |
| 21.3.3 | 2026-03-02 | Upgrade dependencies to v21.3.0 |
| 21.3.4 | 2026-06-17 | 21.3.9 |
| 21.3.11 | 2026-06-17 | publish stable update for the full repository |
| 21.3.27 | 2026-06-19 | publish stable update for the full repository |
| 21.3.55 | 2026-06-19 | publish stable update for the full repository |
| 21.3.56 | 2026-06-19 | publish stable update for the full repository |
| 21.3.56 | 2026-06-19 | publish stable update for the full repository |
| 21.3.67 | 2026-06-20 | publish stable update for the full repository |
| 21.3.68 | 2026-06-20 | update basic dependencies to v21.3.70 |
| 21.3.68 | 2026-06-20 | update all charts dependencies to v21.3.70 |
| 21.3.68 | 2026-06-20 | update all charts dependencies to v21.3.70 |
| 21.3.102 | 2026-06-20 | publish stable update for the full repository |
| 21.3.103 | 2026-06-20 | Improve chaos-monkey options |
| 21.3.103 | 2026-06-21 | publish stable update for the full repository |
| 21.3.103 | 2026-06-21 | publish stable update for the full repository |
| 21.3.104 | 2026-06-21 | publish stable update for the full repository |
| 21.3.105 | 2026-06-21 | publish stable update for the full repository |
| 21.3.105 | 2026-06-21 | publish stable update for the full repository |
| 21.3.105 | 2026-06-21 | publish stable update for the full repository |
| 21.3.106 | 2026-06-21 | publish stable update for the full repository |
| 21.3.107 | 2026-06-21 | publish stable update for the full repository |
| 21.3.167 | 2026-06-23 | publish stable update for the full repository |
| 21.3.181 | 2026-06-23 | publish stable update for the full repository |
| 21.3.182 | 2026-06-23 | publish stable update for the full repository |