diff --git a/README.md b/README.md index a0cc89a..90cfe93 100644 --- a/README.md +++ b/README.md @@ -7,213 +7,212 @@ [![YouTube Channel](https://img.shields.io/badge/YouTube-Subscribe-red)](https://www.youtube.com/channel/UCa57PMqmz_j0wnteRa9nCaw)

-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. +This repository hosts the Litmus Chaos Charts. A set of related chaos faults are bundled into a Chaos Chart. Chaos Charts are classified into the following categories. -- [Generic Chaos](#generic-chaos) +- [Kubernetes Chaos](#kubernetes-chaos) - [Application Chaos](#application-chaos) - [Platform Chaos](#platform-chaos) -### Generic Chaos +### Kubernetes Chaos -Chaos actions that apply to generic Kubernetes resources are classified into this category. Following chaos experiments are supported under Generic Chaos Chart +Chaos faults that apply to Kubernetes resources are classified in this category. Following chaos faults are supported for Kubernetes: - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
Experiment Name Fault Name Description Link
Container Kill Kill one container in the application pod container-kill container-kill
Disk Fill Fill the Ephemeral Storage of the Pod disk-fill disk-fill
Docker Service Kill Kill docker service of the target node docker-service-kill docker-service-kill
Kubelet Service Kill Kill kubelet service of the target node kubelet-service-kill kubelet-service-kill
Node CPU Hog Stress the cpu of the target node node-cpu-hog node-cpu-hog
Node Drain Drain the target node node-drain node-drain
Node IO Stress Stress the IO of the target node node-io-stress node-io-stress
Node Memory Hog Stress the memory of the target node node-memory-hog node-memory-hog
Node Restart Restart the target node node-restart node-restart
Node Taint Taint the target node node-taint node-taint
Pod Autoscaler Scale the replicas of the target application pod-autoscaler pod-autoscaler
Pod CPU Hog Stress the CPU of the target pod pod-cpu-hog pod-cpu-hog
Pod Delete Delete the target pods pod-delete pod-delete
Pod DNS Spoof Spoof dns requests to desired target hostnames pod-dns-spoof pod-dns-spoof
Pod DNS Error Error the dns requests of the target pod pod-dns-error pod-dns-error
Pod IO Stress Stress the IO of the target pod pod-io-stress pod-io-stress
Pod Memory Hog Stress the memory of the target pod pod-memory-hog pod-memory-hog
Pod Network Latency Induce the network latency in target pod pod-network-latency pod-network-latency
Pod Network Corruption Induce the network packet corruption in target pod pod-network-corruption pod-network-corruption
Pod Network Duplication Induce the network packet duplication in target pod pod-network-duplication pod-network-duplication
Pod Network Loss Induce the network loss in target pod pod-network-loss pod-network-loss
Pod Network Partition Disrupt network connectivity to kubernetes pods pod-network-partition 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. +While chaos faults under the Kubernetes category offer the ability to induce chaos into Kubernetes resources, it is difficult to analyze and conclude if the induced chaos found a weakness in a given application. The application specific chaos faults are built with some checks on *pre-conditions* and some expected outcomes after the chaos injection. The result of the chaos faults is determined by matching the outcome with the expected outcome. - + - - - + + +
Experiment Name Fault Category Description Link
OpenEBS Experiments Injects faults in OpenEBS tool OpenEBS experiments Spring Boot Faults Injects faults in Spring Boot applications Spring Boot Faults
### 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) +Chaos faults that inject chaos into the platform and infrastructure resources 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 +Following chaos faults are classified in this category: - + - + - + - + - + - + - + - + - +
Experiment Name Fault Category Description Link
AWS Experiments AWS Faults AWS Platform specific chaos AWS Experiments AWS Faults
Azure Experiments Azure Faults Azure Platform specific chaos Azure Experiments Azure Faults
GCP Experiments GCP Faults GCP Platform specific chaos GCP Experiments GCP Faults
VMWare Experiments VMWare Faults VMWare Platform specific chaos VMWare Experiments VMWare Faults
-## Installation Steps for Chart Releases +## Installation Steps for Chart Releases -*Note: Supported from release 1.1.0* +*Note: Supported from release 3.0.0* -- To install the chaos experiments from a specific chart for a given release, execute the following commands +- To install the chaos faults from a specific chart for a given release, execute the following commands with the desired ``, `` & `` ```bash ## downloads and unzips the released source tar -zxvf <(curl -sL https://github.com/litmuschaos/chaos-charts/archive/.tar.gz) -## installs the chaosexperiment resources +## installs the chaosexperiment resources find chaos-charts- -name experiments.yaml | grep | xargs kubectl apply -n -f -``` -- For example, to install the *generic* experiment chart bundle for release *1.1.0*, in the *sock-shop* namespace, run: +``` +- For example, to install the *Kubernetes* fault chart bundle for release *3.0.0*, in the *sock-shop* namespace, run: ```bash -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 +tar -zxvf <(curl -sL https://github.com/litmuschaos/chaos-charts/archive/3.0.0.tar.gz) +find chaos-charts-3.0.0 -name experiments.yaml | grep kubernetes | 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: +- If you would like to install a specific fault, replace the `experiments.yaml` in the above command with the relative path of the fault manifest within the parent chart. For example, to install only the *pod-delete* fault, run: ```bash -find chaos-charts-1.1.0 -name experiment.yaml | grep 'generic/pod-delete' | xargs kubectl apply -n sock-shop -f +find chaos-charts-3.0.0 -name fault.yaml | grep 'kubernetes/pod-delete' | xargs kubectl apply -n sock-shop -f ``` diff --git a/experiments/bank-of-anthos/experiment.yaml b/experiments/bank-of-anthos/experiment.yaml index 7d086dc..b11b172 100644 --- a/experiments/bank-of-anthos/experiment.yaml +++ b/experiments/bank-of-anthos/experiment.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: - name: argowf-chaos-bank-of-anthos-resiliency- + name: argowf-chaos-bank-of-anthos-resiliency namespace: litmus labels: subject: "{{workflow.parameters.appNamespace}}_bank-of-anthos" @@ -41,7 +41,7 @@ spec: image: litmuschaos/k8s:latest command: [sh, -c] args: - - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=charts/generic/experiments.yaml -n + - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=faults/kubernetes/experiments.yaml -n {{workflow.parameters.adminModeNamespace}} ; sleep 30" - name: pod-network-loss diff --git a/experiments/bank-of-anthos/experiment_cron.yaml b/experiments/bank-of-anthos/experiment_cron.yaml index 3222b99..85ac8df 100644 --- a/experiments/bank-of-anthos/experiment_cron.yaml +++ b/experiments/bank-of-anthos/experiment_cron.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow metadata: - name: argowf-chaos-bank-of-anthos-resiliency-cron-wf- + name: argowf-chaos-bank-of-anthos-resiliency-cron-wf namespace: litmus labels: subject: "{{workflow.parameters.appNamespace}}_bank-of-anthos" @@ -45,7 +45,7 @@ spec: image: litmuschaos/k8s:latest command: [sh, -c] args: - - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=charts/generic/experiments.yaml -n + - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=faults/kubernetes/experiments.yaml -n {{workflow.parameters.adminModeNamespace}} ; sleep 30" - name: pod-network-loss diff --git a/experiments/icons/namespaced-scope-chaos.png b/experiments/icons/namespaced-scope-chaos.png new file mode 100644 index 0000000..16aa7b4 Binary files /dev/null and b/experiments/icons/namespaced-scope-chaos.png differ diff --git a/experiments/icons/node-cpu-hog.png b/experiments/icons/node-cpu-hog.png new file mode 100644 index 0000000..aa91993 Binary files /dev/null and b/experiments/icons/node-cpu-hog.png differ diff --git a/experiments/icons/node-memory-hog.png b/experiments/icons/node-memory-hog.png new file mode 100644 index 0000000..b50396f Binary files /dev/null and b/experiments/icons/node-memory-hog.png differ diff --git a/experiments/icons/pod-cpu-hog.png b/experiments/icons/pod-cpu-hog.png new file mode 100644 index 0000000..c152ab5 Binary files /dev/null and b/experiments/icons/pod-cpu-hog.png differ diff --git a/experiments/icons/pod-delete.png b/experiments/icons/pod-delete.png new file mode 100644 index 0000000..16aa7b4 Binary files /dev/null and b/experiments/icons/pod-delete.png differ diff --git a/experiments/icons/pod-memory-hog.png b/experiments/icons/pod-memory-hog.png new file mode 100644 index 0000000..e49a468 Binary files /dev/null and b/experiments/icons/pod-memory-hog.png differ diff --git a/experiments/namespaced-scope-chaos/experiment.yaml b/experiments/namespaced-scope-chaos/experiment.yaml index 73273d9..7b8da3d 100644 --- a/experiments/namespaced-scope-chaos/experiment.yaml +++ b/experiments/namespaced-scope-chaos/experiment.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: - name: argowf-chaos-hello-world-pod-delete- + name: argowf-chaos-hello-world-pod-delete labels: subject: "{{workflow.parameters.adminModeNamespace}}_hello-world" spec: diff --git a/experiments/node-cpu-hog/experiment.yaml b/experiments/node-cpu-hog/experiment.yaml index 4a63807..c667ea3 100644 --- a/experiments/node-cpu-hog/experiment.yaml +++ b/experiments/node-cpu-hog/experiment.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: - name: argowf-chaos-node-cpu-hog- + name: argowf-chaos-node-cpu-hog namespace: litmus labels: subject: "{{workflow.parameters.context}}" diff --git a/experiments/node-memory-hog/experiment.yaml b/experiments/node-memory-hog/experiment.yaml index 1003d46..678a2c6 100644 --- a/experiments/node-memory-hog/experiment.yaml +++ b/experiments/node-memory-hog/experiment.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: - name: argowf-chaos-node-memory-hog- + name: argowf-chaos-node-memory-hog namespace: litmus labels: subject: "{{workflow.parameters.context}}" diff --git a/experiments/pod-cpu-hog/experiment.yaml b/experiments/pod-cpu-hog/experiment.yaml index 40e7eb5..5a774f9 100644 --- a/experiments/pod-cpu-hog/experiment.yaml +++ b/experiments/pod-cpu-hog/experiment.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: - name: argowf-chaos-pod-cpu-hog- + name: argowf-chaos-pod-cpu-hog namespace: litmus labels: subject: "{{workflow.parameters.appNamespace}}_kube-proxy" diff --git a/experiments/pod-delete/experiment.yaml b/experiments/pod-delete/experiment.yaml index 5e38c34..740d1c1 100644 --- a/experiments/pod-delete/experiment.yaml +++ b/experiments/pod-delete/experiment.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: - name: argowf-chaos-pod-delete- + name: argowf-chaos-pod-delete namespace: litmus labels: subject: "{{workflow.parameters.appNamespace}}_kube-proxy" diff --git a/experiments/pod-memory-hog/experiment.yaml b/experiments/pod-memory-hog/experiment.yaml index 35e4d6f..bf3cac0 100644 --- a/experiments/pod-memory-hog/experiment.yaml +++ b/experiments/pod-memory-hog/experiment.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: - name: argowf-chaos-pod-memory-hog- + name: argowf-chaos-pod-memory-hog namespace: litmus labels: subject: "{{workflow.parameters.appNamespace}}_kube-proxy" diff --git a/experiments/podtato-head/experiment.yaml b/experiments/podtato-head/experiment.yaml index 21c91e9..ddaf8fe 100644 --- a/experiments/podtato-head/experiment.yaml +++ b/experiments/podtato-head/experiment.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: - name: argowf-podtato-head-chaos- + name: argowf-podtato-head-chaos namespace: litmus labels: subject : "{{workflow.parameters.adminModeNamespace}}_podtato-main" @@ -39,7 +39,7 @@ spec: image: litmuschaos/k8s:latest command: [sh, -c] args: - - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=charts/generic/experiments.yaml -n + - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=faults/kubernetes/experiments.yaml -n {{workflow.parameters.adminModeNamespace}} ; sleep 30" - name: pod-delete diff --git a/experiments/podtato-head/experiment_cron.yaml b/experiments/podtato-head/experiment_cron.yaml index cdd470c..8c65697 100644 --- a/experiments/podtato-head/experiment_cron.yaml +++ b/experiments/podtato-head/experiment_cron.yaml @@ -43,7 +43,7 @@ spec: image: litmuschaos/k8s:latest command: [sh, -c] args: - - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=charts/generic/experiments.yaml -n + - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=faults/kubernetes/experiments.yaml -n {{workflow.parameters.adminModeNamespace}} ; sleep 30" - name: pod-delete diff --git a/experiments/sock-shop-promProbe/experiment.yaml b/experiments/sock-shop-promProbe/experiment.yaml index 6c6f74e..2ce1789 100644 --- a/experiments/sock-shop-promProbe/experiment.yaml +++ b/experiments/sock-shop-promProbe/experiment.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: - name: argowf-chaos-sock-shop-resiliency- + name: argowf-chaos-sock-shop-resiliency namespace: litmus labels: subject: "{{workflow.parameters.appNamespace}}_sock-shop" @@ -53,7 +53,7 @@ spec: image: litmuschaos/k8s:latest command: [sh, -c] args: - - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=charts/generic/experiments.yaml -n + - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=faults/kubernetes/experiments.yaml -n {{workflow.parameters.adminModeNamespace}} ; sleep 30" - name: pod-cpu-hog diff --git a/experiments/sock-shop-promProbe/experiment_cron.yaml b/experiments/sock-shop-promProbe/experiment_cron.yaml index ab218e3..a1672d5 100644 --- a/experiments/sock-shop-promProbe/experiment_cron.yaml +++ b/experiments/sock-shop-promProbe/experiment_cron.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow metadata: - name: argowf-chaos-sock-shop-resiliency-cron-wf- + name: argowf-chaos-sock-shop-resiliency-cron-wf namespace: litmus labels: subject: "{{workflow.parameters.appNamespace}}_sock-shop" @@ -57,7 +57,7 @@ spec: image: litmuschaos/k8s:latest command: [sh, -c] args: - - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=charts/generic/experiments.yaml -n + - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=faults/kubernetes/experiments.yaml -n {{workflow.parameters.adminModeNamespace}} ; sleep 30" - name: pod-cpu-hog diff --git a/experiments/sock-shop/experiment.yaml b/experiments/sock-shop/experiment.yaml index 4a3c544..d0cb1e2 100644 --- a/experiments/sock-shop/experiment.yaml +++ b/experiments/sock-shop/experiment.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: - name: argowf-chaos-sock-shop-resiliency- + name: argowf-chaos-sock-shop-resiliency namespace: litmus labels: subject: "{{workflow.parameters.appNamespace}}_sock-shop" @@ -53,7 +53,7 @@ spec: image: litmuschaos/k8s:latest command: [sh, -c] args: - - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=charts/generic/experiments.yaml -n + - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=faults/kubernetes/experiments.yaml -n {{workflow.parameters.adminModeNamespace}} ; sleep 30" - name: pod-cpu-hog diff --git a/experiments/sock-shop/experiment_cron.yaml b/experiments/sock-shop/experiment_cron.yaml index 0966740..102ddfd 100644 --- a/experiments/sock-shop/experiment_cron.yaml +++ b/experiments/sock-shop/experiment_cron.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow metadata: - name: argowf-chaos-sock-shop-resiliency-cron-wf- + name: argowf-chaos-sock-shop-resiliency-cron-wf namespace: litmus labels: subject: "{{workflow.parameters.appNamespace}}_sock-shop" @@ -57,7 +57,7 @@ spec: image: litmuschaos/k8s:latest command: [sh, -c] args: - - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=charts/generic/experiments.yaml -n + - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=faults/kubernetes/experiments.yaml -n {{workflow.parameters.adminModeNamespace}} ; sleep 30" - name: pod-cpu-hog diff --git a/faults/aws/aws.chartserviceversion.yaml b/faults/aws/aws.chartserviceversion.yaml index 7d98bc1..a28f3df 100644 --- a/faults/aws/aws.chartserviceversion.yaml +++ b/faults/aws/aws.chartserviceversion.yaml @@ -54,5 +54,5 @@ spec: - name: Documentation url: "https://litmuschaos.github.io/litmus/experiments/categories/contents/#aws" icon: - - url: https://raw.githubusercontent.com/litmuschaos/charthub.litmuschaos.io/master/public/litmus.ico + - url: https://github.com/litmuschaos/chaos-charts/blob/master/faults/aws/icons/aws.png mediatype: image/png diff --git a/faults/azure/azure.chartserviceversion.yaml b/faults/azure/azure.chartserviceversion.yaml index f01bd6e..8161d9f 100644 --- a/faults/azure/azure.chartserviceversion.yaml +++ b/faults/azure/azure.chartserviceversion.yaml @@ -35,5 +35,5 @@ spec: - name: Documentation url: "https://litmuschaos.github.io/litmus/experiments/categories/contents/#azure" icon: - - url: https://raw.githubusercontent.com/litmuschaos/charthub.litmuschaos.io/master/public/litmus.ico + - url: https://github.com/litmuschaos/chaos-charts/blob/master/faults/azure/icons/azure.png mediatype: image/png diff --git a/faults/gcp/gcp.chartserviceversion.yaml b/faults/gcp/gcp.chartserviceversion.yaml index 060dce5..b8896f1 100644 --- a/faults/gcp/gcp.chartserviceversion.yaml +++ b/faults/gcp/gcp.chartserviceversion.yaml @@ -41,5 +41,5 @@ spec: - name: Documentation url: "https://litmuschaos.github.io/litmus/experiments/categories/contents/#gcp" icon: - - url: https://raw.githubusercontent.com/litmuschaos/charthub.litmuschaos.io/master/public/litmus.ico + - url: https://github.com/litmuschaos/chaos-charts/blob/master/faults/gcp/icons/gcp.png mediatype: image/png diff --git a/faults/kubernetes/kubernetes.chartserviceversion.yaml b/faults/kubernetes/kubernetes.chartserviceversion.yaml index 6b425ad..2c17f0e 100644 --- a/faults/kubernetes/kubernetes.chartserviceversion.yaml +++ b/faults/kubernetes/kubernetes.chartserviceversion.yaml @@ -119,5 +119,5 @@ spec: - name: Documentation url: https://litmuschaos.github.io/litmus/experiments/categories/contents/#kubernetes icon: - - url: https://raw.githubusercontent.com/litmuschaos/charthub.litmuschaos.io/master/public/litmus.ico + - url: https://github.com/litmuschaos/chaos-charts/blob/master/faults/kubernetes/icons/kubernetes.png mediatype: image/png diff --git a/faults/spring-boot/spring-boot.chartserviceversion.yaml b/faults/spring-boot/spring-boot.chartserviceversion.yaml index 7f5c800..8f446b9 100644 --- a/faults/spring-boot/spring-boot.chartserviceversion.yaml +++ b/faults/spring-boot/spring-boot.chartserviceversion.yaml @@ -45,5 +45,5 @@ spec: - name: Documentation url: https://spring.io/projects/spring-boot icon: - - url: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/spring-boot/icons/spring-boot.png + - url: https://github.com/litmuschaos/chaos-charts/blob/master/faults/spring-boot/icons/spring-boot.png mediatype: image/png diff --git a/faults/vmware/vmware.chartserviceversion.yaml b/faults/vmware/vmware.chartserviceversion.yaml index b92c78c..1dcdb6f 100644 --- a/faults/vmware/vmware.chartserviceversion.yaml +++ b/faults/vmware/vmware.chartserviceversion.yaml @@ -34,5 +34,5 @@ spec: - name: Documentation url: "https://litmuschaos.github.io/litmus/experiments/categories/contents/#vmware" icon: - - url: https://raw.githubusercontent.com/litmuschaos/charthub.litmuschaos.io/master/public/litmus.ico + - url: https://github.com/litmuschaos/chaos-charts/blob/master/faults/vmware/icons/vmware.png mediatype: image/png