2909 lines
92 KiB
YAML
2909 lines
92 KiB
YAML
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Taint the node where application pod is scheduled
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: node-taint
|
|
labels:
|
|
name: node-taint
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Cluster
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec","pods/eviction"]
|
|
verbs: ["get","list","create"]
|
|
# ignore daemonsets while draining the node
|
|
- apiGroups: ["apps"]
|
|
resources: ["daemonsets"]
|
|
verbs: ["list","get","delete"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
# for experiment to perform node status checks
|
|
- apiGroups: [""]
|
|
resources: ["nodes"]
|
|
verbs: ["get","list","patch","update"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name node-taint
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TARGET_NODE
|
|
value: ''
|
|
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60'
|
|
|
|
# Provide the LIB here
|
|
# Only litmus supported
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
# Period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
# set taint label & effect
|
|
# key=value:effect or key:effect
|
|
- name: TAINTS
|
|
value: ''
|
|
|
|
labels:
|
|
name: node-taint
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Give IO disk stress on a node belonging to a deployment
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: node-io-stress
|
|
labels:
|
|
name: node-io-stress
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Cluster
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
# for experiment to perform node status checks
|
|
- apiGroups: [""]
|
|
resources: ["nodes"]
|
|
verbs: ["get","list"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name node-io-stress
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '120'
|
|
|
|
## specify the size as percentage of free space on the file system
|
|
## default value 90 (in percentage)
|
|
- name: FILESYSTEM_UTILIZATION_PERCENTAGE
|
|
value: '10'
|
|
|
|
## we can specify the size in Gigabyte (Gb) also in place of percentage of free space
|
|
## NOTE: for selecting this option FILESYSTEM_UTILIZATION_PERCENTAGE should be empty
|
|
- name: FILESYSTEM_UTILIZATION_BYTES
|
|
value: ''
|
|
|
|
## Number of core of CPU
|
|
- name: CPU
|
|
value: '1'
|
|
|
|
## Total number of workers default value is 4
|
|
- name: NUMBER_OF_WORKERS
|
|
value: '4'
|
|
|
|
## Total number of vm workers
|
|
- name: VM_WORKERS
|
|
value: '1'
|
|
|
|
## enter the comma separated target nodes name
|
|
- name: TARGET_NODES
|
|
value: ''
|
|
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
# Period to wait before and after 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/go-runner:latest'
|
|
|
|
## percentage of total nodes to target
|
|
- name: NODES_AFFECTED_PERC
|
|
value: ''
|
|
|
|
## it defines the sequence of chaos execution for multiple target nodes
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: node-io-stress
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
poweroff node
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: node-poweroff
|
|
labels:
|
|
name: node-poweroff
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Cluster
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps & secrets details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps","secrets"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
# for experiment to perform node status checks
|
|
- apiGroups: [""]
|
|
resources: ["nodes"]
|
|
verbs: ["get","list"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name node-restart
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
- name: SSH_USER
|
|
value: 'root'
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60'
|
|
|
|
- name: REBOOT_COMMAND
|
|
value: '-o ServerAliveInterval=1 -o ServerAliveCountMax=1 "sudo systemctl poweroff --force --force" ; true'
|
|
|
|
# Period to wait before and after 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/go-runner:latest"
|
|
|
|
# ENTER THE TARGET NODE NAME
|
|
- name: TARGET_NODE
|
|
value: ''
|
|
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
# ENTER THE TARGET NODE IP
|
|
- name: TARGET_NODE_IP
|
|
value: ''
|
|
|
|
labels:
|
|
name: node-poweroff
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
secrets:
|
|
- name: id-rsa
|
|
mountPath: /mnt/
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Injects 100% network packet loss on pods belonging to an app deployment
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-network-partition
|
|
labels:
|
|
name: pod-network-partition
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# performs CRUD operations on the network policies
|
|
- apiGroups: ["networking.k8s.io"]
|
|
resources: ["networkpolicies"]
|
|
verbs: ["create","delete","list","get"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-network-partition
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60' # in seconds
|
|
|
|
# ime period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
# it should be litmus
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
# provide the destination ips
|
|
# chaos injection will be triggered for these destination ips
|
|
- name: DESTINATION_IPS
|
|
value: ''
|
|
|
|
# provide the destination hosts
|
|
# chaos injection will be triggered for these destination hosts
|
|
- name: DESTINATION_HOSTS
|
|
value: ''
|
|
|
|
# provide network policy type
|
|
# support ingress, egress, all values
|
|
- name: POLICY_TYPES
|
|
value: 'all'
|
|
|
|
# provide labels of the destination pods
|
|
- name: POD_SELECTOR
|
|
value: ''
|
|
|
|
# provide labels the destination namespaces
|
|
- name: NAMESPACE_SELECTOR
|
|
value: ''
|
|
|
|
# provide comma separated ports
|
|
- name: PORTS
|
|
value: ''
|
|
|
|
labels:
|
|
name: pod-network-partition
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Injects cpu consumption on pods belonging to an app deployment
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-cpu-hog-exec
|
|
labels:
|
|
name: pod-cpu-hog-exec
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-cpu-hog-exec
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60'
|
|
|
|
## Number of CPU cores to stress
|
|
- name: CPU_CORES
|
|
value: '1'
|
|
|
|
## Percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ''
|
|
|
|
## Period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
## env var that describes the library used to execute the chaos
|
|
## default: litmus. Supported values: litmus
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
# The command to kill the chaos process
|
|
- name: CHAOS_KILL_COMMAND
|
|
value: "kill $(find /proc -name exe -lname '*/md5sum' 2>&1 | grep -v 'Permission denied' | awk -F/ '{print $(NF-1)}')"
|
|
|
|
- name: TARGET_PODS
|
|
value: ''
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: pod-cpu-hog-exec
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Injects memory consumption on pods belonging to an app deployment
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-memory-hog-exec
|
|
labels:
|
|
name: pod-memory-hog-exec
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-memory-hog-exec
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60'
|
|
|
|
## enter the amount of memory in megabytes to be consumed by the application pod
|
|
- name: MEMORY_CONSUMPTION
|
|
value: '500'
|
|
|
|
## percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ''
|
|
|
|
## Period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
## env var that describes the library used to execute the chaos
|
|
## default: litmus. Supported values: litmus
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
# The command to kill the chaos process
|
|
- name: CHAOS_KILL_COMMAND
|
|
value: "kill $(find /proc -name exe -lname '*/dd' 2>&1 | grep -v 'Permission denied' | awk -F/ '{print $(NF-1)}' | head -n 1)"
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
- name: TARGET_PODS
|
|
value: ''
|
|
|
|
labels:
|
|
name: pod-memory-hog-exec
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Drain the node where application pod is scheduled
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: node-drain
|
|
labels:
|
|
name: node-drain
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Cluster
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec","pods/eviction"]
|
|
verbs: ["get","list","create"]
|
|
# ignore daemonsets while draining the node
|
|
- apiGroups: ["apps"]
|
|
resources: ["daemonsets"]
|
|
verbs: ["list","get","delete"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
# for experiment to perform node status checks
|
|
- apiGroups: [""]
|
|
resources: ["nodes"]
|
|
verbs: ["get","list","patch"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name node-drain
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TARGET_NODE
|
|
value: ''
|
|
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60'
|
|
|
|
# Provide the LIB here
|
|
# Only litmus supported
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
# Period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
labels:
|
|
name: node-drain
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Give a cpu spike on a node belonging to a deployment
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: node-cpu-hog
|
|
labels:
|
|
name: node-cpu-hog
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Cluster
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
# for experiment to perform node status checks
|
|
- apiGroups: [""]
|
|
resources: ["nodes"]
|
|
verbs: ["get","list"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name node-cpu-hog
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60'
|
|
|
|
# Period to wait before and after 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: ''
|
|
|
|
## LOAD CPU WITH GIVEN PERCENT LOADING FOR THE CPU STRESS WORKERS.
|
|
## 0 IS EFFECTIVELY A SLEEP (NO LOAD) AND 100 IS FULL LOADING
|
|
- name: CPU_LOAD
|
|
value: '100'
|
|
|
|
# ENTER THE COMMA SEPARATED TARGET NODES NAME
|
|
- name: TARGET_NODES
|
|
value: ''
|
|
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
# PROVIDE THE LIB HERE
|
|
# ONLY LITMUS SUPPORTED
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
# provide lib image
|
|
- name: LIB_IMAGE
|
|
value: 'litmuschaos/go-runner:latest'
|
|
|
|
## percentage of total nodes to target
|
|
- name: NODES_AFFECTED_PERC
|
|
value: ''
|
|
|
|
## it defines the sequence of chaos execution for multiple target nodes
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: node-cpu-hog
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Injects network packet loss on pods belonging to an app deployment
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-network-loss
|
|
labels:
|
|
name: pod-network-loss
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-network-loss
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TARGET_CONTAINER
|
|
value: ''
|
|
|
|
# provide lib image
|
|
- name: LIB_IMAGE
|
|
value: 'litmuschaos/go-runner:latest'
|
|
|
|
- name: NETWORK_INTERFACE
|
|
value: 'eth0'
|
|
|
|
- name: TC_IMAGE
|
|
value: 'gaiadocker/iproute2'
|
|
|
|
- name: NETWORK_PACKET_LOSS_PERCENTAGE
|
|
value: '100' #in PERCENTAGE
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60' # in seconds
|
|
|
|
# ime period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
# it can be litmus or pumba
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
## percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ''
|
|
|
|
- name: TARGET_PODS
|
|
value: ''
|
|
|
|
# To select pods on specific node(s)
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
# provide the name of container runtime
|
|
# for litmus LIB, it supports docker, containerd, crio
|
|
# for pumba LIB, it supports docker only
|
|
- name: CONTAINER_RUNTIME
|
|
value: 'docker'
|
|
|
|
# provide the destination ips
|
|
# chaos injection will be triggered for these destination ips
|
|
- name: DESTINATION_IPS
|
|
value: ''
|
|
|
|
# provide the destination hosts
|
|
# chaos injection will be triggered for these destination hosts
|
|
- name: DESTINATION_HOSTS
|
|
value: ''
|
|
|
|
# provide the socket file path
|
|
- name: SOCKET_PATH
|
|
value: '/var/run/docker.sock'
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: pod-network-loss
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/runtime-api-usage: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Restart node
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: node-restart
|
|
labels:
|
|
name: node-restart
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Cluster
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps & secrets details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps","secrets"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
# for experiment to perform node status checks
|
|
- apiGroups: [""]
|
|
resources: ["nodes"]
|
|
verbs: ["get","list"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name node-restart
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
- name: SSH_USER
|
|
value: 'root'
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60'
|
|
|
|
# Period to wait before and after 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/go-runner:latest"
|
|
|
|
# ENTER THE TARGET NODE NAME
|
|
- name: TARGET_NODE
|
|
value: ''
|
|
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
# ENTER THE TARGET NODE IP
|
|
- name: TARGET_NODE_IP
|
|
value: ''
|
|
|
|
labels:
|
|
name: node-restart
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
secrets:
|
|
- name: id-rsa
|
|
mountPath: /mnt/
|
|
|
|
---
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
IO stress on a app pods belonging to an app deployment
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-io-stress
|
|
labels:
|
|
name: pod-io-stress
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-io-stress
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '120'
|
|
|
|
## specify the size as percentage of free space on the file system
|
|
## default value 90 (in percentage)
|
|
- name: FILESYSTEM_UTILIZATION_PERCENTAGE
|
|
value: '10'
|
|
|
|
## we can specify the size in Gigabyte (Gb) also in place of percentage of free space
|
|
## NOTE: for selecting this option FILESYSTEM_UTILIZATION_PERCENTAGE should be empty
|
|
- name: FILESYSTEM_UTILIZATION_BYTES
|
|
value: ''
|
|
|
|
## Total number of workers default value is 4
|
|
- name: NUMBER_OF_WORKERS
|
|
value: '4'
|
|
|
|
## Percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ''
|
|
|
|
# provide volume mount path
|
|
- name: VOLUME_MOUNT_PATH
|
|
value: ''
|
|
|
|
## specify the comma separated target pods
|
|
- name: TARGET_PODS
|
|
value: ''
|
|
|
|
# To select pods on specific node(s)
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
# Period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
# Provide the LIB here
|
|
# support litmus and pumba
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
# provide lib image
|
|
- name: LIB_IMAGE
|
|
value: 'litmuschaos/go-runner:latest'
|
|
|
|
## provide the cluster runtime
|
|
- name: CONTAINER_RUNTIME
|
|
value: 'docker'
|
|
|
|
# provide the socket file path
|
|
- name: SOCKET_PATH
|
|
value: '/var/run/docker.sock'
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: pod-io-stress
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/runtime-api-usage: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Give a memory hog on a node belonging to a deployment
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: node-memory-hog
|
|
labels:
|
|
name: node-memory-hog
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Cluster
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
# for experiment to perform node status checks
|
|
- apiGroups: [""]
|
|
resources: ["nodes"]
|
|
verbs: ["get","list"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name node-memory-hog
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '120'
|
|
|
|
## Specify the size as percent of total node capacity Ex: '30'
|
|
## NOTE: for selecting this option keep MEMORY_CONSUMPTION_MEBIBYTES empty
|
|
- name: MEMORY_CONSUMPTION_PERCENTAGE
|
|
value: ''
|
|
|
|
## Specify the amount of memory to be consumed in mebibytes
|
|
## NOTE: for selecting this option keep MEMORY_CONSUMPTION_PERCENTAGE empty
|
|
- name: MEMORY_CONSUMPTION_MEBIBYTES
|
|
value: ''
|
|
|
|
- name: NUMBER_OF_WORKERS
|
|
value: '1'
|
|
|
|
# ENTER THE COMMA SEPARATED TARGET NODES NAME
|
|
- name: TARGET_NODES
|
|
value: ''
|
|
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
# Period to wait before and after 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/go-runner:latest'
|
|
|
|
## percentage of total nodes to target
|
|
- name: NODES_AFFECTED_PERC
|
|
value: ''
|
|
|
|
## it defines the sequence of chaos execution for multiple target nodes
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: node-memory-hog
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Fillup Ephemeral Storage of a Resource
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: disk-fill
|
|
labels:
|
|
name: disk-fill
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name disk-fill
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TARGET_CONTAINER
|
|
value: ''
|
|
|
|
- name: FILL_PERCENTAGE
|
|
value: '80'
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60'
|
|
|
|
# Period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
# Provide the LIB here
|
|
# Only litmus supported
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
# provide the data block size
|
|
# supported unit is KB
|
|
- name: DATA_BLOCK_SIZE
|
|
value: '256'
|
|
|
|
- name: TARGET_PODS
|
|
value: ''
|
|
|
|
- name: EPHEMERAL_STORAGE_MEBIBYTES
|
|
value: ''
|
|
|
|
# To select pods on specific node(s)
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
## percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ''
|
|
|
|
- name: LIB_IMAGE
|
|
value: 'litmuschaos/go-runner:latest'
|
|
|
|
# Provide the container runtime path
|
|
# Default set to docker container path
|
|
- name: CONTAINER_PATH
|
|
value: '/var/lib/docker/containers'
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: disk-fill
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/host-path-usage: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
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
|
|
labels:
|
|
name: kubelet-service-kill
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Cluster
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
# for experiment to perform node status checks
|
|
- apiGroups: [""]
|
|
resources: ["nodes"]
|
|
verbs: ["get","list"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name kubelet-service-kill
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- 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: NODE_LABEL
|
|
value: ''
|
|
|
|
# provide lib image
|
|
- name: LIB_IMAGE
|
|
value: 'ubuntu:16.04'
|
|
|
|
# provide the target node name
|
|
- name: TARGET_NODE
|
|
value: ''
|
|
|
|
labels:
|
|
name: kubelet-service-kill
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/service-kill: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Scale the application replicas and test the node autoscaling on cluster
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-autoscaler
|
|
labels:
|
|
name: pod-autoscaler
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Cluster
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# performs CRUD operations on the deployments and statefulsets
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets"]
|
|
verbs: ["list","get","patch","update"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-autoscaler
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60'
|
|
|
|
# Period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
# Number of replicas to scale
|
|
- name: REPLICA_COUNT
|
|
value: '5'
|
|
|
|
# PROVIDE THE LIB HERE
|
|
# ONLY LITMUS SUPPORTED
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
labels:
|
|
name: pod-autoscaler
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Pod DNS Error injects dns failure/error in target pod containers
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-dns-error
|
|
labels:
|
|
name: pod-dns-error
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-dns-error
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
- name: TARGET_CONTAINER
|
|
value: ""
|
|
|
|
# provide lib image
|
|
- name: LIB_IMAGE
|
|
value: "litmuschaos/go-runner:latest"
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: "60" # in seconds
|
|
|
|
# Time period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ""
|
|
|
|
## percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ""
|
|
|
|
- name: TARGET_PODS
|
|
value: ""
|
|
|
|
# provide the name of container runtime, it supports docker, containerd, crio
|
|
- name: CONTAINER_RUNTIME
|
|
value: "docker"
|
|
|
|
# provide the socket file path
|
|
- name: SOCKET_PATH
|
|
value: "/var/run/docker.sock"
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: "parallel"
|
|
|
|
# list of the target hostnames or kewywords eg. '["litmuschaos","chaosnative.io"]' . If empty all hostnames are targets
|
|
- name: TARGET_HOSTNAMES
|
|
value: ""
|
|
|
|
# can be either exact or substring, determines whether the dns query has to match exactly with one of the targets or can have any of the targets as substring
|
|
- name: MATCH_SCHEME
|
|
value: "exact"
|
|
|
|
labels:
|
|
experiment: pod-dns-error
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/runtime-api-usage: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Deletes a pod belonging to a deployment/statefulset/daemonset
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: k8-pod-delete
|
|
labels:
|
|
name: k8-pod-delete
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
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"
|
|
- apiGroups:
|
|
- ""
|
|
resources:
|
|
- "nodes"
|
|
verbs :
|
|
- "get"
|
|
- "list"
|
|
image: "litmuschaos/py-runner:latest"
|
|
args:
|
|
- -c
|
|
- python /litmus/byoc/chaostest/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'
|
|
|
|
- name: TEST_NAMESPACE
|
|
value: 'default'
|
|
|
|
|
|
labels:
|
|
name: k8-pod-delete
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Injects network latency on pods belonging to an app deployment
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-network-latency
|
|
labels:
|
|
name: pod-network-latency
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-network-latency
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TARGET_CONTAINER
|
|
value: ''
|
|
|
|
- name: NETWORK_INTERFACE
|
|
value: 'eth0'
|
|
|
|
# provide lib image
|
|
- name: LIB_IMAGE
|
|
value: 'litmuschaos/go-runner:latest'
|
|
|
|
- name: TC_IMAGE
|
|
value: 'gaiadocker/iproute2'
|
|
|
|
- name: NETWORK_LATENCY
|
|
value: '2000' #in ms
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60' # in seconds
|
|
|
|
# Time period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
- name: JITTER
|
|
value: '0'
|
|
|
|
# lib can be litmus or pumba
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
## percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ''
|
|
|
|
- name: TARGET_PODS
|
|
value: ''
|
|
|
|
# provide the name of container runtime
|
|
# for litmus LIB, it supports docker, containerd, crio
|
|
# for pumba LIB, it supports docker only
|
|
- name: CONTAINER_RUNTIME
|
|
value: 'docker'
|
|
|
|
# provide the destination ips
|
|
# chaos injection will be triggered for these destination ips
|
|
- name: DESTINATION_IPS
|
|
value: ''
|
|
|
|
# provide the destination hosts
|
|
# chaos injection will be triggered for these destination hosts
|
|
- name: DESTINATION_HOSTS
|
|
value: ''
|
|
|
|
# provide the socket file path
|
|
- name: SOCKET_PATH
|
|
value: '/var/run/docker.sock'
|
|
|
|
# To select pods on specific node(s)
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: pod-network-latency
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/runtime-api-usage: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Inject network packet corruption into application pod
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-network-corruption
|
|
labels:
|
|
name: pod-network-corruption
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-network-corruption
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TARGET_CONTAINER
|
|
value: ''
|
|
|
|
# provide lib image
|
|
- name: LIB_IMAGE
|
|
value: 'litmuschaos/go-runner:latest'
|
|
|
|
- name: NETWORK_INTERFACE
|
|
value: 'eth0'
|
|
|
|
- name: TC_IMAGE
|
|
value: 'gaiadocker/iproute2'
|
|
|
|
- name: NETWORK_PACKET_CORRUPTION_PERCENTAGE
|
|
value: '100' #in PERCENTAGE
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60' # in seconds
|
|
|
|
# Time period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
# lib can be litmus or pumba
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
## percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ''
|
|
|
|
- name: TARGET_PODS
|
|
value: ''
|
|
|
|
# To select pods on specific node(s)
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
# provide the name of container runtime
|
|
# for litmus LIB, it supports docker, containerd, crio
|
|
# for pumba LIB, it supports docker only
|
|
- name: CONTAINER_RUNTIME
|
|
value: 'docker'
|
|
|
|
# provide the destination ips
|
|
# chaos injection will be triggered for these destination ips
|
|
- name: DESTINATION_IPS
|
|
value: ''
|
|
|
|
# provide the destination hosts
|
|
# chaos injection will be triggered for these destination hosts
|
|
- name: DESTINATION_HOSTS
|
|
value: ''
|
|
|
|
# provide the socket file path
|
|
- name: SOCKET_PATH
|
|
value: '/var/run/docker.sock'
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: pod-network-corruption
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/runtime-api-usage: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Injects cpu consumption on pods belonging to an app deployment
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-cpu-hog
|
|
labels:
|
|
name: pod-cpu-hog
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-cpu-hog
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60'
|
|
|
|
## Number of CPU cores to stress
|
|
- name: CPU_CORES
|
|
value: '1'
|
|
|
|
## LOAD CPU WITH GIVEN PERCENT LOADING FOR THE CPU STRESS WORKERS.
|
|
## 0 IS EFFECTIVELY A SLEEP (NO LOAD) AND 100 IS FULL LOADING
|
|
- name: CPU_LOAD
|
|
value: '100'
|
|
|
|
## Percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ''
|
|
|
|
## Period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
## env var that describes the library used to execute the chaos
|
|
## default: litmus. Supported values: litmus, pumba
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
## It is used in pumba lib only
|
|
- name: LIB_IMAGE
|
|
value: 'litmuschaos/go-runner:latest'
|
|
|
|
## It is used in pumba lib only
|
|
- name: STRESS_IMAGE
|
|
value: 'alexeiled/stress-ng:latest-ubuntu'
|
|
|
|
## provide the cluster runtime
|
|
- name: CONTAINER_RUNTIME
|
|
value: 'docker'
|
|
|
|
# provide the socket file path
|
|
- name: SOCKET_PATH
|
|
value: '/var/run/docker.sock'
|
|
|
|
- name: TARGET_PODS
|
|
value: ''
|
|
|
|
# To select pods on specific node(s)
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: pod-cpu-hog
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/runtime-api-usage: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Injects network packet duplication on pods belonging to an app deployment
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-network-duplication
|
|
labels:
|
|
name: pod-network-duplication
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-network-duplication
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60'
|
|
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
- name: TARGET_CONTAINER
|
|
value: ''
|
|
|
|
- name: TC_IMAGE
|
|
value: 'gaiadocker/iproute2'
|
|
|
|
- name: NETWORK_INTERFACE
|
|
value: 'eth0'
|
|
|
|
- name: NETWORK_PACKET_DUPLICATION_PERCENTAGE
|
|
value: '100' # in percentage
|
|
|
|
# lib can be litmus or pumba
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
- name: TARGET_PODS
|
|
value: ''
|
|
|
|
# To select pods on specific node(s)
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
## percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ''
|
|
|
|
- name: LIB_IMAGE
|
|
value: 'litmuschaos/go-runner:latest'
|
|
|
|
# provide the name of container runtime
|
|
# for litmus LIB, it supports docker, containerd, crio
|
|
# for pumba LIB, it supports docker only
|
|
- name: CONTAINER_RUNTIME
|
|
value: 'docker'
|
|
|
|
# provide the destination ips
|
|
# chaos injection will be triggered for these destination ips
|
|
- name: DESTINATION_IPS
|
|
value: ''
|
|
|
|
# provide the destination hosts
|
|
# chaos injection will be triggered for these destination hosts
|
|
- name: DESTINATION_HOSTS
|
|
value: ''
|
|
|
|
# provide the socket file path
|
|
- name: SOCKET_PATH
|
|
value: '/var/run/docker.sock'
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: pod-network-duplication
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/runtime-api-usage: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Kills the docker service on the application node to check the resiliency.
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: docker-service-kill
|
|
labels:
|
|
name: docker-service-kill
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Cluster
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
# for experiment to perform node status checks
|
|
- apiGroups: [""]
|
|
resources: ["nodes"]
|
|
verbs: ["get","list"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name docker-service-kill
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- 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'
|
|
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
# provide lib image
|
|
- name: LIB_IMAGE
|
|
value: 'ubuntu:16.04'
|
|
|
|
# provide the target node name
|
|
- name: TARGET_NODE
|
|
value: ''
|
|
|
|
labels:
|
|
name: docker-service-kill
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/service-kill: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Deletes a pod belonging to a deployment/statefulset/daemonset
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-delete
|
|
labels:
|
|
name: pod-delete
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-delete
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '15'
|
|
|
|
# Period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
- name: FORCE
|
|
value: 'true'
|
|
|
|
- name: CHAOS_INTERVAL
|
|
value: '5'
|
|
|
|
## percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ''
|
|
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
- name: TARGET_PODS
|
|
value: ''
|
|
|
|
# To select pods on specific node(s)
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: pod-delete
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Pod DNS Spoof can spoof particular dns requests in target pod container to desired target hostnames
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-dns-spoof
|
|
labels:
|
|
name: pod-dns-spoof
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-dns-spoof
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
- name: TARGET_CONTAINER
|
|
value: ""
|
|
|
|
# provide lib image
|
|
- name: LIB_IMAGE
|
|
value: "litmuschaos/go-runner:latest"
|
|
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: "60" # in seconds
|
|
|
|
# Time period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ""
|
|
|
|
## percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ""
|
|
|
|
- name: TARGET_PODS
|
|
value: ""
|
|
|
|
# provide the name of container runtime, it supports docker, containerd, crio
|
|
- name: CONTAINER_RUNTIME
|
|
value: "docker"
|
|
|
|
# provide the socket file path
|
|
- name: SOCKET_PATH
|
|
value: "/var/run/docker.sock"
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: "parallel"
|
|
|
|
# map of the target hostnames eg. '{"abc.com":"spoofabc.com"}' . If empty no queries will be spoofed
|
|
- name: SPOOF_MAP
|
|
value: ""
|
|
|
|
labels:
|
|
experiment: pod-dns-spoof
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/runtime-api-usage: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: |
|
|
Injects memory consumption on pods belonging to an app deployment
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: pod-memory-hog
|
|
labels:
|
|
name: pod-memory-hog
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name pod-memory-hog
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '60'
|
|
|
|
## enter the amount of memory in megabytes to be consumed by the application pod
|
|
- name: MEMORY_CONSUMPTION
|
|
value: '500'
|
|
|
|
## Number of workers to perform stress
|
|
- name: NUMBER_OF_WORKERS
|
|
value: '1'
|
|
|
|
## percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ''
|
|
|
|
## Period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
## env var that describes the library used to execute the chaos
|
|
## default: litmus. Supported values: litmus, pumba
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
## It is used in pumba lib only
|
|
- name: LIB_IMAGE
|
|
value: 'litmuschaos/go-runner:latest'
|
|
|
|
## It is used in pumba lib only
|
|
- name: STRESS_IMAGE
|
|
value: 'alexeiled/stress-ng:latest-ubuntu'
|
|
|
|
## provide the cluster runtime
|
|
- name: CONTAINER_RUNTIME
|
|
value: 'docker'
|
|
|
|
# provide the socket file path
|
|
- name: SOCKET_PATH
|
|
value: '/var/run/docker.sock'
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
- name: TARGET_PODS
|
|
value: ''
|
|
|
|
# To select pods on specific node(s)
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
labels:
|
|
name: pod-memory-hog
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/runtime-api-usage: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|
|
apiVersion: litmuschaos.io/v1alpha1
|
|
description:
|
|
message: "Kills a container belonging to an application pod \n"
|
|
kind: ChaosExperiment
|
|
metadata:
|
|
name: container-kill
|
|
labels:
|
|
name: container-kill
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: chaosexperiment
|
|
app.kubernetes.io/version: latest
|
|
spec:
|
|
definition:
|
|
scope: Namespaced
|
|
permissions:
|
|
# Create and monitor the experiment & helper pods
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["create","delete","get","list","patch","update", "deletecollection"]
|
|
# Performs CRUD operations on the events inside chaosengine and chaosresult
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["create","get","list","patch","update"]
|
|
# Fetch configmaps details and mount it to the experiment pod (if specified)
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
verbs: ["get","list",]
|
|
# Track and get the runner, experiment, and helper pods log
|
|
- apiGroups: [""]
|
|
resources: ["pods/log"]
|
|
verbs: ["get","list","watch"]
|
|
# for creating and managing to execute comands inside target container
|
|
- apiGroups: [""]
|
|
resources: ["pods/exec"]
|
|
verbs: ["get","list","create"]
|
|
# deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets})
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments","statefulsets","replicasets", "daemonsets"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: ["apps.openshift.io"]
|
|
resources: ["deploymentconfigs"]
|
|
verbs: ["list","get"]
|
|
# deriving the parent/owner details of the pod(if parent is deploymentConfig)
|
|
- apiGroups: [""]
|
|
resources: ["replicationcontrollers"]
|
|
verbs: ["get","list"]
|
|
# deriving the parent/owner details of the pod(if parent is argo-rollouts)
|
|
- apiGroups: ["argoproj.io"]
|
|
resources: ["rollouts"]
|
|
verbs: ["list","get"]
|
|
# for configuring and monitor the experiment job by the chaos-runner pod
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs"]
|
|
verbs: ["create","list","get","delete","deletecollection"]
|
|
# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosexperiments","chaosresults"]
|
|
verbs: ["create","list","get","patch","update","delete"]
|
|
image: "litmuschaos/go-runner:latest"
|
|
imagePullPolicy: Always
|
|
args:
|
|
- -c
|
|
- ./experiments -name container-kill
|
|
command:
|
|
- /bin/bash
|
|
env:
|
|
|
|
- name: TARGET_CONTAINER
|
|
value: ''
|
|
|
|
# Period to wait before and after injection of chaos in sec
|
|
- name: RAMP_TIME
|
|
value: ''
|
|
|
|
# lib can be litmus or pumba
|
|
- name: LIB
|
|
value: 'litmus'
|
|
|
|
- name: TARGET_PODS
|
|
value: ''
|
|
|
|
# provide the chaos interval
|
|
- name: CHAOS_INTERVAL
|
|
value: '10'
|
|
|
|
- name: SIGNAL
|
|
value: 'SIGKILL'
|
|
|
|
# provide the socket file path
|
|
- name: SOCKET_PATH
|
|
value: '/var/run/docker.sock'
|
|
|
|
# provide the name of container runtime
|
|
# for litmus LIB, it supports docker, containerd, crio
|
|
# for pumba LIB, it supports docker only
|
|
- name: CONTAINER_RUNTIME
|
|
value: 'docker'
|
|
|
|
# provide the total chaos duration
|
|
- name: TOTAL_CHAOS_DURATION
|
|
value: '20'
|
|
|
|
## percentage of total pods to target
|
|
- name: PODS_AFFECTED_PERC
|
|
value: ''
|
|
|
|
# To select pods on specific node(s)
|
|
- name: NODE_LABEL
|
|
value: ''
|
|
|
|
- name: LIB_IMAGE
|
|
value: 'litmuschaos/go-runner:latest'
|
|
|
|
## it defines the sequence of chaos execution for multiple target pods
|
|
## supported values: serial, parallel
|
|
- name: SEQUENCE
|
|
value: 'parallel'
|
|
|
|
labels:
|
|
name: container-kill
|
|
app.kubernetes.io/part-of: litmus
|
|
app.kubernetes.io/component: experiment-job
|
|
app.kubernetes.io/runtime-api-usage: "true"
|
|
app.kubernetes.io/version: latest
|
|
|
|
---
|