Compare commits

..

2 Commits

Author SHA1 Message Date
Travis CI 7fdb053854 1044: version upgraded for chaos-charts 2020-06-15 18:38:42 +00:00
Karthik Satchitanand 415512b845
(chore)charts: update image to 1.5.0 and push script to release branch (#244)
Signed-off-by: ksatchit <karthik.s@mayadata.io>
2020-06-16 00:07:27 +05:30
490 changed files with 8988 additions and 26979 deletions

View File

@ -1,37 +0,0 @@
---
# This workflow will combine the experiment CRs for different
# Categories of experiments into the experiment.yaml in respective
# Chart directory. It will only build and not push the changes.
name: ChaosCharts
on:
pull_request:
types: [ opened, synchronize, reopened ]
jobs:
build:
runs-on: ubuntu-latest
steps:
# Install golang
- uses: actions/setup-go@v2
with:
go-version: '1.14'
# Setup gopath
- name: Setting up GOPATH
run: |
echo "GOPATH=${GITHUB_WORKSPACE}/go" >> $GITHUB_ENV
# Checkout to the latest commit
# On specific directory/path
- uses: actions/checkout@v2
with:
path: go/src/github.com/${{github.repository}}
# Combine the experiment CRs
- name: Combine experiment CR
run: |
export PATH=$PATH:$(go env GOPATH)/bin
cd ${GOPATH}/src/github.com/${{github.repository}}
make combineExpCR

View File

@ -1,43 +0,0 @@
---
# This workflow will combine the experiment CRs for different
# Categories of experiments into the experiment.yaml in respective
# Chart directory and push the changes.
name: ChaosCharts
on: [ push ]
jobs:
push:
runs-on: ubuntu-latest
if: github.repository == 'litmuschaos/chaos-charts'
steps:
# Install golang
- uses: actions/setup-go@v2
with:
go-version: '1.14'
# Setup gopath
- name: Setting up GOPATH
run: |
echo "GOPATH=${GITHUB_WORKSPACE}/go" >> $GITHUB_ENV
# Checkout to the latest commit
# On specific directory/path
- uses: actions/checkout@v2
with:
path: go/src/github.com/${{github.repository}}
token: ${{ secrets.ADMIN_TOKEN }}
# Combine the experiment CRs
- name: Combine experiment CR
run: |
export PATH=$PATH:$(go env GOPATH)/bin
cd ${GOPATH}/src/github.com/${{github.repository}}
make combineExpCR
# Commit and push the changes from the chart directory
- name: Commit and Push the changes
run: |
cd ${GOPATH}/src/github.com/${{github.repository}}
make push

View File

@ -1,45 +0,0 @@
# The CI will create a release branch
# with CR updated with release tag
# The workflow will trigger when a release tag is created
name: ChaosCharts-Release
on:
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
tags:
description: 'Test scenario tags'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# It will checkout to the relase branch provided in the secret
- name: Checkout to release branch
run: |
git config --local user.email "litmuschaos@gmail.com"
git config --local user.name "LitmusChaos"
git checkout -b ${{ secrets.RELEASE_BRANCH }}
# It will update the image tag as provided in the secret
- name: Update the chaos-charts version
run: |
find charts -type f -exec sed -i 's/\:latest/\:${{ secrets.RELEASE_VERSION }}/g' {} \;
- name: Commit files
run: |
git add .
git commit -s -m "New Release ${{ secrets.RELEASE_VERSION }}"
# It will push the changes in realse branch
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ secrets.RELEASE_BRANCH }}

215
.gitignore vendored
View File

@ -1,215 +0,0 @@
# Created by https://www.toptal.com/developers/gitignore/api/git,visualstudiocode,goland+all,jetbrains+all,macos
# Edit at https://www.toptal.com/developers/gitignore?templates=git,visualstudiocode,goland+all,jetbrains+all,macos
### Git ###
# Created by git for backups. To disable backups in Git:
# $ git config --global mergetool.keepBackup false
*.orig
# Created by git when using merge tools for conflicts
*.BACKUP.*
*.BASE.*
*.LOCAL.*
*.REMOTE.*
*_BACKUP_*.txt
*_BASE_*.txt
*_LOCAL_*.txt
*_REMOTE_*.txt
### GoLand+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### GoLand+all Patch ###
# Ignore everything but code style settings and run configurations
# that are supposed to be shared within teams.
.idea/*
!.idea/codeStyles
!.idea/runConfigurations
### JetBrains+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
# AWS User-specific
# Generated files
# Sensitive or high-churn files
# Gradle
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
# Mongo Explorer plugin
# File-based project format
# IntelliJ
# mpeltonen/sbt-idea plugin
# JIRA plugin
# Cursive Clojure plugin
# SonarLint plugin
# Crashlytics plugin (for Android Studio and IntelliJ)
# Editor-based Rest Client
# Android studio 3.1+ serialized cache file
### JetBrains+all Patch ###
# Ignore everything but code style settings and run configurations
# that are supposed to be shared within teams.
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### macOS Patch ###
# iCloud generated files
*.icloud
### VisualStudioCode ###
.vscode/
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
# End of https://www.toptal.com/developers/gitignore/api/git,visualstudiocode,goland+all,jetbrains+all,macos

10
.travis.yml Normal file
View File

@ -0,0 +1,10 @@
dist: xenial # ubuntu 16.04 distro
script:
# Install dependencies
- make deps
# It will ignore if travis ci committed, else works as it is.
- author=`git log -1 --pretty=format:'%an'` && if [[ "$author" != "Travis CI" ]]; then make versionmaker; fi
- make combineExpCR
after_success:
# runs only when PR is merged and push the version file to master version
- if [[ $TRAVIS_PULL_REQUEST == 'false' ]]; then make push; fi

View File

@ -6,37 +6,5 @@ contributions. This repository is the canonical source for the chaos charts that
Chaos Charts are a groups of categorized chaos experiments, represented as custom resource definitions that can be executed by the
[Litmus Chaos Operator](https://github.com/litmuschaos/chaos-operator). We would love to see your charts added to the list of community-charts.
## Categories In Charts
To get started, refer the [developer guide](https://github.com/litmuschaos/litmus/tree/master/contribute/developer_guide)
- <b>Generic</b>: It contains chaos to disrupt state of kubernetes resources. i.e, pod-delete
- <b>OpenEBS</b>: It contains chaos to disrupt state of OpenEBS control/date plane components. i.e, openebs-target-failure
- <b>Coredns</b>: It contains chaos to disrupt state of Coredns pod. i.e, coredns-pod-delete
- <b>Kube-AWS</b>: It contains chaos to disrupt state of AWS resources running part of the kubernetes cluster. i.e, ebs-loss
- <b>Kube-Components</b>: It contains chaos to disrupt the state of kubernetes components. i.e, k8-kube-proxy.
## Components/Files Of A Category
- <b>experiments.yaml</b>: It contains combined/concatenated experiments CRs present inside that category.
- <b><</b><b>category</b><b>>-chartserviceversion.yaml</b>: It contains all the metadata of the category, which is rendered in ChaosHub.
- <b><</b><b>category</b><b>>.package.yaml</b>: It contains list of all experiments present in that category.
- <b>icons</b>: `icons` directory contains category icon and icons of all experiments present inside that category. The name of the icon file should follow this `<exp-name>.png` convention.
## Components/Files Of A Experiment
- <b>engine.yaml</b>: It contains ChaosEngine CR manifest of the experiment.
- <b>experiment.yaml</b>: It contains ChaosExperiment CR manifest of the experiment.
- <b>rbac.yaml</b>: It contains RBAC(serviceAccount, Role/ClusterRole, RoleBinding/ClusterRoleBinding) manifest of the experiment.
- <b><</b><b>exp-name</b><b>>-chartserviceversion.yaml</b>: It contains all the metadata of the experiment, which is rendered in ChaosHub.
## Raising PR For New Experiment
- It should contains all the required file for experiment(engine.yaml, experiment.yaml, rbac.yaml, <exp-name>-chartserviceversion.yaml). For more details [refer](https://github.com/litmuschaos/chaos-charts/blob/master/CONTRIBUTING.md#componentsfiles-of-a-experiment).
- If the experiment belongs to an existing category then add an entry for the experiment in `<category.package.yaml>` and `<category.chartserviceversion.yaml>`. Add the icon for the experiment in `<category/icons>` directory. The name of the icon should be `<exp-name.png>`.
- If the experiment belongs to a new category then Create all the required files for the category and add the entries. For more details [refer](https://github.com/litmuschaos/chaos-charts/blob/master/CONTRIBUTING.md#componentsfiles-of-a-category)
<strong>Notes:</strong> The name of directories/files should follow the same naming convention prescribed above for [experiment](https://github.com/litmuschaos/chaos-charts/blob/master/CONTRIBUTING.md#componentsfiles-of-a-experiment) and [category](https://github.com/litmuschaos/chaos-charts/blob/master/CONTRIBUTING.md#componentsfiles-of-a-category).
To get started, refer to the [developer guide](https://github.com/litmuschaos/litmus-go/tree/master/contribute/developer-guide)

View File

@ -17,7 +17,12 @@ versionmaker:
.PHONY: combineExpCR
combineExpCR:
@echo "--------Combining Experiments CR-------"
@cd scripts && go run ./combine-all-crs.go
bash ./scripts/combine_all_cr.sh
.PHONY: combineExpCR
combineExpCR:
@echo "--------Combining Experiments CR-------"
bash ./scripts/combine_all_cr.sh
.PHONY: push
push:

204
README.md
View File

@ -1,198 +1,13 @@
# Chaos-Charts
[![Slack Channel](https://img.shields.io/badge/Slack-Join-purple)](https://slack.litmuschaos.io)
![GitHub Workflow](https://github.com/litmuschaos/chaos-charts/actions/workflows/push.yml/badge.svg?branch=master)
[![Docker Pulls](https://img.shields.io/docker/pulls/litmuschaos/go-runner.svg)](https://hub.docker.com/r/litmuschaos/go-runner)
[![GitHub issues](https://img.shields.io/github/issues/litmuschaos/chaos-charts)](https://github.com/litmuschaos/chaos-charts/issues)
[![Twitter Follow](https://img.shields.io/twitter/follow/litmuschaos?style=social)](https://twitter.com/LitmusChaos)
[![YouTube Channel](https://img.shields.io/badge/YouTube-Subscribe-red)](https://www.youtube.com/channel/UCa57PMqmz_j0wnteRa9nCaw)
<br><br>
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.
- [Kubernetes Chaos](#kubernetes-chaos)
- [Application Chaos](#application-chaos)
- [Platform Chaos](#platform-chaos)
### Kubernetes Chaos
Chaos faults that apply to Kubernetes resources are classified in this category. Following chaos faults are supported for Kubernetes:
<table>
<tr>
<th> Fault Name </th>
<th> Description </th>
<th> Link </th>
</tr>
<tr>
<td> Container Kill </td>
<td> Kill one container in the application pod </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/container-kill"> container-kill </a></td>
<tr>
<tr>
<td> Disk Fill </td>
<td> Fill the Ephemeral Storage of the Pod </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/disk-fill"> disk-fill </a></td>
<tr>
<tr>
<td> Docker Service Kill </td>
<td> Kill docker service of the target node </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/docker-service-kill"> docker-service-kill </a></td>
<tr>
<tr>
<td> Kubelet Service Kill </td>
<td> Kill kubelet service of the target node </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/kubelet-service-kill"> kubelet-service-kill </a></td>
<tr>
<tr>
<td> Node CPU Hog </td>
<td> Stress the cpu of the target node </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/node-cpu-hog"> node-cpu-hog </a></td>
<tr>
<tr>
<td> Node Drain </td>
<td> Drain the target node </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/node-drain"> node-drain </a></td>
<tr>
<tr>
<td> Node IO Stress </td>
<td> Stress the IO of the target node </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/node-io-stress"> node-io-stress </a></td>
<tr>
<tr>
<td> Node Memory Hog </td>
<td> Stress the memory of the target node </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/node-memory-hog"> node-memory-hog </a></td>
<tr>
<tr>
<td> Node Restart </td>
<td> Restart the target node </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/node-restart"> node-restart </a></td>
<tr>
<tr>
<td> Node Taint </td>
<td> Taint the target node </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/node-taint"> node-taint </a></td>
<tr>
<tr>
<td> Pod Autoscaler </td>
<td> Scale the replicas of the target application </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/pod-autoscaler"> pod-autoscaler </a></td>
<tr>
<tr>
<td> Pod CPU Hog </td>
<td> Stress the CPU of the target pod </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/pod-cpu-hog"> pod-cpu-hog </a></td>
<tr>
<tr>
<td> Pod Delete </td>
<td> Delete the target pods </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/pod-delete"> pod-delete </a></td>
<tr>
<tr>
<td> Pod DNS Spoof </td>
<td> Spoof dns requests to desired target hostnames </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/pod-dns-spoof"> pod-dns-spoof </a></td>
<tr>
<tr>
<td> Pod DNS Error </td>
<td> Error the dns requests of the target pod </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/pod-dns-error"> pod-dns-error </a></td>
<tr>
<tr>
<td> Pod IO Stress </td>
<td> Stress the IO of the target pod </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/pod-io-stress"> pod-io-stress </a></td>
<tr>
<tr>
<td> Pod Memory Hog </td>
<td> Stress the memory of the target pod </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/pod-memory-hog"> pod-memory-hog </a></td>
<tr>
<tr>
<td> Pod Network Latency </td>
<td> Induce the network latency in target pod </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/pod-network-latency"> pod-network-latency </a></td>
<tr>
<tr>
<td> Pod Network Corruption </td>
<td> Induce the network packet corruption in target pod </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/pod-network-corruption"> pod-network-corruption </a></td>
<tr>
<tr>
<td> Pod Network Duplication </td>
<td> Induce the network packet duplication in target pod </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/pod-network-duplication"> pod-network-duplication </a></td>
<tr>
<tr>
<td> Pod Network Loss </td>
<td> Induce the network loss in target pod </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/pod-network-loss"> pod-network-loss </a></td>
<tr>
<tr>
<td> Pod Network Partition </td>
<td> Disrupt network connectivity to kubernetes pods </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/kubernetes/pod-network-partition"> pod-network-partition </a></td>
<tr>
</table>
### Application Chaos
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.
<table>
<tr>
<th> Fault Category </th>
<th> Description </th>
<th> Link </th>
</tr>
<tr>
<td> Spring Boot Faults </td>
<td> Injects faults in Spring Boot applications </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/spring-boot"> Spring Boot Faults</a></td>
<tr>
</table>
### Platform Chaos
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 chaos faults are classified in this category:
<table>
<tr>
<th> Fault Category </th>
<th> Description </th>
<th> Link </th>
</tr>
<tr>
<td> AWS Faults </td>
<td> AWS Platform specific chaos </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/aws"> AWS Faults </a></td>
<tr>
<tr>
<td> Azure Faults </td>
<td> Azure Platform specific chaos </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/azure"> Azure Faults </a></td>
<tr>
<tr>
<td> GCP Faults </td>
<td> GCP Platform specific chaos </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/gcp"> GCP Faults </a></td>
<tr>
<tr>
<td> VMWare Faults </td>
<td> VMWare Platform specific chaos </td>
<td> <a href="https://github.com/litmuschaos/chaos-charts/tree/master/faults/vmware"> VMWare Faults </a></td>
<tr>
</table>
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Flitmuschaos%2Fchaos-charts.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Flitmuschaos%2Fchaos-charts?ref=badge_shield)
This repository hosts the Litmus Chaos Charts.
## Installation Steps for Chart Releases
*Note: Supported from release 3.0.0*
*Note: Supported from release 1.1.0*
- To install the chaos faults from a specific chart for a given release, execute the following commands
- 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>`
```bash
@ -202,17 +17,18 @@ tar -zxvf <(curl -sL https://github.com/litmuschaos/chaos-charts/archive/<releas
## 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 *Kubernetes* fault chart bundle for release *3.0.0*, in the *sock-shop* namespace, run:
- For example, to install the *generic* experiment chart bundle for release *1.1.0*, in the *sock-shop* namespace, run:
```bash
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
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 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:
- 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:
```bash
find chaos-charts-3.0.0 -name fault.yaml | grep 'kubernetes/pod-delete' | xargs kubectl apply -n sock-shop -f
find chaos-charts-1.1.0 -name experiment.yaml | grep 'generic/pod-delete' | xargs kubectl apply -n sock-shop -f
```

View File

@ -0,0 +1,43 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2020-04-14T10:28:08Z
name: cassandra-pod-delete
version: 0.1.2
annotations:
categories: Cassandra
vendor: CNCF
support: https://cassandra-slack.herokuapp.com
spec:
displayName: cassandra-pod-delete
categoryDescription: |
This experiment causes (forced/graceful) pod failure of random replicas of an cassandra statefulset.
It tests statefulset sanity (replica availability & uninterrupted service) and recovery workflows of the cassandra pod
keywords:
- Kubernetes
- Cassandra
- Pod
platforms:
- GKE
- Konvoy
- Packet(Kubeadm)
- Minikube
- EKS
maturity: alpha
maintainers:
- name: Shubham Chaudhary
email: shubham.chaudhary@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/cassandra/pod_delete
- name: Documentation
url: https://docs.litmuschaos.io/docs/cassandra-pod-delete/
- name: Video
url:
icon:
- url:
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/cassandra/cassandra-pod-delete/experiment.yaml

View File

@ -0,0 +1,57 @@
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: cassandra-chaos
namespace: default
spec:
appinfo:
appns: 'default'
applabel: 'app=cassandra'
appkind: 'statefulset'
# It can be true/false
annotationCheck: 'true'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
chaosServiceAccount: cassandra-pod-delete-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: cassandra-pod-delete
spec:
components:
env:
# set chaos duration (in sec) as desired
- name: TOTAL_CHAOS_DURATION
value: '15'
# set chaos interval (in sec) as desired
- name: CHAOS_INTERVAL
value: '15'
# pod failures without '--force' & default terminationGracePeriodSeconds
- name: FORCE
value: 'false'
# provide cassandra service name
# default service: cassandra
- name: CASSANDRA_SVC_NAME
value: 'cassandra'
# provide the keyspace replication factor
- name: KEYSPACE_REPLICATION_FACTOR
value: '3'
# provide cassandra port
# default port: 9042
- name: CASSANDRA_PORT
value: '9042'
# SET THE CASSANDRA_LIVENESS_CHECK
# IT CAN BE `enabled` OR `disabled`
- name: CASSANDRA_LIVENESS_CHECK
value: ''

View File

@ -0,0 +1,108 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Deletes a pod belonging to a casandra statefulset
kind: ChaosExperiment
metadata:
name: cassandra-pod-delete
version: 0.1.4
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "apps"
- "batch"
- "litmuschaos.io"
resources:
- "deployments"
- "statefulsets"
- "jobs"
- "pods"
- "pods/log"
- "pods/exec"
- "services"
- "events"
- "configmaps"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/cassandra/pod-delete/pod_delete_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
# provide cassandra service name
# default service: cassandra
- name: CASSANDRA_SVC_NAME
value: ''
# provide the keyspace replication factor
- name: KEYSPACE_REPLICATION_FACTOR
value: ''
# provide cassandra port
# default port: 9042
- name: CASSANDRA_PORT
value: ''
# provide liveness deployement port
# default port: 8088, It only supports 8088 port
- name: LIVENESS_SVC_PORT
value: '8088'
# provide cassandra liveness image
- name: CASSANDRA_LIVENESS_IMAGE
value: 'litmuschaos/cassandra-client:latest'
- name: TOTAL_CHAOS_DURATION
value: '15'
- name: CHAOS_INTERVAL
value: '15'
# SET THE CASSANDRA_LIVENESS_CHECK
# IT CAN BE `enabled` OR `disabled`
- name: CASSANDRA_LIVENESS_CHECK
value: ''
## Period to wait before injection of chaos
- name: RAMP_TIME
value: ''
# provide the kill count
- name: KILL_COUNT
value: ''
- name: FORCE
value: ''
## env var that describes the library used to execute the chaos
## default: litmus. Supported values: litmus, powerfulseal
- name: LIB
value: ''
labels:
name: cassandra-pod-delete

View File

@ -0,0 +1,38 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: cassandra-pod-delete-sa
namespace: default
labels:
name: cassandra-pod-delete-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: cassandra-pod-delete-sa
labels:
name: cassandra-pod-delete-sa
rules:
- apiGroups: ["","litmuschaos.io","batch","apps"]
resources: ["pods","deployments","statefulsets","pods/log","pods/exec","services","events","jobs","configmaps","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get","list"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: cassandra-pod-delete-sa
labels:
name: cassandra-pod-delete-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cassandra-pod-delete-sa
subjects:
- kind: ServiceAccount
name: cassandra-pod-delete-sa
namespace: default

View File

@ -0,0 +1,37 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: cassandra-pod-delete-sa
namespace: default
labels:
name: cassandra-pod-delete-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
name: cassandra-pod-delete-sa
namespace: default
labels:
name: cassandra-pod-delete-sa
rules:
- apiGroups: ["","litmuschaos.io","batch","apps"]
resources: ["pods","deployments","statefulsets","services","pods/log","pods/exec","events","jobs","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: cassandra-pod-delete-sa
namespace: default
labels:
name: cassandra-pod-delete-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: cassandra-pod-delete-sa
subjects:
- kind: ServiceAccount
name: cassandra-pod-delete-sa
namespace: default

View File

@ -0,0 +1,43 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2020-04-14T10:28:08Z
name: cassandra
version: 0.1.3
annotations:
categories: Cassandra
chartDescription: Injects cassandra kubernetes chaos
spec:
displayName: Cassandra Chaos
categoryDescription: >
Cassandra is a free and open-source, distributed, wide column store, NoSQL database management system designed to handle
large amounts of data across many commodity servers, providing high availability with no single point of failure.
It will install all the experiments which can be used to inject chaos into cassandra applications.
experiments:
- cassandra-pod-delete
keywords:
- Kubernetes
- Pod
- Cassandra
- Statefulset
maintainers:
- name: ksatchit
email: karthik.s@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Kubernetes Website
url: https://kubernetes.io
- name: Cassandra Website
url: http://cassandra.apache.org/
- name: Source Code
url: https://github.com/apache/cassandra
- name: Cassandra Slack
url: https://cassandra-slack.herokuapp.com
- name: Documentation
url: http://cassandra.apache.org/doc/latest/
icon:
- url: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/cassandra/icons/cassandra.png
mediatype: image/png
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/cassandra/experiments.yaml

View File

@ -0,0 +1,5 @@
packageName: cassandra
experiments:
- name: cassandra-pod-delete
CSV: cassandra-pod-delete.chartserviceversion.yaml
desc: "cassandra-pod-delete"

View File

@ -0,0 +1,113 @@
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Deletes a pod belonging to a casandra statefulset
kind: ChaosExperiment
metadata:
name: cassandra-pod-delete
version: 0.1.4
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "apps"
- "batch"
- "litmuschaos.io"
resources:
- "deployments"
- "statefulsets"
- "jobs"
- "pods"
- "pods/log"
- "pods/exec"
- "services"
- "events"
- "configmaps"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/cassandra/pod-delete/pod_delete_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
# provide cassandra service name
# default service: cassandra
- name: CASSANDRA_SVC_NAME
value: ''
# provide the keyspace replication factor
- name: KEYSPACE_REPLICATION_FACTOR
value: ''
# provide cassandra port
# default port: 9042
- name: CASSANDRA_PORT
value: ''
# provide liveness deployement port
# default port: 8088, It only supports 8088 port
- name: LIVENESS_SVC_PORT
value: '8088'
# provide cassandra liveness image
- name: CASSANDRA_LIVENESS_IMAGE
value: 'litmuschaos/cassandra-client:latest'
- name: TOTAL_CHAOS_DURATION
value: '15'
- name: CHAOS_INTERVAL
value: '15'
# SET THE CASSANDRA_LIVENESS_CHECK
# IT CAN BE `enabled` OR `disabled`
- name: CASSANDRA_LIVENESS_CHECK
value: ''
## Period to wait before injection of chaos
- name: RAMP_TIME
value: ''
# provide the kill count
- name: KILL_COUNT
value: ''
- name: FORCE
value: ''
## env var that describes the library used to execute the chaos
## default: litmus. Supported values: litmus, powerfulseal
- name: LIB
value: ''
labels:
name: cassandra-pod-delete
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -0,0 +1,20 @@
# In Namespace Changes
* Apply experiments for k8 - `kubectl apply -f experiments.yaml`
* Validate the experiments for k8 - `kubectl get chaosexperiment`
* Setup RBAC - for pod delete RBAC - `kubectl apply -f rbac.yaml`
* Create pod Experiment - for health experiment -`kubectl create -f engine.yaml`
* Validate experiment - `kubectl get pods -w`
* Validate logs - `kubectl logs -f <delete pod>`
* Clean up chaosexperiment -`kubectl delete -f engine.yaml`
* Clean up rbac -`kubectl delete -f rbac.yaml`
# Remote namespace
* Apply experiments for K8 - `kubectl apply -f experiments.yaml`
* Validate the experiments for k8 - `kubectl get chaosexperiments`
* Setup RBAC as admin mode - `kubectl apply -f rbac-admin.yaml`
* Create pod Experiment - for health experiment for IKS 1.0 -`kubectl create -f engine-kiam.yaml`
* Validate experiment - `kubectl get pods -w`
* Validate logs - `kubectl logs -f <delete pod>`
* Clean up chaosexperiment -`kubectl delete -f engine-kiam.yaml`
* Clean up rbac -`kubectl delete -f rbac-admin.yaml`

View File

@ -0,0 +1,31 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2020-02-24T10:28:08Z
name: chaostoolkit
version: 0.0.5
annotations:
categories: Kubernetes
chartDescription: Injects chaostoolkit chaos
spec:
displayName: Chaostoolkit Chaos
categoryDescription:
experiments:
- k8-pod-delete
keywords:
- Kubernetes
- pod
- State
maintainers:
- name: sumit
email: sumit_nagal@intuit.com
minKubeVersion: 1.12.0
provider:
name: Intuit
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/chaostoolkit/kubernetes
icon:
- url: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/chaostoolkit/icons/k8-pod-delete.png
mediatype: image/png
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/chaostoolkit/experiments.yaml

View File

@ -0,0 +1,5 @@
packageName: chaostoolkit
experiments:
- name: k8-pod-delete
CSV: k8-pod-delete.chartserviceversion.yaml
desc: "chaostoolkit pod delete experiment"

View File

@ -0,0 +1,70 @@
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Deletes a pod belonging to a deployment/statefulset/daemonset
kind: ChaosExperiment
metadata:
name: k8-pod-delete
version: 0.0.3
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "apps"
- "batch"
- "litmuschaos.io"
resources:
- "deployments"
- "jobs"
- "pods"
- "configmaps"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
image: "litmuschaos/chaostoolkit:latest"
args:
- -c
- python /app/chaos/chaostest/kubernetes/k8_wrapper.py; exit 0
command:
- /bin/bash
env:
- name: CHAOSTOOLKIT_IN_POD
value: 'true'
- name: FILE
value: 'pod-app-kill-count.json'
- name: NAME_SPACE
value: ''
- name: LABEL_NAME
value: ''
- name: APP_ENDPOINT
value: ''
- name: PERCENTAGE
value: '50'
- name: REPORT
value: 'true'
- name: REPORT_ENDPOINT
value: 'none'
labels:
name: k8-pod-delete
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,36 @@
# chaosengine.yaml
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: k8-kiam-delete-count
namespace: default
spec:
#ex. values: ns1:name=percona,ns2:run=nginx
appinfo:
appns: kube-system
# FYI, To see app label, apply kubectl get pods --show-labels
#applabel: "app=nginx"
applabel: "app=kiam"
appkind: deployment
jobCleanUpPolicy: retain
monitoring: false
annotationCheck: 'false'
engineState: 'active'
chaosServiceAccount: chaos-admin
experiments:
- name: k8-pod-delete
spec:
components:
env:
- name: NAME_SPACE
value: kube-system
- name: LABEL_NAME
value: kiam
- name: APP_ENDPOINT
value: 'localhost'
- name: FILE
value: 'pod-app-kill-count.json'
- name: REPORT
value: 'true'
- name: REPORT_ENDPOINT
value: 'none'

View File

@ -0,0 +1,36 @@
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-chaos
namespace: default
spec:
appinfo:
appns: 'default'
applabel: 'app=nginx'
appkind: 'deployment'
annotationCheck: 'true'
engineState: 'active'
chaosServiceAccount: k8-pod-delete-sa
monitoring: false
jobCleanUpPolicy: 'retain'
experiments:
- name: k8-pod-delete
spec:
components:
env:
# set chaos namespace
- name: NAME_SPACE
value: 'default'
# set chaos label name
- name: LABEL_NAME
value: 'nginx'
# pod endpoint
- name: APP_ENDPOINT
value: 'localhost'
- name: FILE
value: 'pod-app-kill-count.json'
- name: REPORT
value: 'true'
- name: REPORT_ENDPOINT
value: 'none'

View File

@ -0,0 +1,65 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Deletes a pod belonging to a deployment/statefulset/daemonset
kind: ChaosExperiment
metadata:
name: k8-pod-delete
version: 0.0.3
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "apps"
- "batch"
- "litmuschaos.io"
resources:
- "deployments"
- "jobs"
- "pods"
- "configmaps"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
image: "litmuschaos/chaostoolkit:latest"
args:
- -c
- python /app/chaos/chaostest/kubernetes/k8_wrapper.py; exit 0
command:
- /bin/bash
env:
- name: CHAOSTOOLKIT_IN_POD
value: 'true'
- name: FILE
value: 'pod-app-kill-count.json'
- name: NAME_SPACE
value: ''
- name: LABEL_NAME
value: ''
- name: APP_ENDPOINT
value: ''
- name: PERCENTAGE
value: '50'
- name: REPORT
value: 'true'
- name: REPORT_ENDPOINT
value: 'none'
labels:
name: k8-pod-delete

View File

@ -0,0 +1,33 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
name: k8-pod-delete
version: 0.0.4
annotations:
categories: Kubernetes
vendor: CNCF
createdAt: 2020-02-24T10:28:08Z
support: https://slack.kubernetes.io/
spec:
displayName: k8-pod-delete
categoryDescription: |
K8 Pod delete contains chaos to disrupt state of kubernetes resources. It uses chaostoolkit to inject random pod delete failures against specified applications
keywords:
- Kubernetes
- State
platforms:
- Minikube
maturity: alpha
maintainers:
- name: sumit
email: sumit_nagal@intuit.com
minKubeVersion: 1.12.0
provider:
name: Intuit
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/chaostoolkit/kubernetes/pod-delete
icon:
- url:
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/chaostoolkit/k8-pod-delete/experiment.yaml

View File

@ -0,0 +1,35 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: chaos-admin
labels:
name: chaos-admin
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: chaos-admin
labels:
name: chaos-admin
rules:
- apiGroups: ["","apps","batch","extensions","litmuschaos.io","openebs.io","storage.k8s.io"]
resources: ["chaosengines","chaosexperiments","chaosresults","configmaps","cstorpools","cstorvolumereplicas","events","jobs","persistentvolumeclaims","persistentvolumes","pods","pods/exec","pods/log","secrets","storageclasses","chaosengines","chaosexperiments","chaosresults","configmaps","cstorpools","cstorvolumereplicas","daemonsets","deployments","events","jobs","persistentvolumeclaims","persistentvolumes","pods","pods/eviction","pods/exec","pods/log","replicasets","secrets","services","statefulsets","storageclasses"]
verbs: ["create","delete","get","list","patch","update"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get","list","patch"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: chaos-admin
labels:
name: chaos-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: chaos-admin
subjects:
- kind: ServiceAccount
name: chaos-admin
namespace: msaasfmea4-perf-infra-usw2-ppd-pfi

View File

@ -0,0 +1,40 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: k8-pod-delete-sa
namespace: default
labels:
name: k8-pod-delete-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
name: k8-pod-delete-sa
namespace: default
labels:
name: k8-pod-delete-sa
rules:
- apiGroups: ["","litmuschaos.io","batch","apps"]
resources: ["pods","deployments","jobs","configmaps","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
- apiGroups: [""]
resources: ["nodes"]
verbs : ["get","list"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: k8-pod-delete-sa
namespace: default
labels:
name: k8-pod-delete-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: k8-pod-delete-sa
subjects:
- kind: ServiceAccount
name: k8-pod-delete-sa
namespace: default

View File

@ -0,0 +1,38 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2019-12-30T10:28:08Z
name: coredns-pod-delete
version: 0.1.6
annotations:
categories: CoreDNS
vendor: CNCF
support: https://slack.cncf.io/
spec:
displayName: coredns-pod-delete
categoryDescription: |
Pod delete contains chaos to disrupt state of coredns resources. Experiments can inject random pod delete failures against specified application.
- Causes (forced/graceful) pod failure of coredns replicas of an application deployment.
- Tests of successful resolution of app services during chaos injection
keywords:
- Kubernetes
- CoreDNS
- Pod delete
platforms:
- GKE
- Minikube
maturity: alpha
maintainers:
- name: Raj Babu Das
email: raj.das@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/coredns/pod_delete
- name: Documentation
url: https://docs.litmuschaos.io/docs/coredns-pod-delete/
- name: Video
url: https://www.youtube.com/watch?v=pwo5idKW7q8
chaosexpcrdlink: https://raw.githubusercontent.com/litmuchaos/chaos-charts/master/charts/coredns/coredns-pod-delete/experiment.yaml

View File

@ -0,0 +1,35 @@
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: engine-coredns
namespace: kube-system
spec:
appinfo:
appns: 'kube-system'
applabel: 'k8s-app=kube-dns'
appkind: 'deployment'
# It can be true/false
annotationCheck: 'false'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
chaosServiceAccount: coredns-pod-delete-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: coredns-pod-delete
spec:
components:
env:
# set chaos duration (in sec) as desired
- name: TOTAL_CHAOS_DURATION
value: '30'
# set chaos interval (in sec) as desired
- name: CHAOS_INTERVAL
value: '10'
- name: CHAOS_NAMESPACE
value: 'kube-system'

View File

@ -0,0 +1,60 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Deletes coredns pod in kube-system namespace
kind: ChaosExperiment
metadata:
name: coredns-pod-delete
version: 0.1.9
spec:
definition:
permissions:
- apiGroups:
- ""
- "batch"
- "litmuschaos.io"
resources:
- "services"
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "get"
- "list"
- "patch"
- "create"
- "update"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/coredns/pod_delete/pod_delete_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TOTAL_CHAOS_DURATION
value: '15'
# provide the kill count
- name: KILL_COUNT
value: ''
- name: FORCE
value: 'true'
- name: CHAOS_INTERVAL
value: '5'
- name: LIB
value: ''
labels:
name: coredns-pod-delete

View File

@ -0,0 +1,33 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: coredns-pod-delete-sa
namespace: kube-system
labels:
name: coredns-pod-delete-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: coredns-pod-delete-sa
labels:
name: coredns-pod-delete-sa
rules:
- apiGroups: ["","litmuschaos.io","batch"]
resources: ["services", "pods","jobs","events","pods/log","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: coredns-pod-delete-sa
labels:
name: coredns-pod-delete-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: coredns-pod-delete-sa
subjects:
- kind: ServiceAccount
name: coredns-pod-delete-sa
namespace: kube-system

View File

@ -0,0 +1,43 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2019-12-30T10:28:08Z
name: coredns
version: 0.1.4
annotations:
categories: Kubernetes
chartDescription: Injects coredns chaos
spec:
displayName: CoreDNS chaos
categoryDescription: >
CoreDNS is an open-source system for DNS management of containerized applications.
It helps to resolve services to IP address. It will install all the experiments which can be used to inject chaos into containerized applications.
experiments:
- coredns-pod-delete
keywords:
- Kubernetes
- Container
- node
- pod
- DNS
maintainers:
- name: Raj Babu Das
email: raj.das@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: CoreDNS Website
url: https://coredns.io
- name: Source Code
url: https://github.com/coredns/coredns
- name: CoreDNS Slack
url: https://slack.cncf.io/
- name: Documentation
url: https://coredns.io/manual/toc/
icon:
- url: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/coredns/icons/coredns-pod-delete.png
mediatype: image/png
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/coredns/experiments.yaml

View File

@ -0,0 +1,5 @@
packageName: coredns
experiments:
- name: coredns-pod-delete
CSV: coredns-pod-delete.chartserviceversion.yaml
desc: "coredns pod delete experiment"

View File

@ -0,0 +1,65 @@
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Deletes coredns pod in kube-system namespace
kind: ChaosExperiment
metadata:
name: coredns-pod-delete
version: 0.1.9
spec:
definition:
permissions:
- apiGroups:
- ""
- "batch"
- "litmuschaos.io"
resources:
- "services"
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "get"
- "list"
- "patch"
- "create"
- "update"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/coredns/pod_delete/pod_delete_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TOTAL_CHAOS_DURATION
value: '15'
# provide the kill count
- name: KILL_COUNT
value: ''
- name: FORCE
value: 'true'
- name: CHAOS_INTERVAL
value: '5'
- name: LIB
value: ''
labels:
name: coredns-pod-delete
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,42 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2019-10-15T10:28:08Z
name: container-kill
version: 0.1.11
annotations:
categories: "Kubernetes"
vendor: "CNCF"
support: https://slack.openebs.io/
spec:
displayName: container-kill
categoryDescription: |
Container kill contains chaos to disrupt state of kubernetes resources. Experiments can inject random container delete failures against specified application.
- Executes SIGKILL on containers of random replicas of an application deployment.
- Tests deployment sanity (replica availability & uninterrupted service) and recovery workflows of the application pod.
keywords:
- Kubernetes
- Container
platforms:
- GKE
- Minikube
- Packet(Kubeadm)
- EKS
maturity: alpha
maintainers:
- name: ksatchit
email: karthik.s@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/generic/container_kill
- name: Documentation
url: https://docs.litmuschaos.io/docs/container-kill/
- name: Video
url: https://www.youtube.com/watch?v=XKyMNdVsKMo
icon:
- url:
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/container-kill/experiment.yaml

View File

@ -1,41 +1,37 @@
---
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-chaos
namespace: default
spec:
# It can be true/false
annotationCheck: 'true'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
appinfo:
appns: ''
applabel: ''
appkind: ''
appns: 'default'
applabel: 'app=nginx'
appkind: 'deployment'
chaosServiceAccount: container-kill-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: container-kill
spec:
components:
env:
# provide the total chaos duration
- name: TOTAL_CHAOS_DURATION
value: '20'
# specify the name of the container to be killed
- name: TARGET_CONTAINER
value: 'nginx'
# provide the chaos interval
- name: CHAOS_INTERVAL
value: '10'
# provide the name of container runtime
# it supports docker, containerd, crio
- name: CONTAINER_RUNTIME
value: 'containerd'
# provide the total chaos duration
- name: TOTAL_CHAOS_DURATION
value: '20'
# provide the socket file path
- name: SOCKET_PATH
value: '/run/containerd/containerd.sock'
- name: PODS_AFFECTED_PERC
value: ''
- name: TARGET_CONTAINER
value: ''

View File

@ -0,0 +1,44 @@
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-chaos
namespace: nginx
spec:
# It can be true/false
annotationCheck: 'true'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
appinfo:
appns: 'nginx'
applabel: 'app=nginx'
appkind: 'deployment'
chaosServiceAccount: container-kill-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: container-kill
spec:
components:
env:
# specify the name of the container to be killed
- name: TARGET_CONTAINER
value: 'nginx'
# provide the chaos interval
- name: CHAOS_INTERVAL
value: '10'
# provide the total chaos duration
- name: TOTAL_CHAOS_DURATION
value: '20'
# For containerd image use: litmuschaos/container-kill-helper:latest
- name: LIB_IMAGE
value: 'gaiaadm/pumba:0.6.5'
# It supports pumba and containerd
- name: LIB
value: 'pumba'

View File

@ -0,0 +1,76 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: "Kills a container belonging to an application pod \n"
kind: ChaosExperiment
metadata:
name: container-kill
version: 0.1.21
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "apps"
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "pods/exec"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "update"
- "patch"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/container_kill/container_kill_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TARGET_CONTAINER
value: ''
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
# It supports pumba and containerd
- name: LIB
value: 'pumba'
# provide the chaos interval
- name: CHAOS_INTERVAL
value: '10'
# provide the container runtime path for containerd
# applicable only for containerd runtime
- name: CONTAINER_PATH
value: '/run/containerd/containerd.sock'
# provide the total chaos duration
- name: TOTAL_CHAOS_DURATION
value: '20'
# LIB_IMAGE can be - gaiaadm/pumba:0.6.5, litmuschaos/container-kill-helper:latest
# For pumba image use: gaiaadm/pumba:0.6.5
# For containerd image use: litmuschaos/container-kill-helper:latest
- name: LIB_IMAGE
value: 'gaiaadm/pumba:0.6.5'
labels:
name: container-kill

View File

@ -0,0 +1,37 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: container-kill-sa
namespace: default
labels:
name: container-kill-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
name: container-kill-sa
namespace: default
labels:
name: container-kill-sa
rules:
- apiGroups: ["","litmuschaos.io","batch","apps"]
resources: ["pods","jobs","pods/exec","pods/log","events","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: container-kill-sa
namespace: default
labels:
name: container-kill-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: container-kill-sa
subjects:
- kind: ServiceAccount
name: container-kill-sa
namespace: default

View File

@ -0,0 +1,37 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: container-kill-sa
namespace: nginx
labels:
name: container-kill-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
name: container-kill-sa
namespace: nginx
labels:
name: container-kill-sa
rules:
- apiGroups: ["","litmuschaos.io","batch","apps"]
resources: ["pods","jobs","pods/exec","pods/log","events","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: container-kill-sa
namespace: nginx
labels:
name: container-kill-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: container-kill-sa
subjects:
- kind: ServiceAccount
name: container-kill-sa
namespace: nginx

View File

@ -1,40 +1,43 @@
---
apiVersion: litmuschaos.io/v1alpha1
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2019-11-11T10:28:08Z
name: disk-fill
version: 0.1.0
version: 0.0.9
annotations:
categories: Kubernetes
vendor: LitmusChaos
vendor: CNCF
support: https://slack.kubernetes.io/
spec:
displayName: Disk Fill
displayName: disk-fill
categoryDescription: |
Disk fill fault disrupts state of kubernetes resources.
Disk fill contains chaos to disrupt state of kubernetes resources.
- Causes (forced/graceful) Disk Stress by filling up the Ephemeral Storage of the Pod using one of it containers.
- Causes Pod to get Evicted if the Pod exceeds it Ephemeral Storage Limit.
- Tests the Ephemeral Storage Limits, to ensure those parameters are sufficient.
keywords:
- Kubernetes
- Disk
- State
platforms:
- GKE
- EKS
- AKS
maturity: alpha
chaosType: infra
maintainers:
- name: ksatchit
email: karthik.s@harness.io
experiments:
- sock-shop
- sock-shop-promProbe
chaosType: infra
email: karthik.s@mayadata.io
minKubeVersion: 1.12.0
labels:
app.kubernetes.io/component: chartserviceversion
app.kubernetes.io/version: ci
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/generic/disk_fill
- name: Documentation
url: https://litmuschaos.github.io/litmus/experiments/categories/contents
url: https://docs.litmuschaos.io/docs/disk-fill/
- name: Video
url:
icon:
- url:
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/disk-fill/experiment.yaml

View File

@ -0,0 +1,32 @@
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-chaos
namespace: default
spec:
# It can be true/false
annotationCheck: 'false'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
appinfo:
appns: 'default'
applabel: 'app=nginx'
appkind: 'deployment'
chaosServiceAccount: disk-fill-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: disk-fill
spec:
components:
env:
# specify the fill percentage according to the disk pressure required
- name: FILL_PERCENTAGE
value: '80'
- name: TARGET_CONTAINER
value: 'nginx'

View File

@ -0,0 +1,70 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Fillup Ephemeral Storage of a Resource
kind: ChaosExperiment
metadata:
name: disk-fill
version: 0.1.13
spec:
definition:
scope: Cluster
permissions:
- apiGroups:
- ""
- "apps"
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/exec"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/disk_fill/disk_fill_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TARGET_CONTAINER
value: ''
- name: FILL_PERCENTAGE
value: '80'
- name: TOTAL_CHAOS_DURATION
value: '60'
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
# Provide the LIB here
# Only litmus supported
- name: LIB
value: 'litmus'
# Provide the container runtime path
# Default set to docker
- name: CONTAINER_PATH
value: '/var/lib/docker/containers'
labels:
name: disk-fill

View File

@ -0,0 +1,34 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: disk-fill-sa
namespace: default
labels:
name: disk-fill-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: disk-fill-sa
labels:
name: disk-fill-sa
rules:
- apiGroups: ["","apps","litmuschaos.io","batch"]
resources: ["pods","jobs","pods/exec","events","pods/log","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: disk-fill-sa
labels:
name: disk-fill-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: disk-fill-sa
subjects:
- kind: ServiceAccount
name: disk-fill-sa
namespace: default

View File

@ -0,0 +1,44 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2019-11-13T10:28:08Z
name: disk-loss
version: 0.1.10
annotations:
categories: Kubernetes
vendor: Mayadata
support: https://app.slack.com/client/T09NY5SBT/CNXNB0ZTN
spec:
displayName: disk-loss
categoryDescription: |
Disk Loss contains chaos to disrupt state of infra resources. Experiments can inject disk loss against specified application.
- Causes (forced/graceful) disk loss from node/instance..
- Tests deployment sanity (replica availability & uninterrupted service) and recovery workflows of the application pod.
keywords:
- Kubernetes
- AWS
- GCP
- Disk
platforms:
- GKE
- AWS(KOPS)
maturity: alpha
chaosType: infra
maintainers:
- name: Raj Babu Das
email: raj.das@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/generic/disk_loss
- name: Documentation
url: https://docs.litmuschaos.io/docs/disk-loss/
- name: Video
url:
icon:
- url:
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/disk-loss/experiment.yaml

View File

@ -0,0 +1,57 @@
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-chaos
namespace: default
spec:
# It can be true/false
annotationCheck: 'false'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
appinfo:
appns: 'default'
applabel: 'app=nginx'
appkind: 'deployment'
chaosServiceAccount: disk-loss-sa
monitoring: false
# It can be retain/delete
jobCleanUpPolicy: 'delete'
experiments:
- name: disk-loss
spec:
components:
env:
# set chaos duration (in sec) as desired
- name: TOTAL_CHAOS_DURATION
value: '60'
# set cloud platform name
- name: CLOUD_PLATFORM
value: 'GKE'
# set app_check to check application state
- name: APP_CHECK
value: 'true'
# GCP project ID
- name: PROJECT_ID
value: 'litmus-demo-123'
# Node name of the cluster
- name: NODE_NAME
value: 'demo-node-123'
# Disk Name of the node, it must be an external disk.
- name: DISK_NAME
value: 'demo-disk-123'
# Enter the device name which you wanted to mount only for AWS.
- name: DEVICE_NAME
value: '/dev/sdb'
# Name of Zone in which node is present (GCP)
# Use Region Name when running with AWS (ex: us-central1)
- name: ZONE_NAME
value: 'us-central1-a'

View File

@ -0,0 +1,82 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Detaching a persistent disk from a node/instance. Supports only for AWS and GCP
kind: ChaosExperiment
metadata:
name: disk-loss
version: 0.1.14
spec:
definition:
scope: Cluster
permissions:
- apiGroups:
- ""
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "events"
- "pods/log"
- "secrets"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/disk_loss/disk_loss_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TOTAL_CHAOS_DURATION
value: '15'
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: APP_CHECK
value: 'true'
# GKE and AWS supported
- name: CLOUD_PLATFORM
value: 'GKE'
- name: PROJECT_ID
value: ''
- name: NODE_NAME
value: ''
- name: DISK_NAME
value: ''
# provide the LIB
# only litmus supported
- name: LIB
value: 'litmus'
- name: ZONE_NAME
value: ''
- name: DEVICE_NAME
value: ''
labels:
name: disk-loss
secrets:
- name: cloud-secret
mountPath: /tmp/

View File

@ -0,0 +1,34 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: disk-loss-sa
namespace: default
labels:
name: disk-loss-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: disk-loss-sa
labels:
name: disk-loss-sa
rules:
- apiGroups: ["","litmuschaos.io","batch"]
resources: ["pods","jobs","secrets","events","pods/log","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: disk-loss-sa
labels:
name: disk-loss-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: disk-loss-sa
subjects:
- kind: ServiceAccount
name: disk-loss-sa
namespace: default

View File

@ -0,0 +1,958 @@
---
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Drain the node where application pod is scheduled
kind: ChaosExperiment
metadata:
name: node-drain
version: 0.1.12
spec:
definition:
scope: Cluster
permissions:
- apiGroups:
- ""
- "batch"
- "extensions"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "events"
- "pods/log"
- "daemonsets"
- "pods/eviction"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
- "patch"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/node_drain/node_drain_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: LIVENESS_APP_LABEL
value: ''
- name: APP_NODE
value: ''
- name: TOTAL_CHAOS_DURATION
value: '60'
# Provide the LIB here
# Only litmus supported
- name: LIB
value: 'litmus'
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: LIVENESS_APP_NAMESPACE
value: ''
labels:
name: node-drain
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Fillup Ephemeral Storage of a Resource
kind: ChaosExperiment
metadata:
name: disk-fill
version: 0.1.13
spec:
definition:
scope: Cluster
permissions:
- apiGroups:
- ""
- "apps"
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/exec"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/disk_fill/disk_fill_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TARGET_CONTAINER
value: ''
- name: FILL_PERCENTAGE
value: '80'
- name: TOTAL_CHAOS_DURATION
value: '60'
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
# Provide the LIB here
# Only litmus supported
- name: LIB
value: 'litmus'
# Provide the container runtime path
# Default set to docker
- name: CONTAINER_PATH
value: '/var/lib/docker/containers'
labels:
name: disk-fill
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Injects cpu consumption on pods belonging to an app deployment
kind: ChaosExperiment
metadata:
name: pod-cpu-hog
version: 0.1.11
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/pod_cpu_hog/pod_cpu_hog_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TARGET_CONTAINER
value: ''
- name: CPU_CORES
value: '1'
- name: TOTAL_CHAOS_DURATION
value: '60' # in seconds
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: LIB
value: 'litmus'
- name: LIB_IMAGE
value: 'litmuschaos/app-cpu-stress:latest'
labels:
name: pod-cpu-hog
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Injects memory consumption on pods belonging to an app deployment
kind: ChaosExperiment
metadata:
name: pod-memory-hog
version: 0.1.3
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/pod_memory_hog/pod_memory_hog_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
# Provide name of target container
# where chaos has to be injected
- name: TARGET_CONTAINER
value: ''
# Enter the amount of memory in megabytes to be consumed by the application pod
# default: 500 (Megabytes)
- name: MEMORY_CONSUMPTION
value: '500'
- name: TOTAL_CHAOS_DURATION
value: '60' # in seconds
# Period to wait before and after injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: LIB
value: 'litmus'
- name: LIB_IMAGE
value: 'litmuschaos/app-memory-stress:latest'
labels:
name: pod-memory-hog
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Inject network packet corruption into application pod
kind: ChaosExperiment
metadata:
name: pod-network-corruption
version: 0.1.10
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "delete"
- "list"
- "patch"
- "update"
- "get"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/pod_network_corruption/pod_network_corruption_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TARGET_CONTAINER
value: ''
# provide lib image
- name: LIB_IMAGE
value: 'gaiaadm/pumba:0.6.5'
- name: NETWORK_INTERFACE
value: 'eth0'
- name: NETWORK_PACKET_CORRUPTION_PERCENTAGE
value: '100' #in PERCENTAGE
- name: TOTAL_CHAOS_DURATION
value: '60' # in seconds
# Time period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: LIB
value: 'pumba'
labels:
name: pod-network-corruption
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Deletes a pod belonging to a deployment/statefulset/daemonset
kind: ChaosExperiment
metadata:
name: pod-delete
version: 0.1.17
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "apps"
- "batch"
- "litmuschaos.io"
resources:
- "deployments"
- "jobs"
- "pods"
- "pods/log"
- "events"
- "configmaps"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/pod_delete/pod_delete_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TOTAL_CHAOS_DURATION
value: '15'
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
# provide the kill count
- name: KILL_COUNT
value: ''
- name: FORCE
value: 'true'
- name: CHAOS_INTERVAL
value: '5'
- name: LIB_IMAGE
value: 'litmuschaos/pod-delete-helper:latest'
- name: LIB
value: 'litmus'
labels:
name: pod-delete
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Injects network packet loss on pods belonging to an app deployment
kind: ChaosExperiment
metadata:
name: pod-network-loss
version: 0.1.15
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "get"
- "list"
- "patch"
- "create"
- "update"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/pod_network_loss/pod_network_loss_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TARGET_CONTAINER
value: ''
# provide lib image
- name: LIB_IMAGE
value: 'gaiaadm/pumba:0.6.5'
- name: NETWORK_INTERFACE
value: 'eth0'
- name: NETWORK_PACKET_LOSS_PERCENTAGE
value: '100' #in PERCENTAGE
- name: TOTAL_CHAOS_DURATION
value: '60' # in seconds
# ime period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: LIB
value: 'pumba'
labels:
name: pod-network-loss
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Detaching a persistent disk from a node/instance. Supports only for AWS and GCP
kind: ChaosExperiment
metadata:
name: disk-loss
version: 0.1.14
spec:
definition:
scope: Cluster
permissions:
- apiGroups:
- ""
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "events"
- "pods/log"
- "secrets"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/disk_loss/disk_loss_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TOTAL_CHAOS_DURATION
value: '15'
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: APP_CHECK
value: 'true'
# GKE and AWS supported
- name: CLOUD_PLATFORM
value: 'GKE'
- name: PROJECT_ID
value: ''
- name: NODE_NAME
value: ''
- name: DISK_NAME
value: ''
# provide the LIB
# only litmus supported
- name: LIB
value: 'litmus'
- name: ZONE_NAME
value: ''
- name: DEVICE_NAME
value: ''
labels:
name: disk-loss
secrets:
- name: cloud-secret
mountPath: /tmp/
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Injects network latency on pods belonging to an app deployment
kind: ChaosExperiment
metadata:
name: pod-network-latency
version: 0.1.15
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/pod_network_latency/pod_network_latency_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TARGET_CONTAINER
value: ''
- name: NETWORK_INTERFACE
value: 'eth0'
# provide lib image
- name: LIB_IMAGE
value: 'gaiaadm/pumba:0.6.5'
- name: NETWORK_LATENCY
value: '60000' #in ms
- name: TOTAL_CHAOS_DURATION
value: '60' # in seconds
# Time period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: LIB
value: 'pumba'
labels:
name: pod-network-latency
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Give a cpu spike on a node belonging to a deployment
kind: ChaosExperiment
metadata:
name: node-cpu-hog
version: 0.1.19
spec:
definition:
scope: Cluster
permissions:
- apiGroups:
- ""
- "batch"
- "apps"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/node_cpu_hog/node_cpu_hog_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TOTAL_CHAOS_DURATION
value: '60'
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
## ENTER THE NUMBER OF CORES OF CPU FOR CPU HOGGING
## OPTIONAL VALUE IN CASE OF EMPTY VALUE IT WILL TAKE NODE CPU CAPACITY
- name: NODE_CPU_CORE
value: ''
# PROVIDE THE LIB HERE
# ONLY LITMUS SUPPORTED
- name: LIB
value: 'litmus'
# provide lib image
- name: LIB_IMAGE
value: 'litmuschaos/stress-ng:latest'
labels:
name: node-cpu-hog
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Kills the kubelet service on the application node to check the resiliency.
kind: ChaosExperiment
metadata:
name: kubelet-service-kill
version: 0.1.2
spec:
definition:
scope: Cluster
permissions:
- apiGroups:
- ""
- "batch"
- "apps"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/kubelet_service_kill/kubelet_service_kill_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TOTAL_CHAOS_DURATION
value: '90' # in seconds
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: LIB
value: 'litmus'
labels:
name: kubelet-service-kill
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Give a memory hog on a node belonging to a deployment
kind: ChaosExperiment
metadata:
name: node-memory-hog
version: 0.1.9
spec:
definition:
scope: Cluster
permissions:
- apiGroups:
- ""
- "batch"
- "apps"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/node_memory_hog/node_memory_hog_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TOTAL_CHAOS_DURATION
value: '120'
## specify the size as percent of total available memory (in percentage %)
## Default value "90%"
- name: MEMORY_PERCENTAGE
value: '90'
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
# Provide the LIB here
# Only litmus supported
- name: LIB
value: 'litmus'
# provide lib image
- name: LIB_IMAGE
value: 'litmuschaos/stress-ng:latest'
labels:
name: node-memory-hog
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: "Kills a container belonging to an application pod \n"
kind: ChaosExperiment
metadata:
name: container-kill
version: 0.1.21
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "apps"
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "pods/exec"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "update"
- "patch"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/container_kill/container_kill_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TARGET_CONTAINER
value: ''
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
# It supports pumba and containerd
- name: LIB
value: 'pumba'
# provide the chaos interval
- name: CHAOS_INTERVAL
value: '10'
# provide the container runtime path for containerd
# applicable only for containerd runtime
- name: CONTAINER_PATH
value: '/run/containerd/containerd.sock'
# provide the total chaos duration
- name: TOTAL_CHAOS_DURATION
value: '20'
# LIB_IMAGE can be - gaiaadm/pumba:0.6.5, litmuschaos/container-kill-helper:latest
# For pumba image use: gaiaadm/pumba:0.6.5
# For containerd image use: litmuschaos/container-kill-helper:latest
- name: LIB_IMAGE
value: 'gaiaadm/pumba:0.6.5'
labels:
name: container-kill
---

View File

@ -0,0 +1,57 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2019-09-26T10:28:08Z
name: generic
version: 0.1.13
annotations:
categories: Kubernetes
chartDescription: Injects generic kubernetes chaos
spec:
displayName: Generic Chaos
categoryDescription: >
Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easier management and discovery. It will install all the experiments which can be used to inject chaos into containerized applications.
experiments:
- pod-delete
- container-kill
- pod-cpu-hog
- pod-network-loss
- pod-network-latency
- pod-network-corruption
- node-drain
- node-cpu-hog
- disk-loss
- disk-fill
- node-memory-hog
- pod-memory-hog
- kubelet-service-kill
keywords:
- Kubernetes
- Container
- Node
- Pod
- Disk
- Network
- CPU
- Memory
maintainers:
- name: ksatchit
email: karthik.s@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Kubernetes Website
url: https://kubernetes.io
- name: Source Code
url: https://github.com/kubernetes/kubernetes
- name: Kubernetes Slack
url: https://slack.kubernetes.io/
- name: Documentation
url: https://docs.litmuschaos.io/docs/chaoshub/#generic-chaos
icon:
- url: https://raw.githubusercontent.com/litmuschaos/charthub.litmuschaos.io/master/public/litmus.ico
mediatype: image/png
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/experiments.yaml

View File

@ -0,0 +1,42 @@
packageName: generic
experiments:
- name: pod-delete
CSV: pod-delete.chartserviceversion.yaml
desc: "pod-delete"
- name: container-kill
CSV: container-kill.chartserviceversion.yaml
desc: "container-kill"
- name: pod-network-loss
CSV: pod-network-loss.chartserviceversion.yaml
desc: "Pod-network-loss"
- name: pod-network-latency
CSV: pod-network-latency.chartserviceversion.yaml
desc: "pod-network-latency"
- name: pod-cpu-hog
CSV: pod-cpu-hog.chartserviceversion.yaml
desc: "pod-cpu-hog"
- name: node-cpu-hog
CSV: node-cpu-hog.chartserviceversion.yaml
desc: "node-cpu-hog"
- name: disk-fill
CSV: disk-fill.chartserviceversion.yaml
desc: "disk-fill"
- name: disk-loss
CSV: disk-loss.chartserviceversion.yaml
desc: "disk-loss"
- name: node-drain
CSV: node-drain.chartserviceversion.yaml
desc: "node-drain"
- name: pod-network-corruption
CSV: pod-network-corruption.chartserviceversion.yaml
desc: "pod-network-corruption"
- name: node-memory-hog
CSV: node-memory-hog.chartserviceversion.yaml
desc: "node-memory-hog"
- name: pod-memory-hog
CSV: pod-memory-hog.chartserviceversion.yaml
desc: "pod-memory-hog"
- name: kubelet-service-kill
CSV: kubelet-service-kill.chartserviceversion.yaml
desc: "kubelet-service-kill"

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1,26 +1,27 @@
---
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-chaos
namespace: default
spec:
# It can be true/false
annotationCheck: 'false'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
appinfo:
appns: 'default'
applabel: 'app=nginx'
appkind: 'deployment'
chaosServiceAccount: kubelet-service-kill-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: kubelet-service-kill
spec:
components:
# nodeSelector:
# # provide the node labels
# kubernetes.io/hostname: 'node02'
env:
- name: TOTAL_CHAOS_DURATION
value: '60' # in seconds
# provide the target node name
- name: TARGET_NODE
value: ''
value: '90' # in seconds

View File

@ -0,0 +1,61 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Kills the kubelet service on the application node to check the resiliency.
kind: ChaosExperiment
metadata:
name: kubelet-service-kill
version: 0.1.2
spec:
definition:
scope: Cluster
permissions:
- apiGroups:
- ""
- "batch"
- "apps"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/kubelet_service_kill/kubelet_service_kill_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TOTAL_CHAOS_DURATION
value: '90' # in seconds
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: LIB
value: 'litmus'
labels:
name: kubelet-service-kill

View File

@ -0,0 +1,45 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2020-06-13T10:28:08Z
name: kubelet-service-kill
version: 0.1.1
annotations:
categories: Kubernetes
vendor: CNCF
support: https://slack.kubernetes.io/
spec:
displayName: kubelet-service-kill
categoryDescription: |
kubelet-service-kill contains killing kubelet service gracefully for a certain chaos duration.
- Causes replicas may be evicted or becomes unreachable on account on nodes turning unschedulable (Not Ready) due to kubelet service kill.
- The application node should be healthy once chaos is stopped and the services are reaccessable.
keywords:
- Kubernetes
- Kubelet
- Node
- Service
platforms:
- GKE
- Packet(Kubeadm)
- Minikube
- EKS
maturity: alpha
maintainers:
- name: Udit Gaurav
email: udit.gaurav@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/generic/kubelet_service_kill
- name: Documentation
url: https://docs.litmuschaos.io/docs/kubelet-service-kill/
- name: Video
url:
icon:
- base64data: ""
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/kubelet-service-kill/experiment.yaml

View File

@ -0,0 +1,37 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: kubelet-service-kill
namespace: default
labels:
name: kubelet-service-kill
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: kubelet-service-kill
labels:
name: kubelet-service-kill
rules:
- apiGroups: ["","litmuschaos.io","batch","apps"]
resources: ["pods","jobs","pods/log","events","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get","list"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubelet-service-kill
labels:
name: kubelet-service-kill
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubelet-service-kill
subjects:
- kind: ServiceAccount
name: kubelet-service-kill
namespace: default

View File

@ -0,0 +1,31 @@
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-chaos
namespace: default
spec:
# It can be true/false
annotationCheck: 'false'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
appinfo:
appns: 'default'
applabel: 'app=nginx'
appkind: 'deployment'
chaosServiceAccount: node-cpu-hog-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: node-cpu-hog
spec:
components:
env:
# set chaos duration (in sec) as desired
- name: TOTAL_CHAOS_DURATION
value: '60'
- name: NODE_CPU_CORE
value: ''

View File

@ -0,0 +1,74 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Give a cpu spike on a node belonging to a deployment
kind: ChaosExperiment
metadata:
name: node-cpu-hog
version: 0.1.19
spec:
definition:
scope: Cluster
permissions:
- apiGroups:
- ""
- "batch"
- "apps"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/node_cpu_hog/node_cpu_hog_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TOTAL_CHAOS_DURATION
value: '60'
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
## ENTER THE NUMBER OF CORES OF CPU FOR CPU HOGGING
## OPTIONAL VALUE IN CASE OF EMPTY VALUE IT WILL TAKE NODE CPU CAPACITY
- name: NODE_CPU_CORE
value: ''
# PROVIDE THE LIB HERE
# ONLY LITMUS SUPPORTED
- name: LIB
value: 'litmus'
# provide lib image
- name: LIB_IMAGE
value: 'litmuschaos/stress-ng:latest'
labels:
name: node-cpu-hog

View File

@ -0,0 +1,44 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2019-01-28T10:28:08Z
name: node-cpu-hog
version: 0.0.11
annotations:
categories: Kubernetes
vendor: CNCF
support: https://slack.kubernetes.io/
spec:
displayName: node-cpu-hog
categoryDescription: |
Node CPU hog contains chaos to disrupt the state of Kubernetes resources. Experiments can inject a CPU spike on a node where the application pod is scheduled.
- CPU hog on a particular node where the application deployment is available.
- After test, the recovery should be manual for the application pod and node in case they are not in an appropriate state.
keywords:
- Kubernetes
- CPU
- State
- Node
platforms:
- GKE
- EKS
maturity: alpha
chaosType: infra
maintainers:
- name: ksatchit
email: karthik.s@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/generic/node_cpu_hog
- name: Documentation
url: https://docs.litmuschaos.io/docs/node-cpu-hog/
- name: Video
url:
icon:
- url:
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/node-cpu-hog/experiment.yaml

View File

@ -0,0 +1,37 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: node-cpu-hog-sa
namespace: default
labels:
name: node-cpu-hog-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: node-cpu-hog-sa
labels:
name: node-cpu-hog-sa
rules:
- apiGroups: ["","litmuschaos.io","batch","apps"]
resources: ["pods","jobs","events","chaosengines","pods/log","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get","list"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: node-cpu-hog-sa
labels:
name: node-cpu-hog-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: node-cpu-hog-sa
subjects:
- kind: ServiceAccount
name: node-cpu-hog-sa
namespace: default

View File

@ -0,0 +1,28 @@
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-chaos
namespace: default
spec:
# It can be true/false
annotationCheck: 'false'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
appinfo:
appns: 'default'
applabel: 'app=nginx'
appkind: 'deployment'
chaosServiceAccount: node-drain-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: node-drain
spec:
components:
env:
# set node name
- name: APP_NODE
value: 'node-1'

View File

@ -0,0 +1,77 @@
---
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Drain the node where application pod is scheduled
kind: ChaosExperiment
metadata:
name: node-drain
version: 0.1.12
spec:
definition:
scope: Cluster
permissions:
- apiGroups:
- ""
- "batch"
- "extensions"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "events"
- "pods/log"
- "daemonsets"
- "pods/eviction"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
- "patch"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/node_drain/node_drain_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: LIVENESS_APP_LABEL
value: ''
- name: APP_NODE
value: ''
- name: TOTAL_CHAOS_DURATION
value: '60'
# Provide the LIB here
# Only litmus supported
- name: LIB
value: 'litmus'
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: LIVENESS_APP_NAMESPACE
value: ''
labels:
name: node-drain

View File

@ -0,0 +1,44 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2019-01-13T10:28:08Z
name: node-drain
version: 0.1.9
annotations:
categories: Kubernetes
vendor: Mayadata
repository: https://github.com/litmuschaos/chaos-charts
support: https://app.slack.com/client/T09NY5SBT/CNXNB0ZTN
spec:
displayName: node-drain
categoryDescription: >
Drain the node where application pod is scheduled
keywords:
- Kubernetes
- Node
- State
platforms:
- GKE
- AWS(KOPS)
- Packet(Kubeadm)
- Konvoy
- EKS
maturity: alpha
chaosType: infra
maintainers:
- name: shubham chaudhary
email: shubham.chaudhary@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/generic/node_drain
- name: Documentation
url: https://docs.litmuschaos.io/docs/node-drain/
- name: Video
url:
icon:
- url: ""
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/node-drain/experiment.yaml

View File

@ -0,0 +1,37 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: node-drain-sa
namespace: default
labels:
name: node-drain-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: node-drain-sa
labels:
name: node-drain-sa
rules:
- apiGroups: ["","litmuschaos.io","batch","extensions"]
resources: ["pods","jobs","events","chaosengines","pods/log","daemonsets","pods/eviction","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["patch","get","list"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: node-drain-sa
labels:
name: node-drain-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: node-drain-sa
subjects:
- kind: ServiceAccount
name: node-drain-sa
namespace: default

View File

@ -0,0 +1,33 @@
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-chaos
namespace: default
spec:
# It can be true/false
annotationCheck: 'false'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
appinfo:
appns: 'default'
applabel: 'app=nginx'
appkind: 'deployment'
chaosServiceAccount: node-memory-hog-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: node-memory-hog
spec:
components:
env:
# set chaos duration (in sec) as desired
- name: TOTAL_CHAOS_DURATION
value: '120'
## specify the size as percent of total available memory (in percentage %)
## default value 90%
- name: MEMORY_PERCENTAGE
value: '90'

View File

@ -0,0 +1,74 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Give a memory hog on a node belonging to a deployment
kind: ChaosExperiment
metadata:
name: node-memory-hog
version: 0.1.9
spec:
definition:
scope: Cluster
permissions:
- apiGroups:
- ""
- "batch"
- "apps"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/node_memory_hog/node_memory_hog_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TOTAL_CHAOS_DURATION
value: '120'
## specify the size as percent of total available memory (in percentage %)
## Default value "90%"
- name: MEMORY_PERCENTAGE
value: '90'
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
# Provide the LIB here
# Only litmus supported
- name: LIB
value: 'litmus'
# provide lib image
- name: LIB_IMAGE
value: 'litmuschaos/stress-ng:latest'
labels:
name: node-memory-hog

View File

@ -0,0 +1,43 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2020-03-28T10:28:08Z
name: node-memory-hog
version: 0.1.2
annotations:
categories: Kubernetes
vendor: CNCF
support: https://slack.kubernetes.io/
spec:
displayName: node-memory-hog
categoryDescription: |
Kubernetes Node memory hog contains chaos to disrupt the state of Kubernetes resources. Experiments can inject a memory spike on a node where the application pod is scheduled.
- Memory hog on a particular node where the application deployment is available.
- After the test, the recovery should be manual for the application pod and node in case they are not in an appropriate state.
keywords:
- Kubernetes
- Memory
- State
- Node
platforms:
- GKE
- EKS
maturity: alpha
chaosType: infra
maintainers:
- name: Udit Gaurav
email: udit.gaurav@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/generic/node_memory_hog
- name: Documentation
url: https://docs.litmuschaos.io/docs/node-memory-hog/
- name: Video
url:
icon:
- url: ""
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/node-memory-hog/experiment.yaml

View File

@ -0,0 +1,37 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: node-memory-hog-sa
namespace: default
labels:
name: node-memory-hog-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: node-memory-hog-sa
labels:
name: node-memory-hog-sa
rules:
- apiGroups: ["","litmuschaos.io","batch","apps"]
resources: ["pods","jobs","pods/log","events","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get","list"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: node-memory-hog-sa
labels:
name: node-memory-hog-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: node-memory-hog-sa
subjects:
- kind: ServiceAccount
name: node-memory-hog-sa
namespace: default

View File

@ -0,0 +1,38 @@
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-chaos
namespace: default
spec:
# It can be true/false
annotationCheck: 'true'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
appinfo:
appns: 'default'
applabel: 'app=nginx'
appkind: 'deployment'
chaosServiceAccount: pod-cpu-hog-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: pod-cpu-hog
spec:
components:
env:
# Provide name of target container
# where chaos has to be injected
- name: TARGET_CONTAINER
value: 'nginx'
#number of cpu cores to be consumed
#verify the resources the app has been launched with
- name: CPU_CORES
value: '1'
- name: TOTAL_CHAOS_DURATION
value: '60' # in seconds

View File

@ -0,0 +1,62 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Injects cpu consumption on pods belonging to an app deployment
kind: ChaosExperiment
metadata:
name: pod-cpu-hog
version: 0.1.11
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/pod_cpu_hog/pod_cpu_hog_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TARGET_CONTAINER
value: ''
- name: CPU_CORES
value: '1'
- name: TOTAL_CHAOS_DURATION
value: '60' # in seconds
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: LIB
value: 'litmus'
- name: LIB_IMAGE
value: 'litmuschaos/app-cpu-stress:latest'
labels:
name: pod-cpu-hog

View File

@ -0,0 +1,42 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2019-01-07T10:28:08Z
name: pod-cpu-hog
version: 0.1.6
annotations:
categories: Kubernetes
vendor: CNCF
support: https://slack.kubernetes.io/
spec:
displayName: pod-cpu-hog
categoryDescription: |
Pod-CPU-Hog contains chaos to consume CPU resouces of specified containers in Kubernetes pods.
- Causes high CPU resource consumption utilizing one or more cores by triggering md5sum commands
- The application pod should be healthy once chaos is stopped. Expectation is that service-requests should be served despite chaos.
keywords:
- Kubernetes
- CPU
platforms:
- GKE
- Packet(Kubeadm)
- Minikube
- EKS
maturity: alpha
maintainers:
- name: ksatchit
email: karthik.s@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/generic/pod_cpu_hog
- name: Documentation
url: https://docs.litmuschaos.io/docs/pod-cpu-hog/
- name: Video
url: https://www.youtube.com/watch?v=MBGSPmZKb2I
icon:
- base64data: ""
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-cpu-hog/experiment.yaml

View File

@ -0,0 +1,36 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: pod-cpu-hog-sa
namespace: default
labels:
name: pod-cpu-hog-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
name: pod-cpu-hog-sa
namespace: default
labels:
name: pod-cpu-hog-sa
rules:
- apiGroups: ["","litmuschaos.io","batch"]
resources: ["pods","jobs","events","pods/log","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: pod-cpu-hog-sa
namespace: default
labels:
name: pod-cpu-hog-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: pod-cpu-hog-sa
subjects:
- kind: ServiceAccount
name: pod-cpu-hog-sa
namespace: default

View File

@ -1,4 +1,3 @@
---
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
@ -6,12 +5,19 @@ metadata:
namespace: default
spec:
appinfo:
appns: ''
applabel: ''
appkind: ''
appns: 'default'
applabel: 'app=nginx'
appkind: 'deployment'
# It can be true/false
annotationCheck: 'true'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
chaosServiceAccount: pod-delete-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: pod-delete
spec:
@ -28,8 +34,3 @@ spec:
# pod failures without '--force' & default terminationGracePeriodSeconds
- name: FORCE
value: 'false'
## percentage of total pods to target
- name: PODS_AFFECTED_PERC
value: ''

View File

@ -0,0 +1,77 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Deletes a pod belonging to a deployment/statefulset/daemonset
kind: ChaosExperiment
metadata:
name: pod-delete
version: 0.1.17
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "apps"
- "batch"
- "litmuschaos.io"
resources:
- "deployments"
- "jobs"
- "pods"
- "pods/log"
- "events"
- "configmaps"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/pod_delete/pod_delete_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
- name: TOTAL_CHAOS_DURATION
value: '15'
# Period to wait before injection of chaos in sec
- name: RAMP_TIME
value: ''
# provide the kill count
- name: KILL_COUNT
value: ''
- name: FORCE
value: 'true'
- name: CHAOS_INTERVAL
value: '5'
- name: LIB_IMAGE
value: 'litmuschaos/pod-delete-helper:latest'
- name: LIB
value: 'litmus'
labels:
name: pod-delete

View File

@ -0,0 +1,44 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2019-10-15T10:28:08Z
name: pod-delete
version: 0.1.11
annotations:
categories: Kubernetes
vendor: CNCF
support: https://slack.kubernetes.io/
spec:
displayName: pod-delete
categoryDescription: |
Pod delete contains chaos to disrupt state of kubernetes resources. Experiments can inject random pod delete failures against specified application.
- Causes (forced/graceful) pod failure of random replicas of an application deployment.
- Tests deployment sanity (replica availability & uninterrupted service) and recovery workflows of the application pod.
keywords:
- Kubernetes
- State
platforms:
- GKE
- Konvoy
- Packet(Kubeadm)
- Minikube
- EKS
maturity: alpha
maintainers:
- name: ksatchit
email: karthik.s@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/generic/pod_delete
- name: Documentation
url: https://docs.litmuschaos.io/docs/pod-delete/
- name: Video
url: https://www.youtube.com/watch?v=X3JvY_58V9A
icon:
- url:
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-delete/experiment.yaml

View File

@ -0,0 +1,38 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: pod-delete-sa
namespace: default
labels:
name: pod-delete-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: pod-delete-sa
labels:
name: pod-delete-sa
rules:
- apiGroups: ["","litmuschaos.io","batch","apps"]
resources: ["pods","deployments","pods/log","events","jobs","configmaps","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get","list"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: pod-delete-sa
labels:
name: pod-delete-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: pod-delete-sa
subjects:
- kind: ServiceAccount
name: pod-delete-sa
namespace: default

View File

@ -0,0 +1,37 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: pod-delete-sa
namespace: default
labels:
name: pod-delete-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
name: pod-delete-sa
namespace: default
labels:
name: pod-delete-sa
rules:
- apiGroups: ["","litmuschaos.io","batch","apps"]
resources: ["pods","deployments","pods/log","events","jobs","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: pod-delete-sa
namespace: default
labels:
name: pod-delete-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: pod-delete-sa
subjects:
- kind: ServiceAccount
name: pod-delete-sa
namespace: default

View File

@ -1,38 +1,38 @@
---
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-chaos
namespace: default
spec:
# It can be true/false
annotationCheck: 'true'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
appinfo:
appns: ''
applabel: ''
appkind: ''
appns: 'default'
applabel: 'app=nginx'
appkind: 'deployment'
chaosServiceAccount: pod-memory-hog-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: pod-memory-hog
spec:
components:
env:
- name: TOTAL_CHAOS_DURATION
value: '60' # in seconds
# Provide name of target container
# where chaos has to be injected
- name: TARGET_CONTAINER
value: 'nginx'
# Enter the amount of memory in megabytes to be consumed by the application pod
# default: 500 (Megabytes)
- name: MEMORY_CONSUMPTION
value: '500'
## percentage of total pods to target
- name: PODS_AFFECTED_PERC
value: ''
## provide the cluster runtime
- name: CONTAINER_RUNTIME
value: 'containerd'
# provide the socket file path
- name: SOCKET_PATH
value: '/run/containerd/containerd.sock'
- name: TOTAL_CHAOS_DURATION
value: '60' # in seconds

View File

@ -0,0 +1,66 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Injects memory consumption on pods belonging to an app deployment
kind: ChaosExperiment
metadata:
name: pod-memory-hog
version: 0.1.3
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "batch"
- "litmuschaos.io"
resources:
- "jobs"
- "pods"
- "pods/log"
- "events"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
image: "litmuschaos/ansible-runner:1.5.0"
imagePullPolicy: Always
args:
- -c
- ansible-playbook ./experiments/generic/pod_memory_hog/pod_memory_hog_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
# Provide name of target container
# where chaos has to be injected
- name: TARGET_CONTAINER
value: ''
# Enter the amount of memory in megabytes to be consumed by the application pod
# default: 500 (Megabytes)
- name: MEMORY_CONSUMPTION
value: '500'
- name: TOTAL_CHAOS_DURATION
value: '60' # in seconds
# Period to wait before and after injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: LIB
value: 'litmus'
- name: LIB_IMAGE
value: 'litmuschaos/app-memory-stress:latest'
labels:
name: pod-memory-hog

View File

@ -0,0 +1,42 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2020-04-10T10:28:08Z
name: pod-memory-hog
version: 0.1.1
annotations:
categories: Kubernetes
vendor: CNCF
support: https://slack.kubernetes.io/
spec:
displayName: pod-memory-hog
categoryDescription: |
Pod-Memory-Hog contains chaos to consume Memory resouces of specified containers in Kubernetes pods.
- Consumes the memory specified by executing a dd command against special files /dev/zero(input) and /dev/null(output)
- The application pod should be healthy once chaos is stopped. Expectation is that service-requests should be served despite chaos.
keywords:
- Kubernetes
- Memory
platforms:
- GKE
- Packet(Kubeadm)
- Minikube
- EKS
maturity: alpha
maintainers:
- name: Udit Gaurav
email: udit.gaurav@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/generic/pod_memory_hog
- name: Documentation
url: https://docs.litmuschaos.io/docs/pod-memory-hog/
- name: Video
url:
icon:
- base64data: ""
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-memory-hog/experiment.yaml

View File

@ -0,0 +1,36 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: pod-memory-hog-sa
namespace: default
labels:
name: pod-memory-hog-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
name: pod-memory-hog-sa
namespace: default
labels:
name: pod-memory-hog-sa
rules:
- apiGroups: ["","litmuschaos.io","batch"]
resources: ["pods","jobs","events","pods/log","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: pod-memory-hog-sa
namespace: default
labels:
name: pod-memory-hog-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: pod-memory-hog-sa
subjects:
- kind: ServiceAccount
name: pod-memory-hog-sa
namespace: default

View File

@ -0,0 +1,36 @@
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-network-chaos
namespace: default
spec:
# It can be delete/retain
jobCleanUpPolicy: 'delete'
# It can be true/false
annotationCheck: 'true'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
monitoring: false
appinfo:
appns: 'default'
# FYI, To see app label, apply kubectl get pods --show-labels
applabel: 'app=nginx'
appkind: 'deployment'
chaosServiceAccount: pod-network-corruption-sa
experiments:
- name: pod-network-corruption
spec:
components:
env:
#Container name where chaos has to be injected
- name: TARGET_CONTAINER
value: 'nginx'
#Network interface inside target container
- name: NETWORK_INTERFACE
value: 'eth0'
- name: TOTAL_CHAOS_DURATION
value: '60' # in seconds

Some files were not shown because too many files have changed in this diff Show More