/chaos-charts

Repository to hold chaos experiments resource YAML bundles

Primary LanguageGoApache License 2.0Apache-2.0

Chaos-Charts

Slack Channel GitHub Workflow Docker Pulls GitHub issues Twitter Follow YouTube Channel

This repository hosts the Litmus Chaos Charts. A set of related chaos experiments are bundled into a Chaos Chart. Chaos Charts are classified into the following categories.

Generic Chaos

Chaos actions that apply to generic Kubernetes resources are classified into this category. Following chaos experiments are supported under Generic Chaos Chart

Experiment Name Description Link
Container Kill Kill one container in the application pod container-kill
Disk Fill Fill the Ephemeral Storage of the Pod disk-fill
Docker Service Kill Kill docker service of the target node docker-service-kill
Kubelet Service Kill Kill kubelet service of the target node kubelet-service-kill
Node CPU Hog Stress the cpu of the target node node-cpu-hog
Node Drain Drain the target node node-drain
Node IO Stress Stress the IO of the target node node-io-stress
Node Memory Hog Stress the memory of the target node node-memory-hog
Node Restart Restart the target node node-restart
Node Taint Taint the target node node-taint
Pod Autoscaler Scale the replicas of the target application pod-autoscaler
Pod CPU Hog Stress the CPU of the target pod pod-cpu-hog
Pod Delete Delete the target pods pod-delete
Pod DNS Spoof Spoof dns requests to desired target hostnames pod-dns-spoof
Pod DNS Error Error the dns requests of the target pod pod-dns-error
Pod IO Stress Stress the IO of the target pod pod-io-stress
Pod Memory Hog Stress the memory of the target pod pod-memory-hog
Pod Network Latency Induce the network latency in target pod pod-network-latency
Pod Network Corruption Induce the network packet corruption in target pod pod-network-corruption
Pod Network Duplication Induce the network packet duplication in target pod pod-network-duplication
Pod Network Loss Induce the network loss in target pod pod-network-loss
Pod Network Partition Disrupt network connectivity to kubernetes pods pod-network-partition

Application Chaos

While Chaos Experiments under the Generic category offer the ability to induce chaos into Kubernetes resources, it is difficult to analyze and conclude if the chaos induced found a weakness in a given application. The application specific chaos experiments are built with some checks on pre-conditions and some expected outcomes after the chaos injection. The result of the chaos experiment is determined by matching the outcome with the expected outcome.

Experiment Name Description Link
OpenEBS Experiments Injects faults in OpenEBS tool OpenEBS experiments
Kafka Experiments Inject faults in kafka application kafka experiments
Cassandra Experiments Inject faults in cassandra application cassandra experiments

Platform Chaos

Chaos experiments that inject chaos into the platform resources of Kubernetes are classified into this category. Management of platform resources vary significantly from each other, Chaos Charts may be maintained separately for each platform (For example, AWS, GCP, Azure, VMWare etc)

Following Platform Chaos experiments are available on ChaosHub

Experiment Name Description Link
AWS Experiments AWS Platform specific chaos AWS Experiments
Azure Experiments Azure Platform specific chaos Azure Experiments
GCP Experiments GCP Platform specific chaos GCP Experiments
VMWare Experiments VMWare Platform specific chaos VMWare Experiments

Installation Steps for Chart Releases

Note: Supported from release 1.1.0

  • To install the chaos experiments from a specific chart for a given release, execute the following commands with the desired <release_version>, <chart_name> & <namespace>
## downloads and unzips the released source
tar -zxvf <(curl -sL https://github.com/litmuschaos/chaos-charts/archive/<release_version>.tar.gz)

## installs the chaosexperiment resources 
find chaos-charts-<release_version> -name experiments.yaml | grep <chart-name> | xargs kubectl apply -n <namespace> -f
  • For example, to install the generic experiment chart bundle for release 1.1.0, in the sock-shop namespace, run:
tar -zxvf <(curl -sL https://github.com/litmuschaos/chaos-charts/archive/1.1.0.tar.gz)
find chaos-charts-1.1.0 -name experiments.yaml | grep generic | xargs kubectl apply -n sock-shop -f
  • If you would like to install a specific experiment, replace the experiments.yaml in the above command with the relative path of the experiment manifest within the parent chart. For example, to install only the pod-delete experiment, run:
find chaos-charts-1.1.0 -name experiment.yaml | grep 'generic/pod-delete' | xargs kubectl apply -n sock-shop -f

License

FOSSA Status