From 196f3427766eb21608fe9a72e64870442ad58307 Mon Sep 17 00:00:00 2001 From: litmusbot Date: Fri, 15 Sep 2023 10:43:41 +0000 Subject: [PATCH] 6197068882: version upgraded for chaos-charts --- charts/aws-ssm/experiments.yaml | 74 +- charts/azure/experiments.yaml | 18 +- charts/gcp/experiments.yaml | 208 +-- charts/generic/experiments.yaml | 2606 +++++++++++++-------------- charts/kube-aws/experiments.yaml | 170 +- charts/spring-boot/experiments.yaml | 198 +- charts/vmware/experiments.yaml | 6 +- 7 files changed, 1640 insertions(+), 1640 deletions(-) diff --git a/charts/aws-ssm/experiments.yaml b/charts/aws-ssm/experiments.yaml index 73f20658b..29d0dbcdd 100644 --- a/charts/aws-ssm/experiments.yaml +++ b/charts/aws-ssm/experiments.yaml @@ -1,12 +1,12 @@ apiVersion: litmuschaos.io/v1alpha1 description: message: | - Execute AWS SSM Chaos on given ec2 instance IDs + Execute AWS SSM Chaos on given ec2 instance Tag kind: ChaosExperiment metadata: - name: aws-ssm-chaos-by-id + name: aws-ssm-chaos-by-tag labels: - name: aws-ssm-chaos-by-id + name: aws-ssm-chaos-by-tag app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -46,7 +46,7 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name aws-ssm-chaos-by-id + - ./experiments -name aws-ssm-chaos-by-tag command: - /bin/bash env: @@ -55,14 +55,14 @@ spec: - name: CHAOS_INTERVAL value: '60' - + # Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' - # Instance ID of the target ec2 instance - # Multiple IDs can also be provided as comma separated values ex: id1,id2 - - name: EC2_INSTANCE_ID + # provide tag of the target ec2 instances + # ex: team:devops (key:value) + - name: EC2_INSTANCE_TAG value: '' - name: REGION @@ -77,6 +77,10 @@ spec: - name: AWS_SHARED_CREDENTIALS_FILE value: '/tmp/cloud_config.yml' + # percentage of total instance to target + - name: INSTANCE_AFFECTED_PERC + value: '' + # Provide the name of ssm doc # if not using the default stress docs - name: DOCUMENT_NAME @@ -109,13 +113,13 @@ spec: - name: MEMORY_PERCENTAGE value: '80' - # provide the CPU chores to be comsumed + # provide the CPU chores to comsumed # 0 will consume all the available cpu cores - name: CPU_CORE value: '0' - + labels: - name: aws-ssm-chaos-by-id + name: aws-ssm-chaos-by-tag app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 @@ -127,12 +131,12 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Execute AWS SSM Chaos on given ec2 instance Tag + Execute AWS SSM Chaos on given ec2 instance IDs kind: ChaosExperiment metadata: - name: aws-ssm-chaos-by-tag + name: aws-ssm-chaos-by-id labels: - name: aws-ssm-chaos-by-tag + name: aws-ssm-chaos-by-id app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -152,10 +156,10 @@ spec: - apiGroups: [""] resources: ["secrets","configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -172,7 +176,7 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name aws-ssm-chaos-by-tag + - ./experiments -name aws-ssm-chaos-by-id command: - /bin/bash env: @@ -186,9 +190,9 @@ spec: - name: RAMP_TIME value: '' - # provide tag of the target ec2 instances - # ex: team:devops (key:value) - - name: EC2_INSTANCE_TAG + # Instance ID of the target ec2 instance + # Multiple IDs can also be provided as comma separated values ex: id1,id2 + - name: EC2_INSTANCE_ID value: '' - name: REGION @@ -199,37 +203,33 @@ spec: - name: SEQUENCE value: 'parallel' - # Provide the path of aws credentials mounted from secret + # Provide the path of aws credentials mounted from secret - name: AWS_SHARED_CREDENTIALS_FILE - value: '/tmp/cloud_config.yml' - - # percentage of total instance to target - - name: INSTANCE_AFFECTED_PERC - value: '' + value: '/tmp/cloud_config.yml' - # Provide the name of ssm doc - # if not using the default stress docs + # Provide the name of ssm doc + # if not using the default stress docs - name: DOCUMENT_NAME value: '' - # Provide the type of ssm doc - # if not using the default stress docs + # Provide the type of ssm doc + # if not using the default stress docs - name: DOCUMENT_TYPE value: '' # Provide the format of ssm doc - # if not using the default stress docs + # if not using the default stress docs - name: DOCUMENT_FORMAT value: '' - # Provide the path of ssm doc - # if not using the default stress docs + # Provide the path of ssm doc + # if not using the default stress docs - name: DOCUMENT_PATH value: '' # if you want to install dependencies to run default ssm docs - name: INSTALL_DEPENDENCIES - value: 'True' + value: 'True' # provide the number of workers for memory stress - name: NUMBER_OF_WORKERS @@ -239,13 +239,13 @@ spec: - name: MEMORY_PERCENTAGE value: '80' - # provide the CPU chores to comsumed + # provide the CPU chores to be comsumed # 0 will consume all the available cpu cores - name: CPU_CORE value: '0' - + labels: - name: aws-ssm-chaos-by-tag + name: aws-ssm-chaos-by-id app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 diff --git a/charts/azure/experiments.yaml b/charts/azure/experiments.yaml index 6431f557a..1a605d964 100644 --- a/charts/azure/experiments.yaml +++ b/charts/azure/experiments.yaml @@ -26,10 +26,10 @@ spec: - apiGroups: [""] resources: ["secrets","configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -52,7 +52,7 @@ spec: env: - name: TOTAL_CHAOS_DURATION - value: '30' + value: '30' - name: CHAOS_INTERVAL value: '30' @@ -60,23 +60,23 @@ spec: # Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' - + # provide the resource group of the instance - name: RESOURCE_GROUP value: '' - + # accepts enable/disable, default is disable - name: SCALE_SET value: '' - + # provide the virtual disk names (comma separated if multiple) - name: VIRTUAL_DISK_NAMES value: '' - + # provide the sequence type for the run. Options: serial/parallel - name: SEQUENCE value: 'parallel' - + # provide the path to aks credentials mounted from secret - name: AZURE_AUTH_LOCATION value: '/tmp/azure.auth' @@ -86,7 +86,7 @@ spec: app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 - + secrets: - name: cloud-secret mountPath: /tmp/ diff --git a/charts/gcp/experiments.yaml b/charts/gcp/experiments.yaml index 54ecd18b1..bbc977fc9 100644 --- a/charts/gcp/experiments.yaml +++ b/charts/gcp/experiments.yaml @@ -1,12 +1,12 @@ apiVersion: litmuschaos.io/v1alpha1 description: message: | - Stops GCP VM instances and GKE nodes filtered by a label for a specified duration and later restarts them + Stops GCP VM instances and GKE nodes for a specified duration and later restarts them kind: ChaosExperiment metadata: - name: gcp-vm-instance-stop-by-label + name: gcp-vm-instance-stop labels: - name: gcp-vm-instance-stop-by-label + name: gcp-vm-instance-stop app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -26,7 +26,7 @@ spec: - apiGroups: [""] resources: ["secrets","configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] verbs: ["get","list","watch"] @@ -46,50 +46,49 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name gcp-vm-instance-stop-by-label + - ./experiments -name gcp-vm-instance-stop command: - /bin/bash 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: '30' - + + # parallel or serial; determines how the VM instances are terminated, all at once or one at a time - name: SEQUENCE value: 'parallel' - + + # period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # enable or disable; shall be set to enable if the target instances are a part of a managed instance group + - name: MANAGED_INSTANCE_GROUP + value: 'disable' + + # Instance name of the target vm instance(s) + # Multiple instance names can be provided as comma separated values ex: instance1,instance2 + - name: VM_INSTANCE_NAMES + value: '' + # GCP project ID to which the vm instances belong - name: GCP_PROJECT_ID value: '' - - # Label of the target vm instance(s) - - name: INSTANCE_LABEL - value: '' - - # Zone in which the target vm instance(s) filtered by the label exist - # all the instances should lie in a single zone + + # Instance zone(s) of the target vm instance(s) + # If more than one instance is targetted, provide zone for each in the order of their + # respective instance name in VM_INSTANCE_NAME as comma separated values ex: zone1,zone2 - name: ZONES value: '' - - # enable it if the target instance is a part of a managed instance group - - name: MANAGED_INSTANCE_GROUP - value: 'disable' - # set the percentage value of the instances with the given label - # which should be targeted as part of the chaos injection - - name: INSTANCE_AFFECTED_PERC - value: '' - labels: - name: gcp-vm-instance-stop-by-label + name: gcp-vm-instance-stop app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: 3.0.0-beta11 - + app.kubernetes.io/version: 3.0.0-beta11 secrets: - name: cloud-secret mountPath: /tmp/ @@ -98,12 +97,12 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Stops GCP VM instances and GKE nodes for a specified duration and later restarts them + Causes loss of a non-boot storage persistent disk from a GCP VM instance filtered by a label for a specified duration before attaching them back kind: ChaosExperiment metadata: - name: gcp-vm-instance-stop + name: gcp-vm-disk-loss-by-label labels: - name: gcp-vm-instance-stop + name: gcp-vm-disk-loss-by-label app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -123,7 +122,7 @@ spec: - apiGroups: [""] resources: ["secrets","configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] verbs: ["get","list","watch"] @@ -135,57 +134,46 @@ spec: - 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:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name gcp-vm-instance-stop + - ./experiments -name gcp-vm-disk-loss-by-label command: - /bin/bash env: + # set chaos duration (in sec) as desired - name: TOTAL_CHAOS_DURATION - value: '30' + value: '30' + # set chaos interval (in sec) as desired - name: CHAOS_INTERVAL value: '30' - # parallel or serial; determines how the VM instances are terminated, all at once or one at a time - - name: SEQUENCE - value: 'parallel' - - # period to wait before and after injection of chaos in sec - - name: RAMP_TIME + # set the GCP project id + - name: GCP_PROJECT_ID value: '' - # enable or disable; shall be set to enable if the target instances are a part of a managed instance group - - name: MANAGED_INSTANCE_GROUP - value: 'disable' - - # Instance name of the target vm instance(s) - # Multiple instance names can be provided as comma separated values ex: instance1,instance2 - - name: VM_INSTANCE_NAMES + # set the zone in which all the disks are created + # all the disks must exist in the same zone + - name: ZONES value: '' - - # GCP project ID to which the vm instances belong - - name: GCP_PROJECT_ID + + # set the label of the target disk volumes + - name: DISK_VOLUME_LABEL value: '' - # Instance zone(s) of the target vm instance(s) - # If more than one instance is targetted, provide zone for each in the order of their - # respective instance name in VM_INSTANCE_NAME as comma separated values ex: zone1,zone2 - - name: ZONES + # set the percentage value of the disks with the given label + # which should be targeted as part of the chaos injection + - name: DISK_AFFECTED_PERC value: '' - + labels: - name: gcp-vm-instance-stop + name: gcp-vm-disk-loss-by-label app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: 3.0.0-beta11 + app.kubernetes.io/version: 3.0.0-beta11 secrets: - name: cloud-secret mountPath: /tmp/ @@ -194,12 +182,12 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Causes loss of a non-boot storage persistent disk from a GCP VM instance filtered by a label for a specified duration before attaching them back + Causes loss of a non-boot storage persistent disk from a GCP VM instance for a specified duration before attaching them back kind: ChaosExperiment metadata: - name: gcp-vm-disk-loss-by-label + name: gcp-vm-disk-loss labels: - name: gcp-vm-disk-loss-by-label + name: gcp-vm-disk-loss app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -219,7 +207,7 @@ spec: - apiGroups: [""] resources: ["secrets","configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] verbs: ["get","list","watch"] @@ -235,42 +223,45 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name gcp-vm-disk-loss-by-label + - ./experiments -name gcp-vm-disk-loss command: - /bin/bash 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: '30' - + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # parallel or serial; determines how chaos is injected + - name: SEQUENCE + value: 'parallel' + # set the GCP project id - name: GCP_PROJECT_ID value: '' - # set the zone in which all the disks are created - # all the disks must exist in the same zone - - name: ZONES - value: '' - - # set the label of the target disk volumes - - name: DISK_VOLUME_LABEL + # set the disk volume name(s) as comma seperated values + # eg. volume1,volume2,... + - name: DISK_VOLUME_NAMES value: '' - - # set the percentage value of the disks with the given label - # which should be targeted as part of the chaos injection - - name: DISK_AFFECTED_PERC + + # set the disk zone(s) as comma seperated values in the corresponding + # order of DISK_VOLUME_NAME + # eg. zone1,zone2,... + - name: ZONES value: '' - + labels: - name: gcp-vm-disk-loss-by-label + name: gcp-vm-disk-loss app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: 3.0.0-beta11 + app.kubernetes.io/version: 3.0.0-beta11 secrets: - name: cloud-secret mountPath: /tmp/ @@ -279,12 +270,12 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Causes loss of a non-boot storage persistent disk from a GCP VM instance for a specified duration before attaching them back + Stops GCP VM instances and GKE nodes filtered by a label for a specified duration and later restarts them kind: ChaosExperiment metadata: - name: gcp-vm-disk-loss + name: gcp-vm-instance-stop-by-label labels: - name: gcp-vm-disk-loss + name: gcp-vm-instance-stop-by-label app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -316,49 +307,58 @@ spec: - 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:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name gcp-vm-disk-loss + - ./experiments -name gcp-vm-instance-stop-by-label command: - /bin/bash env: + # set chaos duration (in sec) as desired - name: TOTAL_CHAOS_DURATION - value: '30' + value: '30' + # set chaos interval (in sec) as desired - name: CHAOS_INTERVAL value: '30' - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: '' - - # parallel or serial; determines how chaos is injected - name: SEQUENCE value: 'parallel' - - # set the GCP project id + + # GCP project ID to which the vm instances belong - name: GCP_PROJECT_ID value: '' - - # set the disk volume name(s) as comma seperated values - # eg. volume1,volume2,... - - name: DISK_VOLUME_NAMES + + # Label of the target vm instance(s) + - name: INSTANCE_LABEL value: '' - - # set the disk zone(s) as comma seperated values in the corresponding - # order of DISK_VOLUME_NAME - # eg. zone1,zone2,... + + # Zone in which the target vm instance(s) filtered by the label exist + # all the instances should lie in a single zone - name: ZONES value: '' + + # enable it if the target instance is a part of a managed instance group + - name: MANAGED_INSTANCE_GROUP + value: 'disable' + + # set the percentage value of the instances with the given label + # which should be targeted as part of the chaos injection + - name: INSTANCE_AFFECTED_PERC + value: '' labels: - name: gcp-vm-disk-loss + name: gcp-vm-instance-stop-by-label app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 + secrets: - name: cloud-secret mountPath: /tmp/ diff --git a/charts/generic/experiments.yaml b/charts/generic/experiments.yaml index 431a83023..d5cb6c783 100644 --- a/charts/generic/experiments.yaml +++ b/charts/generic/experiments.yaml @@ -1,12 +1,12 @@ apiVersion: litmuschaos.io/v1alpha1 description: message: | - Give IO disk stress on a node belonging to a deployment + Kills the kubelet service on the application node to check the resiliency. kind: ChaosExperiment metadata: - name: node-io-stress + name: kubelet-service-kill labels: - name: node-io-stress + name: kubelet-service-kill app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -50,76 +50,46 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name node-io-stress + - ./experiments -name kubelet-service-kill 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' + value: '60' # in seconds - ## enter the comma separated target nodes name - - name: TARGET_NODES + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME value: '' - name: NODE_LABEL value: '' - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: '' - # provide lib image - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' + value: 'ubuntu:16.04' - ## percentage of total nodes to target - - name: NODES_AFFECTED_PERC + # provide the target node name + - name: TARGET_NODE 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 + 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: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Injects network latency on pods belonging to an app deployment + Injects 100% network packet loss on pods belonging to an app deployment kind: ChaosExperiment metadata: - name: pod-network-latency + name: pod-network-partition labels: - name: pod-network-latency + name: pod-network-partition app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -147,26 +117,14 @@ spec: - 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"] + # 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"] @@ -175,50 +133,18 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-network-latency + - ./experiments -name pod-network-partition command: - /bin/bash env: - - name: TARGET_CONTAINER - value: '' - - - name: NETWORK_INTERFACE - value: 'eth0' - - # provide lib image - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' - - - 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 + # ime period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' - - name: JITTER - value: '0' - - ## 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: 'containerd' - # provide the destination ips # chaos injection will be triggered for these destination ips - name: DESTINATION_IPS @@ -229,130 +155,39 @@ spec: - name: DESTINATION_HOSTS value: '' - # provide the socket file path - - name: SOCKET_PATH - value: '/run/containerd/containerd.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: 3.0.0-beta11 - ---- -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: 3.0.0-beta11 -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:3.0.0-beta11" - 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 lib image - - name: LIB_IMAGE - value: "litmuschaos/go-runner:3.0.0-beta11" + # provide network policy type + # support ingress, egress, all values + - name: POLICY_TYPES + value: 'all' - # ENTER THE TARGET NODE NAME - - name: TARGET_NODE + # provide labels of the destination pods + - name: POD_SELECTOR value: '' - - name: NODE_LABEL + # provide labels the destination namespaces + - name: NAMESPACE_SELECTOR value: '' - # ENTER THE TARGET NODE IP - - name: TARGET_NODE_IP + # provide comma separated ports + - name: PORTS value: '' labels: - name: node-poweroff + name: pod-network-partition app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 - secrets: - - name: id-rsa - mountPath: /mnt/ --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - it injects chaos into the pod which stops outgoing http requests by resetting the TCP connection and then reverts back to the original state after a specified duration + It injects chaos inside the pod which modifies the status code of the response from the provided application server to desired status code provided by the user and reverts after a specified duration kind: ChaosExperiment metadata: - name: pod-http-reset-peer + name: pod-http-status-code labels: - name: pod-http-reset-peer + name: pod-http-status-code app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -372,10 +207,10 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -384,7 +219,7 @@ spec: - apiGroups: ["apps"] resources: ["deployments","statefulsets","replicasets", "daemonsets"] verbs: ["list","get"] - # deriving the parent/owner details of the pod(if parent is deploymentConfig) + # deriving the parent/owner details of the pod(if parent is deploymentConfig) - apiGroups: ["apps.openshift.io"] resources: ["deploymentconfigs"] verbs: ["list","get"] @@ -408,7 +243,7 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-http-reset-peer + - ./experiments -name pod-http-status-code command: - /bin/bash env: @@ -418,11 +253,18 @@ spec: # provide lib image - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' + value: 'litmuschaos/go-runner:3.0.0-beta11' - # reset timeout specifies after how much duration to reset the connection - - name: RESET_TIMEOUT - value: '0' #in ms + # modified status code for the http response + # if no value is provided, a random status code from the supported code list will selected + # if an invalid status code is provided, the experiment will fail + # supported status code list: [200, 201, 202, 204, 300, 301, 302, 304, 307, 400, 401, 403, 404, 500, 501, 502, 503, 504] + - name: STATUS_CODE + value: '' + + # whether to modify the body as per the status code provided + - name: "MODIFY_RESPONSE_BODY" + value: "true" # port of the target service - name: TARGET_SERVICE_PORT @@ -431,7 +273,7 @@ spec: # port on which the proxy will listen - name: PROXY_PORT value: "20000" - + # network interface on which the proxy will listen - name: NETWORK_INTERFACE value: "eth0" @@ -468,162 +310,23 @@ spec: ## supported values: serial, parallel - name: SEQUENCE value: 'parallel' - - labels: - name: pod-http-reset-peer - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: 3.0.0-beta11 - ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - It injects chaos inside the pod which modifies the status code of the response from the provided application server to desired status code provided by the user and reverts after a specified duration -kind: ChaosExperiment -metadata: - name: pod-http-status-code - labels: - name: pod-http-status-code - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: 3.0.0-beta11 -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:3.0.0-beta11" - imagePullPolicy: Always - args: - - -c - - ./experiments -name pod-http-status-code - command: - - /bin/bash - env: - - - name: TARGET_CONTAINER - value: '' - - # provide lib image - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' - - # modified status code for the http response - # if no value is provided, a random status code from the supported code list will selected - # if an invalid status code is provided, the experiment will fail - # supported status code list: [200, 201, 202, 204, 300, 301, 302, 304, 307, 400, 401, 403, 404, 500, 501, 502, 503, 504] - - name: STATUS_CODE - value: '' - - # whether to modify the body as per the status code provided - - name: "MODIFY_RESPONSE_BODY" - value: "true" - - # port of the target service - - name: TARGET_SERVICE_PORT - value: "80" - - # port on which the proxy will listen - - name: PROXY_PORT - value: "20000" - - # network interface on which the proxy will listen - - name: NETWORK_INTERFACE - value: "eth0" - - - 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 - # for litmus LIB, it supports docker, containerd, crio - # for pumba LIB, it supports docker only - - name: CONTAINER_RUNTIME - value: 'containerd' - - # provide the socket file path - - name: SOCKET_PATH - value: '/run/containerd/containerd.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-http-status-code app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: 3.0.0-beta11 + app.kubernetes.io/version: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Give a cpu spike on a node belonging to a deployment + Give a memory hog on a node belonging to a deployment kind: ChaosExperiment metadata: - name: node-cpu-hog + name: node-memory-hog labels: - name: node-cpu-hog + name: node-memory-hog app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -643,10 +346,10 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -667,38 +370,41 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name node-cpu-hog + - ./experiments -name node-memory-hog command: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: '60' + value: '120' - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME + ## 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: '' - - ## 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 + + ## 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: '' - ## 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' + - name: NUMBER_OF_WORKERS + value: '1' # ENTER THE COMMA SEPARATED TARGET NODES NAME - name: TARGET_NODES - value: '' + value: '' - name: NODE_LABEL value: '' + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + # provide lib image - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' + value: 'litmuschaos/go-runner:3.0.0-beta11' ## percentage of total nodes to target - name: NODES_AFFECTED_PERC @@ -708,23 +414,24 @@ spec: ## supported values: serial, parallel - name: SEQUENCE value: 'parallel' - + labels: - name: node-cpu-hog + name: node-memory-hog app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 +--- --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Injects cpu consumption on pods belonging to an app deployment + Injects memory consumption on pods belonging to an app deployment kind: ChaosExperiment metadata: - name: pod-cpu-hog-exec + name: pod-memory-hog labels: - name: pod-cpu-hog-exec + name: pod-memory-hog app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -744,10 +451,10 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -756,7 +463,7 @@ spec: - apiGroups: ["apps"] resources: ["deployments","statefulsets","replicasets", "daemonsets"] verbs: ["list","get"] - # deriving the parent/owner details of the pod(if parent is deploymentConfig) + # deriving the parent/owner details of the pod(if parent is deploymentConfig) - apiGroups: ["apps.openshift.io"] resources: ["deploymentconfigs"] verbs: ["list","get"] @@ -780,53 +487,74 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-cpu-hog-exec + - ./experiments -name pod-memory-hog command: - /bin/bash env: - - name: TOTAL_CHAOS_DURATION - value: '60' + - name: TOTAL_CHAOS_DURATION + value: '60' - ## Number of CPU cores to stress - - name: CPU_CORES - value: '1' + ## 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: '' + ## 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: '' + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' - # 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)}')" + ## It is used in pumba lib only + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:3.0.0-beta11' - - name: TARGET_PODS - value: '' + ## It is used in pumba lib only + - name: STRESS_IMAGE + value: 'alexeiled/stress-ng:latest-ubuntu' - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: 'parallel' + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: 'containerd' + + # provide the socket file path + - name: SOCKET_PATH + value: '/run/containerd/containerd.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-cpu-hog-exec + 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: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - It injects the chaos inside the pod which modifies the header of the request/response from the provided application server to the headers provided by the user and reverts after a specified duration + Pod DNS Error injects dns failure/error in target pod containers kind: ChaosExperiment metadata: - name: pod-http-modify-header + name: pod-dns-error labels: - name: pod-http-modify-header + name: pod-dns-error app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -846,10 +574,10 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -858,7 +586,7 @@ spec: - apiGroups: ["apps"] resources: ["deployments","statefulsets","replicasets", "daemonsets"] verbs: ["list","get"] - # deriving the parent/owner details of the pod(if parent is deploymentConfig) + # deriving the parent/owner details of the pod(if parent is deploymentConfig) - apiGroups: ["apps.openshift.io"] resources: ["deploymentconfigs"] verbs: ["list","get"] @@ -879,77 +607,189 @@ spec: resources: ["chaosengines","chaosexperiments","chaosresults"] verbs: ["create","list","get","patch","update","delete"] image: "litmuschaos/go-runner:3.0.0-beta11" - imagePullPolicy: Always args: - - -c - - ./experiments -name pod-http-modify-header + - -c + - ./experiments -name pod-dns-error command: - - /bin/bash + - /bin/bash env: + - name: TARGET_CONTAINER + value: "" - - name: TARGET_CONTAINER - value: '' + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos/go-runner:3.0.0-beta11" - # provide lib image - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds - # map of headers to modify/add; Eg: {"X-Litmus-Test-Header": "X-Litmus-Test-Value"} - # to remove a header, just set the value to ""; Eg: {"X-Litmus-Test-Header": ""} - - name: HEADERS_MAP - value: '{}' + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" - # whether to modify response headers or request headers. Accepted values: request, response - - name: HEADER_MODE - value: 'response' + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" - # port of the target service - - name: TARGET_SERVICE_PORT - value: "80" + - name: TARGET_PODS + value: "" - # port on which the proxy will listen - - name: PROXY_PORT - value: "20000" + # provide the name of container runtime, it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: 'containerd' - # network interface on which the proxy will listen - - name: NETWORK_INTERFACE - value: "eth0" + # provide the socket file path + - name: SOCKET_PATH + value: '/run/containerd/containerd.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: 3.0.0-beta11 +--- +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: 3.0.0-beta11 +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:3.0.0-beta11" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-duplication + command: + - /bin/bash + env: - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds + value: '60' - # 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 + - name: TARGET_CONTAINER value: '' + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: NETWORK_INTERFACE + value: 'eth0' + + - name: NETWORK_PACKET_DUPLICATION_PERCENTAGE + value: '100' # in percentage + - 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:3.0.0-beta11' + # 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: 'containerd' + # 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: '/run/containerd/containerd.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-http-modify-header + name: pod-network-duplication app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/runtime-api-usage: "true" @@ -959,12 +799,12 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Injects http request latency on pods belonging to an app deployment + It injects the chaos inside the pod which modifies the header of the request/response from the provided application server to the headers provided by the user and reverts after a specified duration kind: ChaosExperiment metadata: - name: pod-http-latency + name: pod-http-modify-header labels: - name: pod-http-latency + name: pod-http-modify-header app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -1020,7 +860,7 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-http-latency + - ./experiments -name pod-http-modify-header command: - /bin/bash env: @@ -1032,9 +872,14 @@ spec: - name: LIB_IMAGE value: 'litmuschaos/go-runner:3.0.0-beta11' - # set latency value for the chaos - - name: LATENCY - value: '2000' #in ms + # map of headers to modify/add; Eg: {"X-Litmus-Test-Header": "X-Litmus-Test-Value"} + # to remove a header, just set the value to ""; Eg: {"X-Litmus-Test-Header": ""} + - name: HEADERS_MAP + value: '{}' + + # whether to modify response headers or request headers. Accepted values: request, response + - name: HEADER_MODE + value: 'response' # port of the target service - name: TARGET_SERVICE_PORT @@ -1082,23 +927,22 @@ spec: value: 'parallel' labels: - name: pod-http-latency + name: pod-http-modify-header app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/runtime-api-usage: "true" app.kubernetes.io/version: 3.0.0-beta11 ---- --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Taint the node where application pod is scheduled + Give a cpu spike on a node belonging to a deployment kind: ChaosExperiment metadata: - name: node-taint + name: node-cpu-hog labels: - name: node-taint + name: node-cpu-hog app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -1124,12 +968,8 @@ spec: verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] - resources: ["pods/exec","pods/eviction"] + resources: ["pods/exec"] 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"] @@ -1141,22 +981,16 @@ spec: # for experiment to perform node status checks - apiGroups: [""] resources: ["nodes"] - verbs: ["get","list","patch","update"] + verbs: ["get","list"] image: "litmuschaos/go-runner:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name node-taint + - ./experiments -name node-cpu-hog command: - /bin/bash env: - - name: TARGET_NODE - value: '' - - - name: NODE_LABEL - value: '' - - name: TOTAL_CHAOS_DURATION value: '60' @@ -1164,27 +998,53 @@ spec: - name: RAMP_TIME value: '' - # set taint label & effect - # key=value:effect or key:effect - - name: TAINTS + ## 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 lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:3.0.0-beta11' + + ## 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-taint + name: node-cpu-hog app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 +--- --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Injects network packet duplication on pods belonging to an app deployment + Injects memory consumption on pods belonging to an app deployment kind: ChaosExperiment metadata: - name: pod-network-duplication + name: pod-memory-hog-exec labels: - name: pod-network-duplication + name: pod-memory-hog-exec app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -1240,84 +1100,53 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-network-duplication + - ./experiments -name pod-memory-hog-exec 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 - - - 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: TOTAL_CHAOS_DURATION + value: '60' - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' + ## enter the amount of memory in megabytes to be consumed by the application pod + - name: MEMORY_CONSUMPTION + value: '500' - # 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: 'containerd' + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' - # provide the destination ips - # chaos injection will be triggered for these destination ips - - name: DESTINATION_IPS - value: '' + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' - # provide the destination hosts - # chaos injection will be triggered for these destination hosts - - name: DESTINATION_HOSTS - value: '' + # 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)" - # provide the socket file path - - name: SOCKET_PATH - value: '/run/containerd/containerd.sock' + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' - ## 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-network-duplication + name: pod-memory-hog-exec app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/runtime-api-usage: "true" app.kubernetes.io/version: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Pod DNS Error injects dns failure/error in target pod containers + it injects chaos into the pod which stops outgoing http requests by resetting the TCP connection and then reverts back to the original state after a specified duration kind: ChaosExperiment metadata: - name: pod-dns-error + name: pod-http-reset-peer labels: - name: pod-dns-error + name: pod-http-reset-peer app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -1370,77 +1199,92 @@ spec: resources: ["chaosengines","chaosexperiments","chaosresults"] verbs: ["create","list","get","patch","update","delete"] image: "litmuschaos/go-runner:3.0.0-beta11" + imagePullPolicy: Always args: - - -c - - ./experiments -name pod-dns-error + - -c + - ./experiments -name pod-http-reset-peer command: - - /bin/bash + - /bin/bash env: - - name: TARGET_CONTAINER - value: "" - # provide lib image - - name: LIB_IMAGE - value: "litmuschaos/go-runner:3.0.0-beta11" + - name: TARGET_CONTAINER + value: '' - - name: TOTAL_CHAOS_DURATION - value: "60" # in seconds + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:3.0.0-beta11' - # Time period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" + # reset timeout specifies after how much duration to reset the connection + - name: RESET_TIMEOUT + value: '0' #in ms - ## percentage of total pods to target - - name: PODS_AFFECTED_PERC - value: "" + # port of the target service + - name: TARGET_SERVICE_PORT + value: "80" - - name: TARGET_PODS - value: "" + # port on which the proxy will listen + - name: PROXY_PORT + value: "20000" - # provide the name of container runtime, it supports docker, containerd, crio - - name: CONTAINER_RUNTIME - value: 'containerd' + # network interface on which the proxy will listen + - name: NETWORK_INTERFACE + value: "eth0" - # provide the socket file path - - name: SOCKET_PATH - value: '/run/containerd/containerd.sock' + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: "parallel" + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' - # list of the target hostnames or kewywords eg. '["litmuschaos","chaosnative.io"]' . If empty all hostnames are targets - - name: TARGET_HOSTNAMES - value: "" + # percentage of total pods to target + - name: PODS_AFFECTED_PERC + 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" + - 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: 'containerd' + + # provide the socket file path + - name: SOCKET_PATH + value: '/run/containerd/containerd.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: - experiment: pod-dns-error + name: pod-http-reset-peer app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/runtime-api-usage: "true" app.kubernetes.io/version: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Pod DNS Spoof can spoof particular dns requests in target pod container to desired target hostnames + Restart node kind: ChaosExperiment metadata: - name: pod-dns-spoof + name: node-restart labels: - name: pod-dns-spoof + name: node-restart app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 spec: definition: - scope: Namespaced + scope: Cluster permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] @@ -1450,34 +1294,18 @@ spec: - apiGroups: [""] resources: ["events"] verbs: ["create","get","list","patch","update"] - # Fetch configmaps details and mount it to the experiment pod (if specified) + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) - apiGroups: [""] - resources: ["configmaps"] + resources: ["configmaps","secrets"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + 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"] @@ -1486,73 +1314,69 @@ spec: - 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:3.0.0-beta11" + imagePullPolicy: Always args: - - -c - - ./experiments -name pod-dns-spoof + - -c + - ./experiments -name node-restart command: - - /bin/bash + - /bin/bash env: - - name: TARGET_CONTAINER - value: "" - - # provide lib image - - name: LIB_IMAGE - value: "litmuschaos/go-runner:3.0.0-beta11" + - name: SSH_USER + value: 'root' - - name: TOTAL_CHAOS_DURATION - value: "60" # in seconds + - name: TOTAL_CHAOS_DURATION + value: '60' - # Time period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" + # 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: "" + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos/go-runner:3.0.0-beta11" - - name: TARGET_PODS - value: "" + # ENTER THE TARGET NODE NAME + - name: TARGET_NODE + value: '' - # provide the name of container runtime, it supports docker, containerd, crio - - name: CONTAINER_RUNTIME - value: 'containerd' + - name: NODE_LABEL + value: '' - # provide the socket file path - - name: SOCKET_PATH - value: '/run/containerd/containerd.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: "" + # ENTER THE TARGET NODE IP + - name: TARGET_NODE_IP + value: '' labels: - experiment: pod-dns-spoof + name: node-restart app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/runtime-api-usage: "true" app.kubernetes.io/version: 3.0.0-beta11 + secrets: + - name: id-rsa + mountPath: /mnt/ +--- --- apiVersion: litmuschaos.io/v1alpha1 description: - message: "Kills a container belonging to an application pod \n" + message: | + Taint the node where application pod is scheduled kind: ChaosExperiment metadata: - name: container-kill + name: node-taint labels: - name: container-kill + name: node-taint app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 spec: definition: - scope: Namespaced + scope: Cluster permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] @@ -1566,30 +1390,18 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] - resources: ["pods/exec"] + resources: ["pods/exec","pods/eviction"] verbs: ["get","list","create"] - # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + # ignore daemonsets while draining the node - 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"] + resources: ["daemonsets"] + verbs: ["list","get","delete"] # for configuring and monitor the experiment job by the chaos-runner pod - apiGroups: ["batch"] resources: ["jobs"] @@ -1598,85 +1410,59 @@ spec: - 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:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name container-kill + - ./experiments -name node-taint command: - /bin/bash env: - - name: TARGET_CONTAINER - value: '' - - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME + - name: TARGET_NODE value: '' - - name: TARGET_PODS + - name: NODE_LABEL value: '' - # provide the chaos interval - - name: CHAOS_INTERVAL - value: '10' - - - name: SIGNAL - value: 'SIGKILL' - - # provide the socket file path - - name: SOCKET_PATH - value: '/run/containerd/containerd.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: 'containerd' - - # provide the total chaos duration - name: TOTAL_CHAOS_DURATION - value: '20' - - ## percentage of total pods to target - - name: PODS_AFFECTED_PERC - value: '' + value: '60' - # To select pods on specific node(s) - - name: NODE_LABEL + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME value: '' - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' - - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: 'parallel' + # set taint label & effect + # key=value:effect or key:effect + - name: TAINTS + value: '' labels: - name: container-kill + name: node-taint app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/runtime-api-usage: "true" app.kubernetes.io/version: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Inject network packet corruption into application pod + Give IO disk stress on a node belonging to a deployment kind: ChaosExperiment metadata: - name: pod-network-corruption + name: node-io-stress labels: - name: pod-network-corruption + name: node-io-stress app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 spec: definition: - scope: Namespaced + scope: Cluster permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] @@ -1698,22 +1484,6 @@ spec: - 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"] @@ -1722,97 +1492,90 @@ spec: - 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:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name pod-network-corruption + - ./experiments -name node-io-stress command: - /bin/bash env: - - name: TARGET_CONTAINER - value: '' - - # provide lib image - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' - - - name: NETWORK_INTERFACE - value: 'eth0' + - name: TOTAL_CHAOS_DURATION + value: '120' - - name: TC_IMAGE - value: 'gaiadocker/iproute2' + ## specify the size as percentage of free space on the file system + ## default value 90 (in percentage) + - name: FILESYSTEM_UTILIZATION_PERCENTAGE + value: '10' - - name: NETWORK_PACKET_CORRUPTION_PERCENTAGE - value: '100' #in PERCENTAGE + ## 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: '' - - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds + ## Number of core of CPU + - name: CPU + value: '1' - # Time period to wait before and after injection of chaos in sec - - name: RAMP_TIME - 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: '' + ## Total number of vm workers + - name: VM_WORKERS + value: '1' - - name: TARGET_PODS + ## enter the comma separated target nodes name + - name: TARGET_NODES 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: 'containerd' - - # provide the destination ips - # chaos injection will be triggered for these destination ips - - name: DESTINATION_IPS + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME value: '' - # provide the destination hosts - # chaos injection will be triggered for these destination hosts - - name: DESTINATION_HOSTS - value: '' + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:3.0.0-beta11' - # provide the socket file path - - name: SOCKET_PATH - value: '/run/containerd/containerd.sock' + ## percentage of total nodes to target + - name: NODES_AFFECTED_PERC + value: '' - ## it defines the sequence of chaos execution for multiple target pods + ## it defines the sequence of chaos execution for multiple target nodes ## supported values: serial, parallel - name: SEQUENCE value: 'parallel' labels: - name: pod-network-corruption + name: node-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: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Injects network packet loss on pods belonging to an app deployment + Kills the docker service on the application node to check the resiliency. kind: ChaosExperiment metadata: - name: pod-network-loss + name: docker-service-kill labels: - name: pod-network-loss + name: docker-service-kill app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 spec: definition: - scope: Namespaced + scope: Cluster permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] @@ -1826,30 +1589,14 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + 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"] @@ -1858,38 +1605,128 @@ spec: - 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:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name pod-network-loss + - ./experiments -name docker-service-kill command: - /bin/bash env: + + - name: TOTAL_CHAOS_DURATION + value: '90' # in seconds - - name: TARGET_CONTAINER + # Period to wait before injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: NODE_LABEL value: '' # provide lib image - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' + value: 'ubuntu:16.04' + + # provide the target node name + - name: TARGET_NODE + value: '' - - name: NETWORK_INTERFACE - value: 'eth0' + 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: 3.0.0-beta11 - - name: TC_IMAGE - value: 'gaiadocker/iproute2' - - name: NETWORK_PACKET_LOSS_PERCENTAGE - value: '100' #in PERCENTAGE +--- +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: 3.0.0-beta11 +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:3.0.0-beta11" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-delete + command: + - /bin/bash + env: - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds + value: '15' - # ime period to wait before and after injection of chaos in sec + # 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: '' @@ -1901,48 +1738,26 @@ spec: - 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: 'containerd' - - # 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: '/run/containerd/containerd.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 + name: pod-delete app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/runtime-api-usage: "true" app.kubernetes.io/version: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: - message: | - Injects 100% network packet loss on pods belonging to an app deployment + message: "Kills a container belonging to an application pod \n" kind: ChaosExperiment metadata: - name: pod-network-partition + name: container-kill labels: - name: pod-network-partition + name: container-kill app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -1970,14 +1785,26 @@ spec: - 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"] - # 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"] @@ -1986,68 +1813,81 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-network-partition + - ./experiments -name container-kill command: - /bin/bash env: - - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds + - name: TARGET_CONTAINER + value: '' - # ime period to wait before and after injection of chaos in sec + # Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' - # provide the destination ips - # chaos injection will be triggered for these destination ips - - name: DESTINATION_IPS + - name: TARGET_PODS value: '' - # provide the destination hosts - # chaos injection will be triggered for these destination hosts - - name: DESTINATION_HOSTS - value: '' + # provide the chaos interval + - name: CHAOS_INTERVAL + value: '10' - # provide network policy type - # support ingress, egress, all values - - name: POLICY_TYPES - value: 'all' + - name: SIGNAL + value: 'SIGKILL' - # provide labels of the destination pods - - name: POD_SELECTOR - value: '' + # provide the socket file path + - name: SOCKET_PATH + value: '/run/containerd/containerd.sock' - # provide labels the destination namespaces - - name: NAMESPACE_SELECTOR + # 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: 'containerd' + + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC value: '' - # provide comma separated ports - - name: PORTS + # To select pods on specific node(s) + - name: NODE_LABEL value: '' + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:3.0.0-beta11' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + labels: - name: pod-network-partition + 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: 3.0.0-beta11 ---- --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Drain the node where application pod is scheduled + Injects http request latency on pods belonging to an app deployment kind: ChaosExperiment metadata: - name: node-drain + name: pod-http-latency labels: - name: node-drain + name: pod-http-latency app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 spec: definition: - scope: Cluster + scope: Namespaced permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] @@ -2061,18 +1901,30 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] - resources: ["pods/exec","pods/eviction"] + resources: ["pods/exec"] verbs: ["get","list","create"] - # ignore daemonsets while draining the node + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) - apiGroups: ["apps"] - resources: ["daemonsets"] - verbs: ["list","get","delete"] + 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"] @@ -2081,54 +1933,94 @@ spec: - 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:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name node-drain + - ./experiments -name pod-http-latency command: - /bin/bash env: - - - name: TARGET_NODE + + - name: TARGET_CONTAINER value: '' - - name: NODE_LABEL - value: '' + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:3.0.0-beta11' + + # set latency value for the chaos + - name: LATENCY + value: '2000' #in ms + + # port of the target service + - name: TARGET_SERVICE_PORT + value: "80" + + # port on which the proxy will listen + - name: PROXY_PORT + value: "20000" + + # network interface on which the proxy will listen + - name: NETWORK_INTERFACE + value: "eth0" - name: TOTAL_CHAOS_DURATION - value: '60' + value: '60' # in seconds - # Period to wait before and after injection of chaos in sec + # 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 + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'containerd' + + # provide the socket file path + - name: SOCKET_PATH + value: '/run/containerd/containerd.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: node-drain + name: pod-http-latency app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" app.kubernetes.io/version: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Kills the docker service on the application node to check the resiliency. + Injects network latency on pods belonging to an app deployment kind: ChaosExperiment metadata: - name: docker-service-kill + name: pod-network-latency labels: - name: docker-service-kill + name: pod-network-latency app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 spec: definition: - scope: Cluster + scope: Namespaced permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] @@ -2142,14 +2034,30 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + 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"] @@ -2158,55 +2066,94 @@ spec: - 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:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name docker-service-kill + - ./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:3.0.0-beta11' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: NETWORK_LATENCY + value: '2000' #in ms - name: TOTAL_CHAOS_DURATION - value: '90' # in seconds + value: '60' # in seconds - # Period to wait before injection of chaos in sec + # Time period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' - - name: NODE_LABEL + - name: JITTER + value: '0' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC value: '' - # provide lib image - - name: LIB_IMAGE - value: 'ubuntu:16.04' + - name: TARGET_PODS + value: '' - # provide the target node name - - name: TARGET_NODE + # 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: 'containerd' + + # 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: '/run/containerd/containerd.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: docker-service-kill + name: pod-network-latency app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/service-kill: "true" + app.kubernetes.io/runtime-api-usage: "true" app.kubernetes.io/version: 3.0.0-beta11 - --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Deletes a pod belonging to a deployment/statefulset/daemonset + Injects cpu consumption on pods belonging to an app deployment kind: ChaosExperiment metadata: - name: pod-delete + name: pod-cpu-hog-exec labels: - name: pod-delete + name: pod-cpu-hog-exec app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -2226,10 +2173,10 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -2238,7 +2185,7 @@ spec: - apiGroups: ["apps"] resources: ["deployments","statefulsets","replicasets", "daemonsets"] verbs: ["list","get"] - # deriving the parent/owner details of the pod(if parent is deploymentConfig) + # deriving the parent/owner details of the pod(if parent is deploymentConfig) - apiGroups: ["apps.openshift.io"] resources: ["deploymentconfigs"] verbs: ["list","get"] @@ -2262,42 +2209,121 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-delete + - ./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: '' + + # 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: 3.0.0-beta11 + +--- +--- +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: 3.0.0-beta11 +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:3.0.0-beta11" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-drain 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: TARGET_PODS + + - name: TARGET_NODE 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' + - name: TOTAL_CHAOS_DURATION + value: '60' + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + labels: - name: pod-delete + name: node-drain app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 @@ -2306,12 +2332,12 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Restart node + poweroff node kind: ChaosExperiment metadata: - name: node-restart + name: node-poweroff labels: - name: node-restart + name: node-poweroff app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -2365,6 +2391,9 @@ spec: - 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: '' @@ -2385,7 +2414,7 @@ spec: value: '' labels: - name: node-restart + name: node-poweroff app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 @@ -2393,17 +2422,16 @@ spec: - name: id-rsa mountPath: /mnt/ ---- --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Injects memory consumption on pods belonging to an app deployment + Injects cpu consumption on pods belonging to an app deployment kind: ChaosExperiment metadata: - name: pod-memory-hog + name: pod-cpu-hog labels: - name: pod-memory-hog + name: pod-cpu-hog app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -2459,75 +2487,75 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-memory-hog + - ./experiments -name pod-cpu-hog command: - /bin/bash env: - - name: TOTAL_CHAOS_DURATION - value: '60' + - 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 CPU cores to stress + - name: CPU_CORES + value: '1' - ## Number of workers to perform stress - - name: NUMBER_OF_WORKERS - 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: '' + ## 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: '' + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' - ## It is used in pumba lib only - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' + ## It is used in pumba lib only + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:3.0.0-beta11' - ## It is used in pumba lib only - - name: STRESS_IMAGE - value: 'alexeiled/stress-ng:latest-ubuntu' + ## It is used in pumba lib only + - name: STRESS_IMAGE + value: 'alexeiled/stress-ng:latest-ubuntu' - ## provide the cluster runtime - - name: CONTAINER_RUNTIME - value: 'containerd' + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: 'containerd' - # provide the socket file path - - name: SOCKET_PATH - value: '/run/containerd/containerd.sock' + # provide the socket file path + - name: SOCKET_PATH + value: '/run/containerd/containerd.sock' - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: 'parallel' + - name: TARGET_PODS + value: '' - - name: TARGET_PODS - value: '' + # To select pods on specific node(s) + - name: NODE_LABEL + 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-memory-hog + 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: 3.0.0-beta11 ---- --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - IO stress on a app pods belonging to an app deployment + Injects network packet loss on pods belonging to an app deployment kind: ChaosExperiment metadata: - name: pod-io-stress + name: pod-network-loss labels: - name: pod-io-stress + name: pod-network-loss app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -2565,126 +2593,12 @@ spec: 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:3.0.0-beta11" - 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 lib image - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' - - ## provide the cluster runtime - - name: CONTAINER_RUNTIME - value: 'containerd' - - # provide the socket file path - - name: SOCKET_PATH - value: '/run/containerd/containerd.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: 3.0.0-beta11 - ---- -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: 3.0.0-beta11 -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"] + 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"] @@ -2693,76 +2607,91 @@ spec: - 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:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name node-memory-hog + - ./experiments -name pod-network-loss command: - /bin/bash env: + - name: TARGET_CONTAINER + value: '' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:3.0.0-beta11' + + - 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: '120' + value: '60' # in seconds - ## 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 + # ime period to wait before and after injection of chaos in sec + - name: RAMP_TIME 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 + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC value: '' - - name: NUMBER_OF_WORKERS - value: '1' - - # ENTER THE COMMA SEPARATED TARGET NODES NAME - - name: TARGET_NODES + - 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 name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'containerd' - # provide lib image - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' + # provide the destination ips + # chaos injection will be triggered for these destination ips + - name: DESTINATION_IPS + value: '' - ## percentage of total nodes to target - - name: NODES_AFFECTED_PERC + # provide the destination hosts + # chaos injection will be triggered for these destination hosts + - name: DESTINATION_HOSTS value: '' - ## it defines the sequence of chaos execution for multiple target nodes + # provide the socket file path + - name: SOCKET_PATH + value: '/run/containerd/containerd.sock' + + ## it defines the sequence of chaos execution for multiple target pods ## supported values: serial, parallel - name: SEQUENCE value: 'parallel' labels: - name: node-memory-hog + 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: 3.0.0-beta11 ---- --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Injects memory consumption on pods belonging to an app deployment + It injects the chaos inside the pod which modifies the body of the response from the provided application server to the body string provided by the user and reverts after a specified duration kind: ChaosExperiment metadata: - name: pod-memory-hog-exec + name: pod-http-modify-body labels: - name: pod-memory-hog-exec + name: pod-http-modify-body app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -2782,10 +2711,10 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -2794,7 +2723,7 @@ spec: - apiGroups: ["apps"] resources: ["deployments","statefulsets","replicasets", "daemonsets"] verbs: ["list","get"] - # deriving the parent/owner details of the pod(if parent is deploymentConfig) + # deriving the parent/owner details of the pod(if parent is deploymentConfig) - apiGroups: ["apps.openshift.io"] resources: ["deploymentconfigs"] verbs: ["list","get"] @@ -2818,53 +2747,84 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-memory-hog-exec + - ./experiments -name pod-http-modify-body 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' + - name: TARGET_CONTAINER + value: '' - ## percentage of total pods to target - - name: PODS_AFFECTED_PERC - value: '' + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:3.0.0-beta11' + + # provide the body string to overwrite the response body + # if no value is provided, response will be an empty body. + - name: RESPONSE_BODY + value: '' - ## Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: '' + # port of the target service + - name: TARGET_SERVICE_PORT + value: "80" - # 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)" + # port on which the proxy will listen + - name: PROXY_PORT + value: "20000" + + # network interface on which the proxy will listen + - name: NETWORK_INTERFACE + value: "eth0" - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: 'parallel' + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds - - name: TARGET_PODS - value: '' + # 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 + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'containerd' + + # provide the socket file path + - name: SOCKET_PATH + value: '/run/containerd/containerd.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-memory-hog-exec + name: pod-http-modify-body app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: 3.0.0-beta11 + app.kubernetes.io/version: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Kills the kubelet service on the application node to check the resiliency. + Scale the application replicas and test the node autoscaling on cluster kind: ChaosExperiment metadata: - name: kubelet-service-kill + name: pod-autoscaler labels: - name: kubelet-service-kill + name: pod-autoscaler app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -2884,14 +2844,18 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + 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"] @@ -2900,54 +2864,43 @@ spec: - 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:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name kubelet-service-kill + - ./experiments -name pod-autoscaler command: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds + value: '60' # Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' - - name: NODE_LABEL - value: '' - - # provide lib image - - name: LIB_IMAGE - value: 'ubuntu:16.04' - - # provide the target node name - - name: TARGET_NODE - value: '' - + # Number of replicas to scale + - name: REPLICA_COUNT + value: '5' + labels: - name: kubelet-service-kill + name: pod-autoscaler app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/service-kill: "true" app.kubernetes.io/version: 3.0.0-beta11 +--- --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Injects cpu consumption on pods belonging to an app deployment + IO stress on a app pods belonging to an app deployment kind: ChaosExperiment metadata: - name: pod-cpu-hog + name: pod-io-stress labels: - name: pod-cpu-hog + name: pod-io-stress app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -2967,10 +2920,10 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -2979,7 +2932,7 @@ spec: - apiGroups: ["apps"] resources: ["deployments","statefulsets","replicasets", "daemonsets"] verbs: ["list","get"] - # deriving the parent/owner details of the pod(if parent is deploymentConfig) + # deriving the parent/owner details of the pod(if parent is deploymentConfig) - apiGroups: ["apps.openshift.io"] resources: ["deploymentconfigs"] verbs: ["list","get"] @@ -3003,81 +2956,87 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-cpu-hog + - ./experiments -name pod-io-stress command: - /bin/bash env: - - name: TOTAL_CHAOS_DURATION - value: '60' + - name: TOTAL_CHAOS_DURATION + value: '120' - ## Number of CPU cores to stress - - name: CPU_CORES - value: '1' + ## specify the size as percentage of free space on the file system + ## default value 90 (in percentage) + - name: FILESYSTEM_UTILIZATION_PERCENTAGE + value: '10' - ## 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' + ## 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: '' - ## Percentage of total pods to target - - name: PODS_AFFECTED_PERC - value: '' + ## Total number of workers default value is 4 + - name: NUMBER_OF_WORKERS + value: '4' - ## 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: '' - ## It is used in pumba lib only - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' + # provide volume mount path + - name: VOLUME_MOUNT_PATH + value: '' - ## It is used in pumba lib only - - name: STRESS_IMAGE - value: 'alexeiled/stress-ng:latest-ubuntu' + ## specify the comma separated target pods + - name: TARGET_PODS + value: '' - ## provide the cluster runtime - - name: CONTAINER_RUNTIME - value: 'containerd' + # 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 socket file path - - name: SOCKET_PATH - value: '/run/containerd/containerd.sock' + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:3.0.0-beta11' - - name: TARGET_PODS - value: '' + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: 'containerd' - # To select pods on specific node(s) - - name: NODE_LABEL - value: '' + # provide the socket file path + - name: SOCKET_PATH + value: '/run/containerd/containerd.sock' - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: 'parallel' + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' labels: - name: pod-cpu-hog + 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/runtime-api-usage: "true" app.kubernetes.io/version: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Scale the application replicas and test the node autoscaling on cluster + Fillup Ephemeral Storage of a Resource kind: ChaosExperiment metadata: - name: pod-autoscaler + name: disk-fill labels: - name: pod-autoscaler + name: disk-fill app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 spec: definition: - scope: Cluster + scope: Namespaced permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] @@ -3099,10 +3058,22 @@ spec: - apiGroups: [""] resources: ["pods/exec"] verbs: ["get","list","create"] - # performs CRUD operations on the deployments and statefulsets + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) - apiGroups: ["apps"] - resources: ["deployments","statefulsets"] - verbs: ["list","get","patch","update"] + 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"] @@ -3115,11 +3086,17 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-autoscaler + - ./experiments -name disk-fill command: - /bin/bash env: + - name: TARGET_CONTAINER + value: '' + + - name: FILL_PERCENTAGE + value: '80' + - name: TOTAL_CHAOS_DURATION value: '60' @@ -3127,26 +3104,58 @@ spec: - name: RAMP_TIME value: '' - # Number of replicas to scale - - name: REPLICA_COUNT - value: '5' + # 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:3.0.0-beta11' + + # provide the name of container runtime, it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: 'containerd' + + # provide the socket file path + - name: SOCKET_PATH + value: '/run/containerd/containerd.sock' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' labels: - name: pod-autoscaler + 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: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - It injects the chaos inside the pod which modifies the body of the response from the provided application server to the body string provided by the user and reverts after a specified duration + Pod DNS Spoof can spoof particular dns requests in target pod container to desired target hostnames kind: ChaosExperiment metadata: - name: pod-http-modify-body + name: pod-dns-spoof labels: - name: pod-http-modify-body + name: pod-dns-spoof app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -3166,10 +3175,10 @@ spec: - apiGroups: [""] resources: ["configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -3178,7 +3187,7 @@ spec: - apiGroups: ["apps"] resources: ["deployments","statefulsets","replicasets", "daemonsets"] verbs: ["list","get"] - # deriving the parent/owner details of the pod(if parent is deploymentConfig) + # deriving the parent/owner details of the pod(if parent is deploymentConfig) - apiGroups: ["apps.openshift.io"] resources: ["deploymentconfigs"] verbs: ["list","get"] @@ -3199,87 +3208,67 @@ spec: resources: ["chaosengines","chaosexperiments","chaosresults"] verbs: ["create","list","get","patch","update","delete"] image: "litmuschaos/go-runner:3.0.0-beta11" - imagePullPolicy: Always args: - - -c - - ./experiments -name pod-http-modify-body + - -c + - ./experiments -name pod-dns-spoof command: - - /bin/bash + - /bin/bash env: + - name: TARGET_CONTAINER + value: "" - - name: TARGET_CONTAINER - value: '' - - # provide lib image - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:3.0.0-beta11' - - # provide the body string to overwrite the response body - # if no value is provided, response will be an empty body. - - name: RESPONSE_BODY - value: '' - - # port of the target service - - name: TARGET_SERVICE_PORT - value: "80" - - # port on which the proxy will listen - - name: PROXY_PORT - value: "20000" - - # network interface on which the proxy will listen - - name: NETWORK_INTERFACE - value: "eth0" + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos/go-runner:3.0.0-beta11" - - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds - # Time period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: '' + # 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: '' + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" - - name: TARGET_PODS - 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: 'containerd' + # provide the name of container runtime, it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: 'containerd' - # provide the socket file path - - name: SOCKET_PATH - value: '/run/containerd/containerd.sock' + # provide the socket file path + - name: SOCKET_PATH + value: '/run/containerd/containerd.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" - ## 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: - name: pod-http-modify-body + 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: 3.0.0-beta11 --- apiVersion: litmuschaos.io/v1alpha1 description: message: | - Fillup Ephemeral Storage of a Resource + Inject network packet corruption into application pod kind: ChaosExperiment metadata: - name: disk-fill + name: pod-network-corruption labels: - name: disk-fill + name: pod-network-corruption app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -3335,7 +3324,7 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name disk-fill + - ./experiments -name pod-network-corruption command: - /bin/bash env: @@ -3343,42 +3332,53 @@ spec: - name: TARGET_CONTAINER value: '' - - name: FILL_PERCENTAGE - value: '80' + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:3.0.0-beta11' + + - 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' + value: '60' # in seconds - # Period to wait before and after injection of chaos in sec + # Time period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' - # provide the data block size - # supported unit is KB - - name: DATA_BLOCK_SIZE - value: '256' - - - name: TARGET_PODS + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC value: '' - - name: EPHEMERAL_STORAGE_MEBIBYTES + - 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:3.0.0-beta11' - - # provide the name of container runtime, it supports docker, containerd, crio + # 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: 'containerd' + # 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: '/run/containerd/containerd.sock' @@ -3389,10 +3389,10 @@ spec: value: 'parallel' labels: - name: disk-fill + name: pod-network-corruption app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job - app.kubernetes.io/host-path-usage: "true" + app.kubernetes.io/runtime-api-usage: "true" app.kubernetes.io/version: 3.0.0-beta11 --- diff --git a/charts/kube-aws/experiments.yaml b/charts/kube-aws/experiments.yaml index 2cbf6073e..f988cc7d6 100644 --- a/charts/kube-aws/experiments.yaml +++ b/charts/kube-aws/experiments.yaml @@ -1,12 +1,12 @@ apiVersion: litmuschaos.io/v1alpha1 description: message: | - Stopping an EC2 instance identified by tag. + Detaching an ebs volume from ec2 instance. kind: ChaosExperiment metadata: - name: ec2-terminate-by-tag + name: ebs-loss-by-id labels: - name: ec2-terminate-by-tag + name: ebs-loss-by-id app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -42,15 +42,11 @@ spec: - 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:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name ec2-terminate-by-tag + - ./experiments -name ebs-loss-by-id command: - /bin/bash env: @@ -64,29 +60,21 @@ spec: - name: RAMP_TIME value: '' - - name: INSTANCE_TAG + - name: EBS_VOLUME_ID value: '' - # enable it if the target instance is a part of self-managed nodegroup. - - name: MANAGED_NODEGROUP - value: 'disable' - - name: REGION value: '' - # Target the percentage of instance filtered from tag - - name: INSTANCE_AFFECTED_PERC - value: '' - - name: SEQUENCE value: 'parallel' - # Provide the path of aws credentials mounted from secret + # Provide the path of aws credentials mounted from secret - name: AWS_SHARED_CREDENTIALS_FILE value: '/tmp/cloud_config.yml' labels: - name: ec2-terminate-by-tag + name: ebs-loss-by-id app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 @@ -98,18 +86,18 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Stopping an EC2 instance identified by ID. + Execute aws-az chaos to detach the target zones from the load balancer kind: ChaosExperiment metadata: - name: ec2-terminate-by-id + name: aws-az-chaos labels: - name: ec2-terminate-by-id + name: aws-az-chaos app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 spec: definition: - scope: Cluster + scope: Namespaced permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] @@ -139,49 +127,32 @@ spec: - 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:3.0.0-beta11" + image: "litmuschaos/py-runner:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name ec2-terminate-by-id + - python3 -u experiment -name aws-az-chaos command: - /bin/bash env: - name: TOTAL_CHAOS_DURATION value: '30' - - name: CHAOS_INTERVAL value: '30' - - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: '' - - # enable it if the target instance is a part of self-managed nodegroup. - - name: MANAGED_NODEGROUP - value: 'disable' - - # Instance ID of the target ec2 instance - # Multiple IDs can also be provided as comma separated values ex: id1,id2 - - name: EC2_INSTANCE_ID + - name: LIB + value: 'litmus' + - name: LOAD_BALANCER_NAME value: '' - - - name: REGION + - name: LOAD_BALANCER_ZONES value: '' - - - name: SEQUENCE - value: 'parallel' - - # Provide the path of aws credentials mounted from secret + - name: LOAD_BALANCERNAME_ARN + value: 'na' - name: AWS_SHARED_CREDENTIALS_FILE - value: '/tmp/cloud_config.yml' - + value: "/tmp/cloud_config.yml" + - name: RAMP_TIME + value: '' labels: - name: ec2-terminate-by-id + name: aws-az-chaos app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 @@ -193,18 +164,18 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Execute aws-az chaos to detach the target zones from the load balancer + Stopping an EC2 instance identified by tag. kind: ChaosExperiment metadata: - name: aws-az-chaos + name: ec2-terminate-by-tag labels: - name: aws-az-chaos + name: ec2-terminate-by-tag app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 spec: definition: - scope: Namespaced + scope: Cluster permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] @@ -218,10 +189,10 @@ spec: - apiGroups: [""] resources: ["secrets","configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -234,32 +205,51 @@ spec: - apiGroups: ["litmuschaos.io"] resources: ["chaosengines","chaosexperiments","chaosresults"] verbs: ["create","list","get","patch","update","delete"] - image: "litmuschaos/py-runner:3.0.0-beta11" + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:3.0.0-beta11" imagePullPolicy: Always args: - -c - - python3 -u experiment -name aws-az-chaos + - ./experiments -name ec2-terminate-by-tag command: - /bin/bash env: - name: TOTAL_CHAOS_DURATION value: '30' + - name: CHAOS_INTERVAL value: '30' - - name: LIB - value: 'litmus' - - name: LOAD_BALANCER_NAME + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME value: '' - - name: LOAD_BALANCER_ZONES + + - name: INSTANCE_TAG value: '' - - name: LOAD_BALANCERNAME_ARN - value: 'na' - - name: AWS_SHARED_CREDENTIALS_FILE - value: "/tmp/cloud_config.yml" - - name: RAMP_TIME + + # enable it if the target instance is a part of self-managed nodegroup. + - name: MANAGED_NODEGROUP + value: 'disable' + + - name: REGION + value: '' + + # Target the percentage of instance filtered from tag + - name: INSTANCE_AFFECTED_PERC value: '' + + - name: SEQUENCE + value: 'parallel' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + labels: - name: aws-az-chaos + name: ec2-terminate-by-tag app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 @@ -296,10 +286,10 @@ spec: - apiGroups: [""] resources: ["secrets","configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -336,15 +326,15 @@ spec: value: '' - name: SEQUENCE - value: 'parallel' + value: 'parallel' - name: VOLUME_AFFECTED_PERC - value: '' + value: '' # Provide the path of aws credentials mounted from secret - name: AWS_SHARED_CREDENTIALS_FILE value: '/tmp/cloud_config.yml' - + labels: name: ebs-loss-by-tag app.kubernetes.io/part-of: litmus @@ -358,12 +348,12 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Detaching an ebs volume from ec2 instance. + Stopping an EC2 instance identified by ID. kind: ChaosExperiment metadata: - name: ebs-loss-by-id + name: ec2-terminate-by-id labels: - name: ebs-loss-by-id + name: ec2-terminate-by-id app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -383,10 +373,10 @@ spec: - apiGroups: [""] resources: ["secrets","configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -399,11 +389,15 @@ spec: - 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:3.0.0-beta11" imagePullPolicy: Always args: - -c - - ./experiments -name ebs-loss-by-id + - ./experiments -name ec2-terminate-by-id command: - /bin/bash env: @@ -417,21 +411,27 @@ spec: - name: RAMP_TIME value: '' - - name: EBS_VOLUME_ID + # enable it if the target instance is a part of self-managed nodegroup. + - name: MANAGED_NODEGROUP + value: 'disable' + + # Instance ID of the target ec2 instance + # Multiple IDs can also be provided as comma separated values ex: id1,id2 + - name: EC2_INSTANCE_ID value: '' - name: REGION value: '' - name: SEQUENCE - value: 'parallel' + value: 'parallel' # Provide the path of aws credentials mounted from secret - name: AWS_SHARED_CREDENTIALS_FILE value: '/tmp/cloud_config.yml' - + labels: - name: ebs-loss-by-id + name: ec2-terminate-by-id app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 diff --git a/charts/spring-boot/experiments.yaml b/charts/spring-boot/experiments.yaml index 3853e5d96..7f8742925 100644 --- a/charts/spring-boot/experiments.yaml +++ b/charts/spring-boot/experiments.yaml @@ -1,12 +1,12 @@ apiVersion: litmuschaos.io/v1alpha1 description: message: | - It can target random pods with a Spring Boot application and allows configuring the assaults to inject network latency + It can target random pods with a Spring Boot application and allows configuring the assaults to inject cpu-stress kind: ChaosExperiment metadata: - name: spring-boot-exceptions + name: spring-boot-cpu-stress labels: - name: spring-boot-exceptions + name: spring-boot-cpu-stress app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -42,18 +42,15 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name spring-boot-exceptions + - ./experiments -name spring-boot-cpu-stress command: - /bin/bash env: - # Type of raised exception - - name: CM_EXCEPTIONS_TYPE - value: 'java.lang.IllegalArgumentException' - - # Argument of raised exception - - name: CM_EXCEPTIONS_ARGUMENTS - value: 'java.lang.String:custom illegal argument exception' + # it contains fraction of cpu to be stressed(0.95 equals 95%) + # it supports value in range [0.1,1.0] + - name: CPU_LOAD_FRACTION + value: '0.9' # port of the spring boot application - name: CM_PORT @@ -90,7 +87,7 @@ spec: value: 'parallel' labels: - name: spring-boot-exceptions + name: spring-boot-cpu-stress app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 @@ -102,9 +99,9 @@ description: It can target random pods with a Spring Boot application and allows configuring the assaults to inject cpu-stress kind: ChaosExperiment metadata: - name: spring-boot-cpu-stress + name: spring-boot-faults labels: - name: spring-boot-cpu-stress + name: spring-boot-faults app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -140,16 +137,58 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name spring-boot-cpu-stress + - ./experiments -name spring-boot-faults command: - /bin/bash env: + # it enables spring app-kill fault + - name: CM_KILL_APPLICATION_ACTIVE + value: '' + + # it enables spring-boot latency fault + - name: CM_LATENCY_ACTIVE + value: '' + + # provide the latency (ms) + # it is applicable when latency is active + - name: LATENCY + value: '2000' + + # it enables spring-boot memory stress fault + - name: CM_MEMORY_ACTIVE + value: '' + + # it contains fraction of memory to be stressed(0.70 equals 70%) + # it supports value in range [0.01,0.95] + # it is applicable when memory is active + - name: MEMORY_FILL_FRACTION + value: '0.70' + + # it enables spring-boot cpu stress fault + - name: CM_CPU_ACTIVE + value: '' + # it contains fraction of cpu to be stressed(0.95 equals 95%) # it supports value in range [0.1,1.0] + # it is applicable when cpu is active - name: CPU_LOAD_FRACTION value: '0.9' + # it enables spring-boot exceptions fault + - name: CM_EXCEPTIONS_ACTIVE + value: '' + + # Type of raised exception + # it is applicable when exceptions is active + - name: CM_EXCEPTIONS_TYPE + value: 'java.lang.IllegalArgumentException' + + # Argument of raised exception + # it is applicable when exceptions is active + - name: CM_EXCEPTIONS_ARGUMENTS + value: 'java.lang.String:custom illegal argument exception' + # port of the spring boot application - name: CM_PORT value: '' @@ -175,7 +214,7 @@ spec: - name: PODS_AFFECTED_PERC value: '' - ## Period to wait before and after injection of chaos + ## Period to wait before and after injection of chaos - name: RAMP_TIME value: '' @@ -185,7 +224,7 @@ spec: value: 'parallel' labels: - name: spring-boot-cpu-stress + name: spring-boot-faults app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 @@ -194,12 +233,12 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - It can target random pods with a Spring Boot application and allows configuring the assaults to inject memory-stress + It can target random pods with a Spring Boot application and allows configuring the assaults to inject network latency kind: ChaosExperiment metadata: - name: spring-boot-memory-stress + name: spring-boot-latency labels: - name: spring-boot-memory-stress + name: spring-boot-latency app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -235,15 +274,14 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name spring-boot-memory-stress + - ./experiments -name spring-boot-latency command: - /bin/bash env: - # it contains fraction of memory to be stressed(0.70 equals 70%) - # it supports value in range [0.01,0.95] - - name: MEMORY_FILL_FRACTION - value: '0.70' + # provide the latency (ms) + - name: LATENCY + value: '2000' # port of the spring boot application - name: CM_PORT @@ -270,7 +308,7 @@ spec: - name: PODS_AFFECTED_PERC value: '' - ## Period to wait before and after injection of chaos + ## Period to wait before and after injection of chaos - name: RAMP_TIME value: '' @@ -280,7 +318,7 @@ spec: value: 'parallel' labels: - name: spring-boot-memory-stress + name: spring-boot-latency app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 @@ -289,12 +327,12 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - It can target random pods with a Spring Boot application and allows configuring the assaults to inject network latency + It can target random pods with a Spring Boot application and allows configuring the assaults to inject app-kill kind: ChaosExperiment metadata: - name: spring-boot-latency + name: spring-boot-app-kill labels: - name: spring-boot-latency + name: spring-boot-app-kill app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -330,25 +368,20 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name spring-boot-latency + - ./experiments -name spring-boot-app-kill command: - /bin/bash env: - - # provide the latency (ms) - - name: LATENCY - value: '2000' - - # port of the spring boot application + # port of the spring boot application - name: CM_PORT value: '' - # it contains number of requests are to be attacked - # n value means nth request will be affected + #it contains number of requests are to be attacked + # n value means nth request will be affected - name: CM_LEVEL value: '1' - # it limits watched packages/classes/methods + # it limits watched packages/classes/methods - name: CM_WATCHED_CUSTOM_SERVICES value: '' @@ -357,14 +390,11 @@ spec: - name: CM_WATCHERS value: 'restController' - - name: TOTAL_CHAOS_DURATION - value: '30' - ## percentage of total pods to target - name: PODS_AFFECTED_PERC value: '' - ## Period to wait before and after injection of chaos + ## Period to wait before and after injection of chaos - name: RAMP_TIME value: '' @@ -374,7 +404,7 @@ spec: value: 'parallel' labels: - name: spring-boot-latency + name: spring-boot-app-kill app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 @@ -383,12 +413,12 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - It can target random pods with a Spring Boot application and allows configuring the assaults to inject app-kill + It can target random pods with a Spring Boot application and allows configuring the assaults to inject memory-stress kind: ChaosExperiment metadata: - name: spring-boot-app-kill + name: spring-boot-memory-stress labels: - name: spring-boot-app-kill + name: spring-boot-memory-stress app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -424,20 +454,26 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name spring-boot-app-kill + - ./experiments -name spring-boot-memory-stress command: - /bin/bash env: - # port of the spring boot application + + # it contains fraction of memory to be stressed(0.70 equals 70%) + # it supports value in range [0.01,0.95] + - name: MEMORY_FILL_FRACTION + value: '0.70' + + # port of the spring boot application - name: CM_PORT value: '' - #it contains number of requests are to be attacked - # n value means nth request will be affected + # it contains number of requests are to be attacked + # n value means nth request will be affected - name: CM_LEVEL value: '1' - # it limits watched packages/classes/methods + # it limits watched packages/classes/methods - name: CM_WATCHED_CUSTOM_SERVICES value: '' @@ -446,6 +482,9 @@ spec: - name: CM_WATCHERS value: 'restController' + - name: TOTAL_CHAOS_DURATION + value: '30' + ## percentage of total pods to target - name: PODS_AFFECTED_PERC value: '' @@ -460,7 +499,7 @@ spec: value: 'parallel' labels: - name: spring-boot-app-kill + name: spring-boot-memory-stress app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 @@ -469,12 +508,12 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - It can target random pods with a Spring Boot application and allows configuring the assaults to inject cpu-stress + It can target random pods with a Spring Boot application and allows configuring the assaults to inject network latency kind: ChaosExperiment metadata: - name: spring-boot-faults + name: spring-boot-exceptions labels: - name: spring-boot-faults + name: spring-boot-exceptions app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: 3.0.0-beta11 @@ -510,55 +549,16 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name spring-boot-faults + - ./experiments -name spring-boot-exceptions command: - /bin/bash env: - # it enables spring app-kill fault - - name: CM_KILL_APPLICATION_ACTIVE - value: '' - - # it enables spring-boot latency fault - - name: CM_LATENCY_ACTIVE - value: '' - - # provide the latency (ms) - # it is applicable when latency is active - - name: LATENCY - value: '2000' - - # it enables spring-boot memory stress fault - - name: CM_MEMORY_ACTIVE - value: '' - - # it contains fraction of memory to be stressed(0.70 equals 70%) - # it supports value in range [0.01,0.95] - # it is applicable when memory is active - - name: MEMORY_FILL_FRACTION - value: '0.70' - - # it enables spring-boot cpu stress fault - - name: CM_CPU_ACTIVE - value: '' - - # it contains fraction of cpu to be stressed(0.95 equals 95%) - # it supports value in range [0.1,1.0] - # it is applicable when cpu is active - - name: CPU_LOAD_FRACTION - value: '0.9' - - # it enables spring-boot exceptions fault - - name: CM_EXCEPTIONS_ACTIVE - value: '' - # Type of raised exception - # it is applicable when exceptions is active - name: CM_EXCEPTIONS_TYPE value: 'java.lang.IllegalArgumentException' # Argument of raised exception - # it is applicable when exceptions is active - name: CM_EXCEPTIONS_ARGUMENTS value: 'java.lang.String:custom illegal argument exception' @@ -587,7 +587,7 @@ spec: - name: PODS_AFFECTED_PERC value: '' - ## Period to wait before and after injection of chaos + ## Period to wait before and after injection of chaos - name: RAMP_TIME value: '' @@ -597,7 +597,7 @@ spec: value: 'parallel' labels: - name: spring-boot-faults + name: spring-boot-exceptions app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: 3.0.0-beta11 diff --git a/charts/vmware/experiments.yaml b/charts/vmware/experiments.yaml index 47a892e56..6187be604 100644 --- a/charts/vmware/experiments.yaml +++ b/charts/vmware/experiments.yaml @@ -26,10 +26,10 @@ spec: - apiGroups: [""] resources: ["secrets","configmaps"] verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log + # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] - verbs: ["get","list","watch"] + verbs: ["get","list","watch"] # for creating and managing to execute comands inside target container - apiGroups: [""] resources: ["pods/exec"] @@ -71,7 +71,7 @@ spec: # provide the VM MOIDs as comma separated values - name: APP_VM_MOIDS value: '' - + # set chaos duration (in sec) as desired - name: TOTAL_CHAOS_DURATION value: '30'