diff --git a/faults/aws/experiments.yaml b/faults/aws/experiments.yaml index 54be094..4f6ac40 100644 --- a/faults/aws/experiments.yaml +++ b/faults/aws/experiments.yaml @@ -1,5 +1,412 @@ --- apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stopping an EC2 instance identified by tag. +kind: ChaosExperiment +metadata: + name: ec2-stop-by-tag + labels: + name: ec2-stop-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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: ["secrets", "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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name ec2-terminate-by-tag + 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: "" + + # Provide a common tag to target ec2 instances + - name: EC2_INSTANCE_TAG + 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" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + # Provide the path of AWS credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: "/tmp/cloud_config.yml" + + - name: SEQUENCE + value: "parallel" + + labels: + name: ec2-stop-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stopping an EC2 instance identified by ID. +kind: ChaosExperiment +metadata: + name: ec2-stop-by-id + labels: + name: ec2-stop-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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: ["secrets", "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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name ec2-terminate-by-id + 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: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + # 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" + + # Provide the path of AWS credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: "/tmp/cloud_config.yml" + + labels: + name: ec2-stop-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + It injects AZ chaos to detach the target zones from the load balancer. +kind: ChaosExperiment +metadata: + name: aws-az-chaos + labels: + name: aws-az-chaos + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos.docker.scarf.sh/litmuschaos/py-runner:latest" + imagePullPolicy: Always + args: + - -c + - python3 -u experiment -name aws-az-chaos + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + - name: CHAOS_INTERVAL + value: '30' + - name: LIB + value: 'litmus' + - name: LOAD_BALANCER_NAME + value: '' + - name: LOAD_BALANCER_ZONES + value: '' + - name: LOAD_BALANCERNAME_ARN + value: 'na' + - name: AWS_SHARED_CREDENTIALS_FILE + value: "/tmp/cloud_config.yml" + - name: RAMP_TIME + value: '' + labels: + name: aws-az-chaos + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stopping an RDS instance identified by instance identifier. +kind: ChaosExperiment +metadata: + name: rds-instance-stop + labels: + name: rds-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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: ["secrets", "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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name rds-instance-stop + 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: "" + + # Provide the RDS instance identifier + - name: RDS_INSTANCE_IDENTIFIER + value: "" + + - name: REGION + value: "" + + - name: INSTANCE_AFFECTED_PERC + value: "" + + - name: SEQUENCE + value: "parallel" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + # Provide the path of AWS credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: "/tmp/cloud_config.yml" + + labels: + name: rds-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 description: message: | Detaching an EBS volume from EC2 instance for a certain chaos duration. @@ -243,12 +650,12 @@ spec: 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-stop-by-tag + name: ebs-loss-by-tag labels: - name: ec2-stop-by-tag + name: ebs-loss-by-tag app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: ci @@ -293,15 +700,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.docker.scarf.sh/litmuschaos/go-runner:latest" imagePullPolicy: Always args: - -c - - ./experiments -name ec2-terminate-by-tag + - ./experiments -name ebs-loss-by-tag command: - /bin/bash env: @@ -311,28 +714,21 @@ spec: - name: CHAOS_INTERVAL value: "30" - # Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: "" - # Provide a common tag to target ec2 instances - - name: EC2_INSTANCE_TAG + - name: EBS_VOLUME_TAG 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" + - name: VOLUME_AFFECTED_PERC + value: "" + - name: DEFAULT_HEALTH_CHECK value: "false" @@ -340,11 +736,8 @@ spec: - name: AWS_SHARED_CREDENTIALS_FILE value: "/tmp/cloud_config.yml" - - name: SEQUENCE - value: "parallel" - labels: - name: ec2-stop-by-tag + name: ebs-loss-by-tag app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: ci @@ -492,394 +885,3 @@ spec: mountPath: /tmp/ --- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - It injects AZ chaos to detach the target zones from the load balancer. -kind: ChaosExperiment -metadata: - name: aws-az-chaos - labels: - name: aws-az-chaos - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 & secrets details and mount it to the experiment pod (if specified) - - apiGroups: [""] - resources: ["secrets","configmaps"] - verbs: ["get","list",] - # Track and get the runner, experiment, and helper pods log - - apiGroups: [""] - resources: ["pods/log"] - verbs: ["get","list","watch"] - # for creating and managing to execute comands inside target container - - apiGroups: [""] - resources: ["pods/exec"] - verbs: ["get","list","create"] - # for configuring and monitor the experiment job by the chaos-runner pod - - apiGroups: ["batch"] - resources: ["jobs"] - verbs: ["create","list","get","delete","deletecollection"] - # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow - - apiGroups: ["litmuschaos.io"] - resources: ["chaosengines","chaosexperiments","chaosresults"] - verbs: ["create","list","get","patch","update","delete"] - image: "litmuschaos.docker.scarf.sh/litmuschaos/py-runner:latest" - imagePullPolicy: Always - args: - - -c - - python3 -u experiment -name aws-az-chaos - command: - - /bin/bash - env: - - name: TOTAL_CHAOS_DURATION - value: '30' - - name: CHAOS_INTERVAL - value: '30' - - name: LIB - value: 'litmus' - - name: LOAD_BALANCER_NAME - value: '' - - name: LOAD_BALANCER_ZONES - value: '' - - name: LOAD_BALANCERNAME_ARN - value: 'na' - - name: AWS_SHARED_CREDENTIALS_FILE - value: "/tmp/cloud_config.yml" - - name: RAMP_TIME - value: '' - labels: - name: aws-az-chaos - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: latest - secrets: - - name: cloud-secret - mountPath: /tmp/ - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Detaching an EBS volume from EC2 instance. -kind: ChaosExperiment -metadata: - name: ebs-loss-by-tag - labels: - name: ebs-loss-by-tag - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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: ["secrets", "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 commands 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"] - image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name ebs-loss-by-tag - command: - - /bin/bash - env: - - name: TOTAL_CHAOS_DURATION - value: "30" - - - name: CHAOS_INTERVAL - value: "30" - - - name: RAMP_TIME - value: "" - - - name: EBS_VOLUME_TAG - value: "" - - - name: REGION - value: "" - - - name: SEQUENCE - value: "parallel" - - - name: VOLUME_AFFECTED_PERC - value: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - # 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 - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - secrets: - - name: cloud-secret - mountPath: /tmp/ - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Stopping an EC2 instance identified by ID. -kind: ChaosExperiment -metadata: - name: ec2-stop-by-id - labels: - name: ec2-stop-by-id - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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: ["secrets", "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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name ec2-terminate-by-id - 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: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - # 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" - - # Provide the path of AWS credentials mounted from secret - - name: AWS_SHARED_CREDENTIALS_FILE - value: "/tmp/cloud_config.yml" - - labels: - name: ec2-stop-by-id - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - secrets: - - name: cloud-secret - mountPath: /tmp/ - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Stopping an RDS instance identified by instance identifier. -kind: ChaosExperiment -metadata: - name: rds-instance-stop - labels: - name: rds-instance-stop - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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: ["secrets", "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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name rds-instance-stop - 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: "" - - # Provide the RDS instance identifier - - name: RDS_INSTANCE_IDENTIFIER - value: "" - - - name: REGION - value: "" - - - name: INSTANCE_AFFECTED_PERC - value: "" - - - name: SEQUENCE - value: "parallel" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - # Provide the path of AWS credentials mounted from secret - - name: AWS_SHARED_CREDENTIALS_FILE - value: "/tmp/cloud_config.yml" - - labels: - name: rds-instance-stop - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - secrets: - - name: cloud-secret - mountPath: /tmp/ diff --git a/faults/azure/experiments.yaml b/faults/azure/experiments.yaml index 2505a7d..82e0f55 100644 --- a/faults/azure/experiments.yaml +++ b/faults/azure/experiments.yaml @@ -1,5 +1,109 @@ --- apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stops an Azure instance for a certain chaos duration +kind: ChaosExperiment +metadata: + name: azure-instance-stop + labels: + name: azure-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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: ["secrets", "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 commands 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"] + image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name azure-instance-stop + 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: "" + + # provide the target instance name(s) (comma separated if multiple) + - name: AZURE_INSTANCE_NAMES + value: "" + + # provide the resource group of the instance + - name: RESOURCE_GROUP + value: "" + + # accepts enable/disable, default is disable + - name: SCALE_SET + value: "" + + # Provide the path of aks credentials mounted from secret + - name: AZURE_AUTH_LOCATION + value: "/tmp/azure.auth" + + - name: SEQUENCE + value: "parallel" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + labels: + name: azure-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 description: message: | Detaches disk from the VM and then re-attaches disk to the VM @@ -103,107 +207,3 @@ spec: mountPath: /tmp/ --- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Stops an Azure instance for a certain chaos duration -kind: ChaosExperiment -metadata: - name: azure-instance-stop - labels: - name: azure-instance-stop - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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: ["secrets", "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 commands 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"] - image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name azure-instance-stop - 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: "" - - # provide the target instance name(s) (comma separated if multiple) - - name: AZURE_INSTANCE_NAMES - value: "" - - # provide the resource group of the instance - - name: RESOURCE_GROUP - value: "" - - # accepts enable/disable, default is disable - - name: SCALE_SET - value: "" - - # Provide the path of aks credentials mounted from secret - - name: AZURE_AUTH_LOCATION - value: "/tmp/azure.auth" - - - name: SEQUENCE - value: "parallel" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - labels: - name: azure-instance-stop - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - secrets: - - name: cloud-secret - mountPath: /tmp/ - ---- diff --git a/faults/gcp/experiments.yaml b/faults/gcp/experiments.yaml index 445d3bd..71e561a 100644 --- a/faults/gcp/experiments.yaml +++ b/faults/gcp/experiments.yaml @@ -1,317 +1,5 @@ --- 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 -kind: ChaosExperiment -metadata: - name: gcp-vm-instance-stop-by-label - labels: - name: gcp-vm-instance-stop-by-label - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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: ["secrets", "configmaps"] - verbs: ["get", "list"] - # Track and get the runner, experiment, and helper pods log - - apiGroups: [""] - resources: ["pods/log"] - verbs: ["get", "list", "watch"] - # 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./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" - - # set chaos interval (in sec) as desired - - name: CHAOS_INTERVAL - value: "30" - - - name: SEQUENCE - value: "parallel" - - # 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 - - 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: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - labels: - name: gcp-vm-instance-stop-by-label - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - secrets: - - name: cloud-secret - mountPath: /tmp/ - ---- ---- -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 -kind: ChaosExperiment -metadata: - name: gcp-vm-disk-loss-by-label - labels: - name: gcp-vm-disk-loss-by-label - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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: ["secrets", "configmaps"] - verbs: ["get", "list"] - # Track and get the runner, experiment, and helper pods log - - apiGroups: [""] - resources: ["pods/log"] - verbs: ["get", "list", "watch"] - # 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./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" - - # set chaos interval (in sec) as desired - - name: CHAOS_INTERVAL - value: "30" - - # 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 - 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 - value: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - - name: SEQUENCE - value: "parallel" - - labels: - name: gcp-vm-disk-loss-by-label - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - secrets: - - name: cloud-secret - mountPath: /tmp/ - ---- ---- -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 -kind: ChaosExperiment -metadata: - name: gcp-vm-disk-loss - labels: - name: gcp-vm-disk-loss - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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: ["secrets", "configmaps"] - verbs: ["get", "list"] - # Track and get the runner, experiment, and helper pods log - - apiGroups: [""] - resources: ["pods/log"] - verbs: ["get", "list", "watch"] - # 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name gcp-vm-disk-loss - 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: "" - - # parallel or serial; determines how chaos is injected - - name: SEQUENCE - value: "parallel" - - # set the GCP project id - - name: GCP_PROJECT_ID - value: "" - - # set the disk volume name(s) as comma seperated values - # eg. volume1,volume2,... - - name: DISK_VOLUME_NAMES - value: "" - - # set the disk zone(s) as comma seperated values in the corresponding - # order of DISK_VOLUME_NAME - # eg. zone1,zone2,... - - name: ZONES - value: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - # parallel or serial; determines how chaos is injected - - name: SEQUENCE - value: "parallel" - - labels: - name: gcp-vm-disk-loss - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - secrets: - - name: cloud-secret - mountPath: /tmp/ - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 description: message: | Stops GCP VM instances and GKE nodes for a specified duration and later restarts them @@ -422,3 +110,315 @@ spec: mountPath: /tmp/ --- +--- +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 +kind: ChaosExperiment +metadata: + name: gcp-vm-disk-loss-by-label + labels: + name: gcp-vm-disk-loss-by-label + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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: ["secrets", "configmaps"] + verbs: ["get", "list"] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get", "list", "watch"] + # 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./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" + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: "30" + + # 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 + 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 + value: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + - name: SEQUENCE + value: "parallel" + + labels: + name: gcp-vm-disk-loss-by-label + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +--- +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 +kind: ChaosExperiment +metadata: + name: gcp-vm-instance-stop-by-label + labels: + name: gcp-vm-instance-stop-by-label + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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: ["secrets", "configmaps"] + verbs: ["get", "list"] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get", "list", "watch"] + # 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./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" + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: "30" + + - name: SEQUENCE + value: "parallel" + + # 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 + - 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: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + labels: + name: gcp-vm-instance-stop-by-label + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +--- +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 +kind: ChaosExperiment +metadata: + name: gcp-vm-disk-loss + labels: + name: gcp-vm-disk-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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: ["secrets", "configmaps"] + verbs: ["get", "list"] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get", "list", "watch"] + # 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name gcp-vm-disk-loss + 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: "" + + # parallel or serial; determines how chaos is injected + - name: SEQUENCE + value: "parallel" + + # set the GCP project id + - name: GCP_PROJECT_ID + value: "" + + # set the disk volume name(s) as comma seperated values + # eg. volume1,volume2,... + - name: DISK_VOLUME_NAMES + value: "" + + # set the disk zone(s) as comma seperated values in the corresponding + # order of DISK_VOLUME_NAME + # eg. zone1,zone2,... + - name: ZONES + value: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + # parallel or serial; determines how chaos is injected + - name: SEQUENCE + value: "parallel" + + labels: + name: gcp-vm-disk-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- diff --git a/faults/kubernetes/experiments.yaml b/faults/kubernetes/experiments.yaml index 87a5b05..8476299 100644 --- a/faults/kubernetes/experiments.yaml +++ b/faults/kubernetes/experiments.yaml @@ -2,138 +2,12 @@ apiVersion: litmuschaos.io/v1alpha1 description: message: | - Pod DNS Spoof can spoof particular DNS requests in target pod container to desired target hostnames + Give IO disk stress on a node belonging to a deployment kind: ChaosExperiment metadata: - name: pod-dns-spoof + name: node-io-stress labels: - name: pod-dns-spoof - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - args: - - -c - - ./experiments -name pod-dns-spoof - command: - - /bin/bash - env: - - name: TARGET_CONTAINER - value: "" - - # provide lib image - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - - name: TOTAL_CHAOS_DURATION - value: "60" # in seconds - - # Time period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - ## percentage of total pods to target - - name: PODS_AFFECTED_PERC - value: "" - - - name: TARGET_PODS - value: "" - - # provide the name of container runtime, it supports docker, containerd, crio - - name: CONTAINER_RUNTIME - value: "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" - - # map of the target hostnames eg. '{"abc.com":"spoofabc.com"}' . If empty no queries will be spoofed - - name: SPOOF_MAP - value: "" - - labels: - experiment: pod-dns-spoof - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/runtime-api-usage: "true" - app.kubernetes.io/version: ci - ---- ---- -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 + name: node-io-stress app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: ci @@ -186,516 +60,7 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name node-memory-hog - command: - - /bin/bash - env: - - name: TOTAL_CHAOS_DURATION - value: "120" - - ## Specify the size as percent of total node capacity Ex: '30' - ## NOTE: for selecting this option keep MEMORY_CONSUMPTION_MEBIBYTES empty - - name: MEMORY_CONSUMPTION_PERCENTAGE - value: "" - - ## Specify the amount of memory to be consumed in mebibytes - ## NOTE: for selecting this option keep MEMORY_CONSUMPTION_PERCENTAGE empty - - name: MEMORY_CONSUMPTION_MEBIBYTES - value: "" - - - name: NUMBER_OF_WORKERS - value: "1" - - # ENTER THE COMMA SEPARATED TARGET NODES NAME - - name: TARGET_NODES - value: "" - - - name: NODE_LABEL - value: "" - - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - # provide lib image - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - ## percentage of total nodes to target - - name: NODES_AFFECTED_PERC - value: "" - - ## it defines the sequence of chaos execution for multiple target nodes - ## supported values: serial, parallel - - name: SEQUENCE - value: "parallel" - - labels: - name: node-memory-hog - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Give a CPU spike on a node belonging to a deployment -kind: ChaosExperiment -metadata: - name: node-cpu-hog - labels: - name: node-cpu-hog - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name node-cpu-hog - command: - - /bin/bash - env: - - name: TOTAL_CHAOS_DURATION - value: "60" - - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - ## ENTER THE NUMBER OF CORES OF CPU FOR CPU HOGGING - ## OPTIONAL VALUE IN CASE OF EMPTY VALUE IT WILL TAKE NODE CPU CAPACITY - - name: NODE_CPU_CORE - value: "" - - ## LOAD CPU WITH GIVEN PERCENT LOADING FOR THE CPU STRESS WORKERS. - ## 0 IS EFFECTIVELY A SLEEP (NO LOAD) AND 100 IS FULL LOADING - - name: CPU_LOAD - value: "100" - - # ENTER THE COMMA SEPARATED TARGET NODES NAME - - name: TARGET_NODES - value: "" - - - name: NODE_LABEL - value: "" - - # provide lib image - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - ## percentage of total nodes to target - - name: NODES_AFFECTED_PERC - value: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - ## it defines the sequence of chaos execution for multiple target nodes - ## supported values: serial, parallel - - name: SEQUENCE - value: "parallel" - - labels: - name: node-cpu-hog - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Injects memory consumption on pods belonging to an app deployment -kind: ChaosExperiment -metadata: - name: pod-memory-hog-exec - labels: - name: pod-memory-hog-exec - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name pod-memory-hog-exec - command: - - /bin/bash - env: - - name: TOTAL_CHAOS_DURATION - value: "60" - - ## enter the amount of memory in megabytes to be consumed by the application pod - - name: MEMORY_CONSUMPTION - value: "500" - - ## percentage of total pods to target - - name: PODS_AFFECTED_PERC - value: "" - - ## Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - # The command to kill the chaos process - - name: CHAOS_KILL_COMMAND - value: "kill $(find /proc -name exe -lname '*/dd' 2>&1 | grep -v 'Permission denied' | awk -F/ '{print $(NF-1)}' | head -n 1)" - - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: "parallel" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - - name: TARGET_CONTAINER - value: "" - - - name: TARGET_PODS - value: "" - - labels: - name: pod-memory-hog-exec - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Injects HTTP request latency on pods belonging to an app deployment -kind: ChaosExperiment -metadata: - name: pod-http-latency - labels: - name: pod-http-latency - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name pod-http-latency - command: - - /bin/bash - env: - - name: TARGET_CONTAINER - value: "" - - # provide lib image - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - - name: LATENCY - value: "2000" #in ms - - # port of the target service - - name: TARGET_SERVICE_PORT - value: "80" - - # toxicity is the probability of the request to be affected - # provide the percentage value in the range of 0-100 - # 0 means no request will be affected and 100 means all request will be affected - - name: TOXICITY - value: "100" - - # 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: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - # 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-latency - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/runtime-api-usage: "true" - app.kubernetes.io/version: ci - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - IO stress on a app pods belonging to an app deployment -kind: ChaosExperiment -metadata: - name: pod-io-stress - labels: - name: pod-io-stress - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name pod-io-stress + - ./experiments -name node-io-stress command: - /bin/bash env: @@ -712,26 +77,22 @@ spec: - 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" - ## Percentage of total pods to target - - name: PODS_AFFECTED_PERC + ## Total number of VM workers + - name: VM_WORKERS + value: "1" + + ## enter the comma separated target nodes name + - name: TARGET_NODES value: "" - # provide volume mount path - - name: VOLUME_MOUNT_PATH - value: "" - - - name: TARGET_CONTAINER - value: "" - - ## specify the comma separated target pods - - name: TARGET_PODS - value: "" - - # To select pods on specific node(s) - name: NODE_LABEL value: "" @@ -743,161 +104,22 @@ spec: - name: LIB_IMAGE value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - name: DEFAULT_HEALTH_CHECK - value: "false" - - ## 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: ci - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: "Kills a container belonging to an application pod \n" -kind: ChaosExperiment -metadata: - name: container-kill - labels: - name: container-kill - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name container-kill - command: - - /bin/bash - env: - - name: TARGET_CONTAINER - value: "" - - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - - name: TARGET_PODS - value: "" - - # provide the chaos interval - - name: CHAOS_INTERVAL - value: "10" - - - name: SIGNAL - value: "SIGKILL" - - # provide the socket file path - - name: SOCKET_PATH - value: "/run/containerd/containerd.sock" - - # provide the name of container runtime - # it supports docker, containerd, crio - - name: CONTAINER_RUNTIME - value: "containerd" - - # provide the total chaos duration - - name: TOTAL_CHAOS_DURATION - value: "20" - - ## percentage of total pods to target - - name: PODS_AFFECTED_PERC - value: "" - - # To select pods on specific node(s) - - name: NODE_LABEL + ## percentage of total nodes to target + - name: NODES_AFFECTED_PERC value: "" - name: DEFAULT_HEALTH_CHECK value: "false" - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - ## 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: container-kill + 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: ci --- @@ -1056,101 +278,6 @@ spec: app.kubernetes.io/runtime-api-usage: "true" app.kubernetes.io/version: ci ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Kills the Kubelet service on the application node to check the resiliency. -kind: ChaosExperiment -metadata: - name: kubelet-service-kill - labels: - name: kubelet-service-kill - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name kubelet-service-kill - command: - - /bin/bash - env: - - name: TOTAL_CHAOS_DURATION - value: "60" # in seconds - - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - - name: NODE_LABEL - value: "" - - # provide lib image - - name: LIB_IMAGE - value: "ubuntu:16.04" - - # provide the target node name - - name: TARGET_NODE - value: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - labels: - name: kubelet-service-kill - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/service-kill: "true" - app.kubernetes.io/version: ci - --- --- apiVersion: litmuschaos.io/v1alpha1 @@ -1307,12 +434,118 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Inject network packet corruption into application pod + Restart node kind: ChaosExperiment metadata: - name: pod-network-corruption + name: node-restart labels: - name: pod-network-corruption + name: node-restart + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-restart + command: + - /bin/bash + env: + - name: SSH_USER + value: "root" + - name: REBOOT_COMMAND + value: "sudo systemctl reboot; true" + + - name: TOTAL_CHAOS_DURATION + value: "60" + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + + # ENTER THE TARGET NODE NAME + - name: TARGET_NODE + value: "" + + - name: NODE_LABEL + value: "" + + # ENTER THE TARGET NODE IP + - name: TARGET_NODE_IP + value: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + labels: + name: node-restart + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + secrets: + - name: id-rsa + mountPath: /mnt/ + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects memory consumption on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-memory-hog + labels: + name: pod-memory-hog app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: ci @@ -1377,37 +610,56 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-network-corruption + - ./experiments -name pod-memory-hog command: - /bin/bash env: - - name: TARGET_CONTAINER - value: "" - - # provide lib image - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - - name: NETWORK_INTERFACE - value: "eth0" - - - name: TC_IMAGE - value: "gaiadocker/iproute2" - - - name: NETWORK_PACKET_CORRUPTION_PERCENTAGE - value: "100" #in PERCENTAGE - - name: TOTAL_CHAOS_DURATION - value: "60" # in seconds + value: "60" - # Time period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" + ## enter the amount of memory in megabytes to be consumed by the application pod + - name: MEMORY_CONSUMPTION + value: "500" + + ## Number of workers to perform stress + - name: NUMBER_OF_WORKERS + value: "1" ## percentage of total pods to target - name: PODS_AFFECTED_PERC value: "" + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + ## It is used in pumba lib only + - name: LIB_IMAGE + value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + + ## It is used in pumba lib only + - name: STRESS_IMAGE + value: "alexeiled/stress-ng:latest-ubuntu" + + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: "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: DEFAULT_HEALTH_CHECK + value: "false" + + - name: TARGET_CONTAINER + value: "" + - name: TARGET_PODS value: "" @@ -1415,36 +667,8 @@ 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" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: "parallel" - labels: - name: pod-network-corruption + name: pod-memory-hog app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/runtime-api-usage: "true" @@ -1455,12 +679,12 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Injects network packet duplication on pods belonging to an app deployment + Injects CPU consumption on pods belonging to an app deployment kind: ChaosExperiment metadata: - name: pod-network-duplication + name: pod-cpu-hog-exec labels: - name: pod-network-duplication + name: pod-cpu-hog-exec app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: ci @@ -1525,72 +749,194 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-network-duplication + - ./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_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.docker.scarf.sh/litmuschaos/go-runner:latest" - - # provide the name of container runtime - # for litmus LIB, it supports docker, containerd, crio - # for pumba LIB, it supports docker only - - name: CONTAINER_RUNTIME - value: "containerd" - - name: DEFAULT_HEALTH_CHECK value: "false" - # 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-duplication + name: pod-cpu-hog-exec + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects HTTP request latency on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-http-latency + labels: + name: pod-http-latency + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-http-latency + command: + - /bin/bash + env: + - name: TARGET_CONTAINER + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + + - name: LATENCY + value: "2000" #in ms + + # port of the target service + - name: TARGET_SERVICE_PORT + value: "80" + + # toxicity is the probability of the request to be affected + # provide the percentage value in the range of 0-100 + # 0 means no request will be affected and 100 means all request will be affected + - name: TOXICITY + value: "100" + + # 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: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + # 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-latency app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/runtime-api-usage: "true" @@ -1834,13 +1180,1024 @@ spec: --- apiVersion: litmuschaos.io/v1alpha1 description: - message: | - Scale the application replicas and test the node autoscaling on cluster + message: "Kills a container belonging to an application pod \n" kind: ChaosExperiment metadata: - name: pod-autoscaler + name: container-kill labels: - name: pod-autoscaler + name: container-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name container-kill + command: + - /bin/bash + env: + - name: TARGET_CONTAINER + value: "" + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + - name: TARGET_PODS + value: "" + + # provide the chaos interval + - name: CHAOS_INTERVAL + value: "10" + + - name: SIGNAL + value: "SIGKILL" + + # provide the socket file path + - name: SOCKET_PATH + value: "/run/containerd/containerd.sock" + + # provide the name of container runtime + # it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: "containerd" + + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: "20" + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" + + # To select pods on specific node(s) + - name: NODE_LABEL + value: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + - name: LIB_IMAGE + value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + labels: + name: container-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: ci + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Inject network packet corruption into application pod +kind: ChaosExperiment +metadata: + name: pod-network-corruption + labels: + name: pod-network-corruption + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-corruption + command: + - /bin/bash + env: + - name: TARGET_CONTAINER + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + + - name: NETWORK_INTERFACE + value: "eth0" + + - name: TC_IMAGE + value: "gaiadocker/iproute2" + + - name: NETWORK_PACKET_CORRUPTION_PERCENTAGE + value: "100" #in PERCENTAGE + + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds + + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" + + - name: TARGET_PODS + value: "" + + # To select pods on specific node(s) + - name: NODE_LABEL + value: "" + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: "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" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + labels: + name: pod-network-corruption + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: ci + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects network packet loss on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-network-loss + labels: + name: pod-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-loss + command: + - /bin/bash + env: + - name: TARGET_CONTAINER + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + + - name: NETWORK_INTERFACE + value: "eth0" + + - name: TC_IMAGE + value: "gaiadocker/iproute2" + + - name: NETWORK_PACKET_LOSS_PERCENTAGE + value: "100" #in PERCENTAGE + + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds + + # 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: DEFAULT_HEALTH_CHECK + value: "false" + + - name: TARGET_PODS + value: "" + + # To select pods on specific node(s) + - name: NODE_LABEL + value: "" + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: "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 + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: ci + +--- +--- +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: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-duplication + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: "60" + + - name: RAMP_TIME + value: "" + + - name: TARGET_CONTAINER + value: "" + + - name: TC_IMAGE + value: "gaiadocker/iproute2" + + - name: NETWORK_INTERFACE + value: "eth0" + + - name: NETWORK_PACKET_DUPLICATION_PERCENTAGE + value: "100" # in percentage + + - 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.docker.scarf.sh/litmuschaos/go-runner:latest" + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: "containerd" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + # 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-duplication + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: ci + +--- +--- +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: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-drain + command: + - /bin/bash + env: + - name: TARGET_NODE + value: "" + + - name: NODE_LABEL + value: "" + + - name: TOTAL_CHAOS_DURATION + value: "60" + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + labels: + name: node-drain + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects memory consumption on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-memory-hog-exec + labels: + name: pod-memory-hog-exec + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-memory-hog-exec + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: "60" + + ## enter the amount of memory in megabytes to be consumed by the application pod + - name: MEMORY_CONSUMPTION + value: "500" + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" + + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + # The command to kill the chaos process + - name: CHAOS_KILL_COMMAND + value: "kill $(find /proc -name exe -lname '*/dd' 2>&1 | grep -v 'Permission denied' | awk -F/ '{print $(NF-1)}' | head -n 1)" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + - name: TARGET_CONTAINER + value: "" + + - name: TARGET_PODS + value: "" + + labels: + name: pod-memory-hog-exec + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Pod DNS Spoof can spoof particular DNS requests in target pod container to desired target hostnames +kind: ChaosExperiment +metadata: + name: pod-dns-spoof + labels: + name: pod-dns-spoof + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + args: + - -c + - ./experiments -name pod-dns-spoof + command: + - /bin/bash + env: + - name: TARGET_CONTAINER + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds + + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" + + - name: TARGET_PODS + value: "" + + # provide the name of container runtime, it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: "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" + + # map of the target hostnames eg. '{"abc.com":"spoofabc.com"}' . If empty no queries will be spoofed + - name: SPOOF_MAP + value: "" + + labels: + experiment: pod-dns-spoof + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: ci + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Taint the node where application pod is scheduled +kind: ChaosExperiment +metadata: + name: node-taint + labels: + name: node-taint + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands inside target container + - apiGroups: [""] + resources: ["pods/exec", "pods/eviction"] + verbs: ["get", "list", "create"] + # ignore daemonsets while draining the node + - apiGroups: ["apps"] + resources: ["daemonsets"] + verbs: ["list", "get", "delete"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create", "list", "get", "delete", "deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines", "chaosexperiments", "chaosresults"] + verbs: ["create", "list", "get", "patch", "update", "delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get", "list", "patch", "update"] + image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-taint + command: + - /bin/bash + env: + - name: TARGET_NODE + value: "" + + - name: NODE_LABEL + value: "" + + - name: TOTAL_CHAOS_DURATION + value: "60" + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + # set taint label & effect + # key=value:effect or key:effect + - name: TAINTS + value: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + labels: + name: node-taint + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kills the Kubelet service on the application node to check the resiliency. +kind: ChaosExperiment +metadata: + name: kubelet-service-kill + labels: + name: kubelet-service-kill app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: ci @@ -1877,10 +2234,117 @@ spec: - apiGroups: [""] resources: ["pods/exec"] verbs: ["get", "list", "create"] - # performs CRUD operations on the deployments and statefulsets + # 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name kubelet-service-kill + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + - name: NODE_LABEL + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "ubuntu:16.04" + + # provide the target node name + - name: TARGET_NODE + value: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + labels: + name: kubelet-service-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/service-kill: "true" + app.kubernetes.io/version: ci + +--- +--- +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 +kind: ChaosExperiment +metadata: + name: pod-http-modify-body + labels: + name: pod-http-modify-body + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands 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"] - 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"] @@ -1893,26 +2357,318 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-autoscaler + - ./experiments -name pod-http-modify-body + command: + - /bin/bash + env: + - name: TARGET_CONTAINER + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + + # provide the body string to overwrite the response body + # if no value is provided, response will be an empty body. + - name: RESPONSE_BODY + value: "" + + # provide the encoding type for the response body + # currently supported value are gzip, deflate + # if empty no encoding will be applied + - name: CONTENT_ENCODING + value: "" + + # provide the content type for the response body + - name: CONTENT_TYPE + value: "text/plain" + + # port of the target service + - name: TARGET_SERVICE_PORT + value: "80" + + # toxicity is the probability of the request to be affected + # provide the percentage value in the range of 0-100 + # 0 means no request will be affected and 100 means all request will be affected + - name: TOXICITY + value: "100" + + # 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: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + # 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-modify-body + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + +--- +--- +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: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-delete command: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: "60" + value: "15" # Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: "" - # Number of replicas to scale - - name: REPLICA_COUNT + - name: FORCE + value: "true" + + - name: CHAOS_INTERVAL value: "5" + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" + + - name: TARGET_CONTAINER + value: "" + + - name: TARGET_PODS + value: "" + - name: DEFAULT_HEALTH_CHECK value: "false" + # 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-autoscaler + name: pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects 100% network packet loss on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-network-partition + labels: + name: pod-network-partition + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get", "list", "create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create", "list", "get", "delete", "deletecollection"] + # performs CRUD operations on the network policies + - apiGroups: ["networking.k8s.io"] + resources: ["networkpolicies"] + verbs: ["create", "delete", "list", "get"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines", "chaosexperiments", "chaosresults"] + verbs: ["create", "list", "get", "patch", "update", "delete"] + image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-partition + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds + + # time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + # provide the destination ips + # chaos injection will be triggered for these destination ips + - name: DESTINATION_IPS + value: "" + + # provide the destination hosts + # chaos injection will be triggered for these destination hosts + - name: DESTINATION_HOSTS + value: "" + + # provide network policy type + # support ingress, egress, all values + - name: POLICY_TYPES + value: "all" + + # provide labels of the destination pods + - name: POD_SELECTOR + value: "" + + # provide labels the destination namespaces + - name: NAMESPACE_SELECTOR + value: "" + + # provide comma separated ports + - name: PORTS + value: "" + + labels: + name: pod-network-partition app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: ci @@ -2012,6 +2768,659 @@ spec: app.kubernetes.io/service-kill: "true" app.kubernetes.io/version: ci +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + IO stress on a app pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-io-stress + labels: + name: pod-io-stress + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-io-stress + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: "120" + + ## specify the size as percentage of free space on the file system + ## default value 90 (in percentage) + - name: FILESYSTEM_UTILIZATION_PERCENTAGE + value: "10" + + ## we can specify the size in Gigabyte (Gb) also in place of percentage of free space + ## NOTE: for selecting this option FILESYSTEM_UTILIZATION_PERCENTAGE should be empty + - name: FILESYSTEM_UTILIZATION_BYTES + value: "" + + ## Total number of workers default value is 4 + - name: NUMBER_OF_WORKERS + value: "4" + + ## Percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" + + # provide volume mount path + - name: VOLUME_MOUNT_PATH + value: "" + + - name: TARGET_CONTAINER + 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.docker.scarf.sh/litmuschaos/go-runner:latest" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + ## 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: ci + +--- +--- +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: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-memory-hog + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: "120" + + ## Specify the size as percent of total node capacity Ex: '30' + ## NOTE: for selecting this option keep MEMORY_CONSUMPTION_MEBIBYTES empty + - name: MEMORY_CONSUMPTION_PERCENTAGE + value: "" + + ## Specify the amount of memory to be consumed in mebibytes + ## NOTE: for selecting this option keep MEMORY_CONSUMPTION_PERCENTAGE empty + - name: MEMORY_CONSUMPTION_MEBIBYTES + value: "" + + - name: NUMBER_OF_WORKERS + value: "1" + + # ENTER THE COMMA SEPARATED TARGET NODES NAME + - name: TARGET_NODES + value: "" + + - name: NODE_LABEL + value: "" + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + ## percentage of total nodes to target + - name: NODES_AFFECTED_PERC + value: "" + + ## it defines the sequence of chaos execution for multiple target nodes + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + labels: + name: node-memory-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects CPU consumption on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-cpu-hog + labels: + name: pod-cpu-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-cpu-hog + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: "60" + + ## Number of CPU cores to stress + - name: CPU_CORES + value: "1" + + ## LOAD CPU WITH GIVEN PERCENT LOADING FOR THE CPU STRESS WORKERS. + ## 0 IS EFFECTIVELY A SLEEP (NO LOAD) AND 100 IS FULL LOADING + - name: CPU_LOAD + value: "100" + + ## Percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" + + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + ## It is used in pumba lib only + - name: LIB_IMAGE + value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + + ## It is used in pumba lib only + - name: STRESS_IMAGE + value: "alexeiled/stress-ng:latest-ubuntu" + + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: "containerd" + + # provide the socket file path + - name: SOCKET_PATH + value: "/run/containerd/containerd.sock" + + - name: TARGET_CONTAINER + value: "" + + - name: TARGET_PODS + value: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + # To select pods on specific node(s) + - name: NODE_LABEL + value: "" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + labels: + name: pod-cpu-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: ci + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Fillup Ephemeral Storage of a Resource +kind: ChaosExperiment +metadata: + name: disk-fill + labels: + name: disk-fill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name disk-fill + command: + - /bin/bash + env: + - name: TARGET_CONTAINER + value: "" + + - name: FILL_PERCENTAGE + value: "80" + + - name: TOTAL_CHAOS_DURATION + value: "60" + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + # provide the 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: DEFAULT_HEALTH_CHECK + value: "false" + + - name: LIB_IMAGE + value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + + # provide the socket file path + - name: SOCKET_PATH + value: "/run/containerd/containerd.sock" + + # provide the name of container runtime + # it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: "containerd" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + labels: + name: disk-fill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/host-path-usage: "true" + app.kubernetes.io/version: ci + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Give a CPU spike on a node belonging to a deployment +kind: ChaosExperiment +metadata: + name: node-cpu-hog + labels: + name: node-cpu-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-cpu-hog + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: "60" + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + ## ENTER THE NUMBER OF CORES OF CPU FOR CPU HOGGING + ## OPTIONAL VALUE IN CASE OF EMPTY VALUE IT WILL TAKE NODE CPU CAPACITY + - name: NODE_CPU_CORE + value: "" + + ## LOAD CPU WITH GIVEN PERCENT LOADING FOR THE CPU STRESS WORKERS. + ## 0 IS EFFECTIVELY A SLEEP (NO LOAD) AND 100 IS FULL LOADING + - name: CPU_LOAD + value: "100" + + # ENTER THE COMMA SEPARATED TARGET NODES NAME + - name: TARGET_NODES + value: "" + + - name: NODE_LABEL + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + + ## percentage of total nodes to target + - name: NODES_AFFECTED_PERC + value: "" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + ## it defines the sequence of chaos execution for multiple target nodes + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + labels: + name: node-cpu-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + --- --- apiVersion: litmuschaos.io/v1alpha1 @@ -2188,18 +3597,18 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Deletes a pod belonging to a deployment/statefulset/daemonset + Scale the application replicas and test the node autoscaling on cluster kind: ChaosExperiment metadata: - name: pod-delete + name: pod-autoscaler labels: - name: pod-delete + name: pod-autoscaler app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: ci spec: definition: - scope: Namespaced + scope: Cluster permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] @@ -2230,22 +3639,10 @@ spec: - apiGroups: [""] resources: ["pods/exec"] verbs: ["get", "list", "create"] - # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + # performs CRUD operations on the deployments and statefulsets - 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: ["deployments", "statefulsets"] + verbs: ["list", "get", "patch", "update"] # for configuring and monitor the experiment job by the chaos-runner pod - apiGroups: ["batch"] resources: ["jobs"] @@ -2258,1148 +3655,30 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name pod-delete + - ./experiments -name pod-autoscaler command: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: "15" + value: "60" # Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: "" - - name: FORCE - value: "true" - - - name: CHAOS_INTERVAL + # Number of replicas to scale + - name: REPLICA_COUNT value: "5" - ## percentage of total pods to target - - name: PODS_AFFECTED_PERC - value: "" - - - name: TARGET_CONTAINER - value: "" - - - name: TARGET_PODS - value: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - # To select pods on specific node(s) - - name: NODE_LABEL - value: "" - - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: "parallel" - - labels: - name: pod-delete - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - ---- ---- -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: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name node-drain - command: - - /bin/bash - env: - - name: TARGET_NODE - value: "" - - - name: NODE_LABEL - value: "" - - - name: TOTAL_CHAOS_DURATION - value: "60" - - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - name: DEFAULT_HEALTH_CHECK value: "false" labels: - name: node-drain + name: pod-autoscaler app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: ci ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Injects memory consumption on pods belonging to an app deployment -kind: ChaosExperiment -metadata: - name: pod-memory-hog - labels: - name: pod-memory-hog - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name pod-memory-hog - command: - - /bin/bash - env: - - name: TOTAL_CHAOS_DURATION - value: "60" - - ## enter the amount of memory in megabytes to be consumed by the application pod - - name: MEMORY_CONSUMPTION - value: "500" - - ## Number of workers to perform stress - - name: NUMBER_OF_WORKERS - value: "1" - - ## percentage of total pods to target - - name: PODS_AFFECTED_PERC - value: "" - - ## Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - ## It is used in pumba lib only - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - ## It is used in pumba lib only - - name: STRESS_IMAGE - value: "alexeiled/stress-ng:latest-ubuntu" - - ## provide the cluster runtime - - name: CONTAINER_RUNTIME - value: "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: DEFAULT_HEALTH_CHECK - value: "false" - - - name: TARGET_CONTAINER - value: "" - - - name: TARGET_PODS - value: "" - - # To select pods on specific node(s) - - name: NODE_LABEL - value: "" - - labels: - name: pod-memory-hog - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/runtime-api-usage: "true" - app.kubernetes.io/version: ci - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Taint the node where application pod is scheduled -kind: ChaosExperiment -metadata: - name: node-taint - labels: - name: node-taint - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands inside target container - - apiGroups: [""] - resources: ["pods/exec", "pods/eviction"] - verbs: ["get", "list", "create"] - # ignore daemonsets while draining the node - - apiGroups: ["apps"] - resources: ["daemonsets"] - verbs: ["list", "get", "delete"] - # for configuring and monitor the experiment job by the chaos-runner pod - - apiGroups: ["batch"] - resources: ["jobs"] - verbs: ["create", "list", "get", "delete", "deletecollection"] - # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow - - apiGroups: ["litmuschaos.io"] - resources: ["chaosengines", "chaosexperiments", "chaosresults"] - verbs: ["create", "list", "get", "patch", "update", "delete"] - # for experiment to perform node status checks - - apiGroups: [""] - resources: ["nodes"] - verbs: ["get", "list", "patch", "update"] - image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name node-taint - command: - - /bin/bash - env: - - name: TARGET_NODE - value: "" - - - name: NODE_LABEL - value: "" - - - name: TOTAL_CHAOS_DURATION - value: "60" - - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - # set taint label & effect - # key=value:effect or key:effect - - name: TAINTS - value: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - labels: - name: node-taint - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Injects CPU consumption on pods belonging to an app deployment -kind: ChaosExperiment -metadata: - name: pod-cpu-hog - labels: - name: pod-cpu-hog - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name pod-cpu-hog - command: - - /bin/bash - env: - - name: TOTAL_CHAOS_DURATION - value: "60" - - ## Number of CPU cores to stress - - name: CPU_CORES - value: "1" - - ## LOAD CPU WITH GIVEN PERCENT LOADING FOR THE CPU STRESS WORKERS. - ## 0 IS EFFECTIVELY A SLEEP (NO LOAD) AND 100 IS FULL LOADING - - name: CPU_LOAD - value: "100" - - ## Percentage of total pods to target - - name: PODS_AFFECTED_PERC - value: "" - - ## Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - ## It is used in pumba lib only - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - ## It is used in pumba lib only - - name: STRESS_IMAGE - value: "alexeiled/stress-ng:latest-ubuntu" - - ## provide the cluster runtime - - name: CONTAINER_RUNTIME - value: "containerd" - - # provide the socket file path - - name: SOCKET_PATH - value: "/run/containerd/containerd.sock" - - - name: TARGET_CONTAINER - value: "" - - - name: TARGET_PODS - value: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - # To select pods on specific node(s) - - name: NODE_LABEL - value: "" - - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: "parallel" - - labels: - name: pod-cpu-hog - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/runtime-api-usage: "true" - app.kubernetes.io/version: ci - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Injects 100% network packet loss on pods belonging to an app deployment -kind: ChaosExperiment -metadata: - name: pod-network-partition - labels: - name: pod-network-partition - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands inside target container - - apiGroups: [""] - resources: ["pods/exec"] - verbs: ["get", "list", "create"] - # for configuring and monitor the experiment job by the chaos-runner pod - - apiGroups: ["batch"] - resources: ["jobs"] - verbs: ["create", "list", "get", "delete", "deletecollection"] - # performs CRUD operations on the network policies - - apiGroups: ["networking.k8s.io"] - resources: ["networkpolicies"] - verbs: ["create", "delete", "list", "get"] - # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow - - apiGroups: ["litmuschaos.io"] - resources: ["chaosengines", "chaosexperiments", "chaosresults"] - verbs: ["create", "list", "get", "patch", "update", "delete"] - image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name pod-network-partition - command: - - /bin/bash - env: - - name: TOTAL_CHAOS_DURATION - value: "60" # in seconds - - # time period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - # provide the destination ips - # chaos injection will be triggered for these destination ips - - name: DESTINATION_IPS - value: "" - - # provide the destination hosts - # chaos injection will be triggered for these destination hosts - - name: DESTINATION_HOSTS - value: "" - - # provide network policy type - # support ingress, egress, all values - - name: POLICY_TYPES - value: "all" - - # provide labels of the destination pods - - name: POD_SELECTOR - value: "" - - # provide labels the destination namespaces - - name: NAMESPACE_SELECTOR - value: "" - - # provide comma separated ports - - name: PORTS - value: "" - - labels: - name: pod-network-partition - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Restart node -kind: ChaosExperiment -metadata: - name: node-restart - labels: - name: node-restart - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name node-restart - command: - - /bin/bash - env: - - name: SSH_USER - value: "root" - - name: REBOOT_COMMAND - value: "sudo systemctl reboot; true" - - - name: TOTAL_CHAOS_DURATION - value: "60" - - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - # provide lib image - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - # ENTER THE TARGET NODE NAME - - name: TARGET_NODE - value: "" - - - name: NODE_LABEL - value: "" - - # ENTER THE TARGET NODE IP - - name: TARGET_NODE_IP - value: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - labels: - name: node-restart - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - secrets: - - name: id-rsa - mountPath: /mnt/ - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Injects network packet loss on pods belonging to an app deployment -kind: ChaosExperiment -metadata: - name: pod-network-loss - labels: - name: pod-network-loss - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name pod-network-loss - command: - - /bin/bash - env: - - name: TARGET_CONTAINER - value: "" - - # provide lib image - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - - name: NETWORK_INTERFACE - value: "eth0" - - - name: TC_IMAGE - value: "gaiadocker/iproute2" - - - name: NETWORK_PACKET_LOSS_PERCENTAGE - value: "100" #in PERCENTAGE - - - name: TOTAL_CHAOS_DURATION - value: "60" # in seconds - - # 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: DEFAULT_HEALTH_CHECK - value: "false" - - - name: TARGET_PODS - value: "" - - # To select pods on specific node(s) - - name: NODE_LABEL - value: "" - - # provide the name of container runtime - # for litmus LIB, it supports docker, containerd, crio - # for pumba LIB, it supports docker only - - name: CONTAINER_RUNTIME - value: "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 - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/runtime-api-usage: "true" - app.kubernetes.io/version: ci - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Give IO disk stress on a node belonging to a deployment -kind: ChaosExperiment -metadata: - name: node-io-stress - labels: - name: node-io-stress - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name node-io-stress - command: - - /bin/bash - env: - - name: TOTAL_CHAOS_DURATION - value: "120" - - ## specify the size as percentage of free space on the file system - ## default value 90 (in percentage) - - name: FILESYSTEM_UTILIZATION_PERCENTAGE - value: "10" - - ## we can specify the size in Gigabyte (Gb) also in place of percentage of free space - ## NOTE: for selecting this option FILESYSTEM_UTILIZATION_PERCENTAGE should be empty - - name: FILESYSTEM_UTILIZATION_BYTES - value: "" - - ## Number of core of CPU - - name: CPU - value: "1" - - ## Total number of workers default value is 4 - - name: NUMBER_OF_WORKERS - value: "4" - - ## Total number of VM workers - - name: VM_WORKERS - value: "1" - - ## enter the comma separated target nodes name - - name: TARGET_NODES - value: "" - - - name: NODE_LABEL - value: "" - - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - # provide lib image - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - ## percentage of total nodes to target - - name: NODES_AFFECTED_PERC - value: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - ## it defines the sequence of chaos execution for multiple target nodes - ## supported values: serial, parallel - - name: SEQUENCE - value: "parallel" - - labels: - name: node-io-stress - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Fillup Ephemeral Storage of a Resource -kind: ChaosExperiment -metadata: - name: disk-fill - labels: - name: disk-fill - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name disk-fill - command: - - /bin/bash - env: - - name: TARGET_CONTAINER - value: "" - - - name: FILL_PERCENTAGE - value: "80" - - - name: TOTAL_CHAOS_DURATION - value: "60" - - # Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - # provide the 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: DEFAULT_HEALTH_CHECK - value: "false" - - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - # provide the socket file path - - name: SOCKET_PATH - value: "/run/containerd/containerd.sock" - - # provide the name of container runtime - # it supports docker, containerd, crio - - name: CONTAINER_RUNTIME - value: "containerd" - - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: "parallel" - - labels: - name: disk-fill - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/host-path-usage: "true" - app.kubernetes.io/version: ci - --- --- apiVersion: litmuschaos.io/v1alpha1 @@ -3551,282 +3830,3 @@ spec: app.kubernetes.io/version: ci --- ---- -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 -kind: ChaosExperiment -metadata: - name: pod-http-modify-body - labels: - name: pod-http-modify-body - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name pod-http-modify-body - command: - - /bin/bash - env: - - name: TARGET_CONTAINER - value: "" - - # provide lib image - - name: LIB_IMAGE - value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - - # provide the body string to overwrite the response body - # if no value is provided, response will be an empty body. - - name: RESPONSE_BODY - value: "" - - # provide the encoding type for the response body - # currently supported value are gzip, deflate - # if empty no encoding will be applied - - name: CONTENT_ENCODING - value: "" - - # provide the content type for the response body - - name: CONTENT_TYPE - value: "text/plain" - - # port of the target service - - name: TARGET_SERVICE_PORT - value: "80" - - # toxicity is the probability of the request to be affected - # provide the percentage value in the range of 0-100 - # 0 means no request will be affected and 100 means all request will be affected - - name: TOXICITY - value: "100" - - # 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: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - # 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-modify-body - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - ---- ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - Injects CPU consumption on pods belonging to an app deployment -kind: ChaosExperiment -metadata: - name: pod-cpu-hog-exec - labels: - name: pod-cpu-hog-exec - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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 commands 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.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name pod-cpu-hog-exec - command: - - /bin/bash - env: - - name: TOTAL_CHAOS_DURATION - value: "60" - - ## Number of CPU cores to stress - - name: CPU_CORES - value: "1" - - ## Percentage of total pods to target - - name: PODS_AFFECTED_PERC - value: "" - - ## Period to wait before and after injection of chaos in sec - - name: RAMP_TIME - value: "" - - # 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_CONTAINER - value: "" - - - name: TARGET_PODS - value: "" - - - name: DEFAULT_HEALTH_CHECK - value: "false" - - ## 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: ci - ---- diff --git a/faults/spring-boot/experiments.yaml b/faults/spring-boot/experiments.yaml index 56455d0..6c30a4e 100644 --- a/faults/spring-boot/experiments.yaml +++ b/faults/spring-boot/experiments.yaml @@ -2,12 +2,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 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: ci @@ -52,13 +52,217 @@ 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 + - name: CM_PORT + value: "" + + #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 + - name: CM_WATCHED_CUSTOM_SERVICES + value: "" + + # provide name of watcher + # it supports controller, restController, service, repository, component, webClient + - name: CM_WATCHERS + value: "restController" + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" + + ## Period to wait before and after injection of chaos + - name: RAMP_TIME + value: "" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + labels: + name: spring-boot-app-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + +--- +--- +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 +kind: ChaosExperiment +metadata: + name: spring-boot-exceptions + labels: + name: spring-boot-exceptions + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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"] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get", "list", "watch"] + # for creating and managing to execute commands 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"] + image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name spring-boot-exceptions + 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" + + # 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 + - name: CM_LEVEL + value: "1" + + # it limits watched packages/classes/methods + - name: CM_WATCHED_CUSTOM_SERVICES + value: "" + + # provide name of watcher + # it supports controller, restController, service, repository, component, webClient + - 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 + - name: RAMP_TIME + value: "" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + labels: + name: spring-boot-exceptions + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + +--- +--- +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 +kind: ChaosExperiment +metadata: + name: spring-boot-memory-stress + labels: + name: spring-boot-memory-stress + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +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"] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get", "list", "watch"] + # for creating and managing to execute commands 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"] + image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name spring-boot-memory-stress + 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" # port of the spring boot application - name: CM_PORT @@ -95,7 +299,7 @@ spec: value: "parallel" labels: - name: spring-boot-latency + name: spring-boot-memory-stress app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/version: ci @@ -358,9 +562,9 @@ description: 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-exceptions + name: spring-boot-latency labels: - name: spring-boot-exceptions + name: spring-boot-latency app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: ci @@ -405,217 +609,13 @@ spec: imagePullPolicy: Always args: - -c - - ./experiments -name spring-boot-exceptions + - ./experiments -name spring-boot-latency 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" - - # 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 - - name: CM_LEVEL - value: "1" - - # it limits watched packages/classes/methods - - name: CM_WATCHED_CUSTOM_SERVICES - value: "" - - # provide name of watcher - # it supports controller, restController, service, repository, component, webClient - - 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 - - name: RAMP_TIME - value: "" - - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: "parallel" - - labels: - name: spring-boot-exceptions - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - ---- ---- -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 -kind: ChaosExperiment -metadata: - name: spring-boot-app-kill - labels: - name: spring-boot-app-kill - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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"] - # Track and get the runner, experiment, and helper pods log - - apiGroups: [""] - resources: ["pods/log"] - verbs: ["get", "list", "watch"] - # for creating and managing to execute commands 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"] - image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name spring-boot-app-kill - command: - - /bin/bash - env: - # 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 - - name: CM_LEVEL - value: "1" - - # it limits watched packages/classes/methods - - name: CM_WATCHED_CUSTOM_SERVICES - value: "" - - # provide name of watcher - # it supports controller, restController, service, repository, component, webClient - - name: CM_WATCHERS - value: "restController" - - ## percentage of total pods to target - - name: PODS_AFFECTED_PERC - value: "" - - ## Period to wait before and after injection of chaos - - name: RAMP_TIME - value: "" - - ## it defines the sequence of chaos execution for multiple target pods - ## supported values: serial, parallel - - name: SEQUENCE - value: "parallel" - - labels: - name: spring-boot-app-kill - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: experiment-job - app.kubernetes.io/version: ci - ---- ---- -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 -kind: ChaosExperiment -metadata: - name: spring-boot-memory-stress - labels: - name: spring-boot-memory-stress - app.kubernetes.io/part-of: litmus - app.kubernetes.io/component: chaosexperiment - app.kubernetes.io/version: ci -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"] - # Track and get the runner, experiment, and helper pods log - - apiGroups: [""] - resources: ["pods/log"] - verbs: ["get", "list", "watch"] - # for creating and managing to execute commands 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"] - image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name spring-boot-memory-stress - 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 @@ -652,7 +652,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: ci