---
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: |
    It injects the chaos inside the pod which modifies the header of the request/response from the provided application server to the headers provided by the user and reverts after a specified duration
kind: ChaosExperiment
metadata:
  name: pod-http-modify-header
  labels:
    name: pod-http-modify-header
    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-header
    command:
      - /bin/bash
    env:
      - name: TARGET_CONTAINER
        value: ""

      # provide lib image
      - name: LIB_IMAGE
        value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest"

      # map of headers to modify/add; Eg: {"X-Litmus-Test-Header": "X-Litmus-Test-Value"}
      # to remove a header, just set the value to ""; Eg: {"X-Litmus-Test-Header": ""}
      - name: HEADERS_MAP
        value: "{}"

      # whether to modify response headers or request headers. Accepted values: request, response
      - name: HEADER_MODE
        value: "response"

      # port of the target service
      - name: TARGET_SERVICE_PORT
        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-header
      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 latency on pods belonging to an app deployment
kind: ChaosExperiment
metadata:
  name: pod-network-latency
  labels:
    name: pod-network-latency
    app.kubernetes.io/part-of: litmus
    app.kubernetes.io/component: chaosexperiment
    app.kubernetes.io/version: 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-latency
    command:
      - /bin/bash
    env:
      - name: TARGET_CONTAINER
        value: ""

      - name: NETWORK_INTERFACE
        value: "eth0"

      # provide lib image
      - name: LIB_IMAGE
        value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest"

      - name: TC_IMAGE
        value: "gaiadocker/iproute2"

      - name: NETWORK_LATENCY
        value: "2000" #in ms

      - name: TOTAL_CHAOS_DURATION
        value: "60" # in seconds

      # Time period to wait before and after injection of chaos in sec
      - name: RAMP_TIME
        value: ""

      - name: JITTER
        value: "0"

      ## 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"

      - 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"

      # To select pods on specific node(s)
      - name: NODE_LABEL
        value: ""

      ## it defines the sequence of chaos execution for multiple target pods
      ## supported values: serial, parallel
      - name: SEQUENCE
        value: "parallel"

    labels:
      name: pod-network-latency
      app.kubernetes.io/part-of: litmus
      app.kubernetes.io/component: experiment-job
      app.kubernetes.io/runtime-api-usage: "true"
      app.kubernetes.io/version: 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 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: |
    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

---
---
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: |
    Poweroff a node in the cluster
kind: ChaosExperiment
metadata:
  name: node-poweroff
  labels:
    name: node-poweroff
    app.kubernetes.io/part-of: litmus
    app.kubernetes.io/component: chaosexperiment
    app.kubernetes.io/version: latest
spec:
  definition:
    scope: Cluster
    permissions:
      # Create and monitor the experiment & helper pods
      - apiGroups: [""]
        resources: ["pods"]
        verbs:
          [
            "create",
            "delete",
            "get",
            "list",
            "patch",
            "update",
            "deletecollection",
          ]
      # Performs CRUD operations on the events inside chaosengine and chaosresult
      - apiGroups: [""]
        resources: ["events"]
        verbs: ["create", "get", "list", "patch", "update"]
      # Fetch configmaps & secrets details and mount it to the experiment pod (if specified)
      - apiGroups: [""]
        resources: ["configmaps", "secrets"]
        verbs: ["get", "list"]
      # Track and get the runner, experiment, and helper pods log
      - apiGroups: [""]
        resources: ["pods/log"]
        verbs: ["get", "list", "watch"]
      # for creating and managing to execute comands inside target container
      - apiGroups: [""]
        resources: ["pods/exec"]
        verbs: ["get", "list", "create"]
      # for configuring and monitor the experiment job by the chaos-runner pod
      - apiGroups: ["batch"]
        resources: ["jobs"]
        verbs: ["create", "list", "get", "delete", "deletecollection"]
      # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
      - apiGroups: ["litmuschaos.io"]
        resources: ["chaosengines", "chaosexperiments", "chaosresults"]
        verbs: ["create", "list", "get", "patch", "update", "delete"]
      # for experiment to perform node status checks
      - apiGroups: [""]
        resources: ["nodes"]
        verbs: ["get", "list"]
    image: "litmuschaos.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: TOTAL_CHAOS_DURATION
        value: "60"

      - name: REBOOT_COMMAND
        value: '-o ServerAliveInterval=1 -o ServerAliveCountMax=1 "sudo systemctl poweroff --force --force" ; true'

      # Period to wait before and after injection of chaos in sec
      - name: RAMP_TIME
        value: ""

      # provide lib image
      - name: LIB_IMAGE
        value: "litmuschaos.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: ""

    labels:
      name: node-poweroff
      app.kubernetes.io/part-of: litmus
      app.kubernetes.io/component: experiment-job
      app.kubernetes.io/version: latest
    secrets:
      - name: id-rsa
        mountPath: /mnt/

---
---
apiVersion: litmuschaos.io/v1alpha1
description:
  message: |
    Pod DNS Error injects DNS failure/error in target pod containers
kind: ChaosExperiment
metadata:
  name: pod-dns-error
  labels:
    name: pod-dns-error
    app.kubernetes.io/part-of: litmus
    app.kubernetes.io/component: chaosexperiment
    app.kubernetes.io/version: 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-error
    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"

      # list of the target hostnames or kewywords eg. '["litmuschaos","chaosnative.io"]' . If empty all hostnames are targets
      - name: TARGET_HOSTNAMES
        value: ""

      # can be either exact or substring, determines whether the DNS query has to match exactly with one of the targets or can have any of the targets as substring
      - name: MATCH_SCHEME
        value: "exact"

    labels:
      experiment: pod-dns-error
      app.kubernetes.io/part-of: litmus
      app.kubernetes.io/component: experiment-job
      app.kubernetes.io/runtime-api-usage: "true"
      app.kubernetes.io/version: 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
        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
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
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: |
    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: "15"

      # Period to wait before and after injection of chaos in sec
      - name: RAMP_TIME
        value: ""

      - name: FORCE
        value: "true"

      - name: CHAOS_INTERVAL
        value: "5"

      ## percentage of total pods to target
      - name: PODS_AFFECTED_PERC
        value: ""

      - name: TARGET_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: |
    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: |
    Kills the Docker service on the application node to check the resiliency.
kind: ChaosExperiment
metadata:
  name: docker-service-kill
  labels:
    name: docker-service-kill
    app.kubernetes.io/part-of: litmus
    app.kubernetes.io/component: chaosexperiment
    app.kubernetes.io/version: 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 docker-service-kill
    command:
      - /bin/bash
    env:
      - name: TOTAL_CHAOS_DURATION
        value: "90" # in seconds

      # Period to wait before injection of chaos in sec
      - name: RAMP_TIME
        value: ""

      - name: 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: docker-service-kill
      app.kubernetes.io/part-of: litmus
      app.kubernetes.io/component: experiment-job
      app.kubernetes.io/service-kill: "true"
      app.kubernetes.io/version: 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
description:
  message: |
    It injects chaos inside the pod which modifies the status code of the response from the provided application server to desired status code provided by the user and reverts after a specified duration
kind: ChaosExperiment
metadata:
  name: pod-http-status-code
  labels:
    name: pod-http-status-code
    app.kubernetes.io/part-of: litmus
    app.kubernetes.io/component: chaosexperiment
    app.kubernetes.io/version: 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-status-code
    command:
      - /bin/bash
    env:
      - name: TARGET_CONTAINER
        value: ""

      # provide lib image
      - name: LIB_IMAGE
        value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest"

      # modified status code for the HTTP response
      # if no value is provided, a random status code from the supported code list will selected
      # if an invalid status code is provided, the experiment will fail
      # supported status code list: [200, 201, 202, 204, 300, 301, 302, 304, 307, 400, 401, 403, 404, 500, 501, 502, 503, 504]
      - name: STATUS_CODE
        value: ""

      #  whether to modify the body as per the status code provided
      - name: "MODIFY_RESPONSE_BODY"
        value: "true"

      # provide the body string to overwrite the response body. This will be used only if MODIFY_RESPONSE_BODY is set to true
      - 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-status-code
      app.kubernetes.io/part-of: litmus
      app.kubernetes.io/component: experiment-job
      app.kubernetes.io/version: ci

---
---
apiVersion: litmuschaos.io/v1alpha1
description:
  message: |
    Scale the application replicas and test the node autoscaling on cluster
kind: ChaosExperiment
metadata:
  name: pod-autoscaler
  labels:
    name: pod-autoscaler
    app.kubernetes.io/part-of: litmus
    app.kubernetes.io/component: chaosexperiment
    app.kubernetes.io/version: 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"]
      # performs CRUD operations on the deployments and statefulsets
      - apiGroups: ["apps"]
        resources: ["deployments", "statefulsets"]
        verbs: ["list", "get", "patch", "update"]
      # for configuring and monitor the experiment job by the chaos-runner pod
      - apiGroups: ["batch"]
        resources: ["jobs"]
        verbs: ["create", "list", "get", "delete", "deletecollection"]
      # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow
      - apiGroups: ["litmuschaos.io"]
        resources: ["chaosengines", "chaosexperiments", "chaosresults"]
        verbs: ["create", "list", "get", "patch", "update", "delete"]
    image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest"
    imagePullPolicy: Always
    args:
      - -c
      - ./experiments -name pod-autoscaler
    command:
      - /bin/bash
    env:
      - name: TOTAL_CHAOS_DURATION
        value: "60"

      # Period to wait before and after injection of chaos in sec
      - name: RAMP_TIME
        value: ""

      # Number of replicas to scale
      - name: REPLICA_COUNT
        value: "5"

      - name: DEFAULT_HEALTH_CHECK
        value: "false"

    labels:
      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: |
    it injects chaos into the pod which stops outgoing HTTP requests by resetting the TCP connection and then reverts back to the original state after a specified duration
kind: ChaosExperiment
metadata:
  name: pod-http-reset-peer
  labels:
    name: pod-http-reset-peer
    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-reset-peer
    command:
      - /bin/bash
    env:
      - name: TARGET_CONTAINER
        value: ""

      # provide lib image
      - name: LIB_IMAGE
        value: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest"

      # reset timeout specifies after how much duration to reset the connection
      - name: RESET_TIMEOUT
        value: "0" #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-reset-peer
      app.kubernetes.io/part-of: litmus
      app.kubernetes.io/component: experiment-job
      app.kubernetes.io/version: ci

---

apiVersion: litmuschaos.io/v1alpha1
description:
  message: |
    Injects network rate limit on pods belonging to an app deployment
kind: ChaosExperiment
metadata:
  name: pod-network-rate-limit
  labels:
    name: pod-network-rate-limit
    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-rate-limit
    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: NETWORK_BANDWIDTH
        value: "1mbit"

      - name: BURST
        value: "32kb"

      - name: LIMIT
        value: "2mb"

      - name: MIN_BURST
        value: ""

      - name: PEAK_RATE
        value: ""

      - 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
      # it supports docker, containerd, crio
      - 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-rate-limit
      app.kubernetes.io/part-of: litmus
      app.kubernetes.io/component: experiment-job
      app.kubernetes.io/runtime-api-usage: "true"
      app.kubernetes.io/version: ci

---