apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow metadata: name: argowf-chaos-sock-shop-resiliency-cron-wf namespace: litmus labels: subject: "sock-shop" spec: schedule: "0 * * * *" concurrencyPolicy: "Forbid" startingDeadlineSeconds: 0 workflowSpec: entrypoint: argowf-chaos serviceAccountName: argo-chaos securityContext: runAsUser: 1000 runAsNonRoot: true arguments: parameters: - name: adminModeNamespace value: "litmus" - name: appNamespace value: "sock-shop" templates: - name: argowf-chaos steps: - - name: install-application template: install-application - - name: install-chaos-faults template: install-chaos-faults - name: load-test template: load-test - - name: pod-cpu-hog template: pod-cpu-hog - - name: pod-delete template: pod-delete - - name: pod-network-loss template: pod-network-loss - - name: pod-memory-hog template: pod-memory-hog - - name: disk-fill template: disk-fill - - name: cleanup-chaos-resources template: cleanup-chaos-resources # - name: delete-application # template: delete-application - name: delete-loadtest template: delete-loadtest - name: install-application container: image: litmuschaos/litmus-app-deployer:latest args: ["-namespace=sock-shop","-typeName=resilient","-operation=apply","-timeout=400", "-app=sock-shop","-scope=cluster"] #for weak provide type flagName as resilient(-typeName=weak) - name: install-chaos-faults inputs: artifacts: - name: pod-cpu-hog-2sf path: /tmp/pod-cpu-hog-2sf.yaml raw: data: | apiVersion: litmuschaos.io/v1alpha1 description: message: | Injects CPU consumption on pods belonging to an app deployment kind: ChaosExperiment metadata: name: pod-cpu-hog labels: name: pod-cpu-hog app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: latest spec: definition: scope: Namespaced permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] resources: ["pods"] verbs: [ "create", "delete", "get", "list", "patch", "update", "deletecollection", ] # Performs CRUD operations on the events inside chaosengine and chaosresult - apiGroups: [""] resources: ["events"] verbs: ["create", "get", "list", "patch", "update"] # Fetch configmaps details and mount it to the experiment pod (if specified) - apiGroups: [""] resources: ["configmaps"] verbs: ["get", "list"] # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] verbs: ["get", "list", "watch"] # for creating and managing to execute 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: latest - name: pod-delete-rm5 path: /tmp/pod-delete-rm5.yaml raw: data: | apiVersion: litmuschaos.io/v1alpha1 description: message: | Deletes a pod belonging to a deployment/statefulset/daemonset kind: ChaosExperiment metadata: name: pod-delete labels: name: pod-delete app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: latest spec: definition: scope: Namespaced permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] resources: ["pods"] verbs: [ "create", "delete", "get", "list", "patch", "update", "deletecollection", ] # Performs CRUD operations on the events inside chaosengine and chaosresult - apiGroups: [""] resources: ["events"] verbs: ["create", "get", "list", "patch", "update"] # Fetch configmaps details and mount it to the experiment pod (if specified) - apiGroups: [""] resources: ["configmaps"] verbs: ["get", "list"] # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] verbs: ["get", "list", "watch"] # for creating and managing to execute 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: latest - name: pod-network-loss-x1w path: /tmp/pod-network-loss-x1w.yaml raw: data: | apiVersion: litmuschaos.io/v1alpha1 description: message: | Injects network packet loss on pods belonging to an app deployment kind: ChaosExperiment metadata: name: pod-network-loss labels: name: pod-network-loss app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: latest spec: definition: scope: Namespaced permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] resources: ["pods"] verbs: [ "create", "delete", "get", "list", "patch", "update", "deletecollection", ] # Performs CRUD operations on the events inside chaosengine and chaosresult - apiGroups: [""] resources: ["events"] verbs: ["create", "get", "list", "patch", "update"] # Fetch configmaps details and mount it to the experiment pod (if specified) - apiGroups: [""] resources: ["configmaps"] verbs: ["get", "list"] # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] verbs: ["get", "list", "watch"] # for creating and managing to execute 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: latest - name: pod-memory-hog-49a path: /tmp/pod-memory-hog-49a.yaml raw: data: | apiVersion: litmuschaos.io/v1alpha1 description: message: | Injects memory consumption on pods belonging to an app deployment kind: ChaosExperiment metadata: name: pod-memory-hog labels: name: pod-memory-hog app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: latest spec: definition: scope: Namespaced permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] resources: ["pods"] verbs: [ "create", "delete", "get", "list", "patch", "update", "deletecollection", ] # Performs CRUD operations on the events inside chaosengine and chaosresult - apiGroups: [""] resources: ["events"] verbs: ["create", "get", "list", "patch", "update"] # Fetch configmaps details and mount it to the experiment pod (if specified) - apiGroups: [""] resources: ["configmaps"] verbs: ["get", "list"] # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] verbs: ["get", "list", "watch"] # for creating and managing to execute 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: latest - name: disk-fill-h7d path: /tmp/disk-fill-h7d.yaml raw: data: | apiVersion: litmuschaos.io/v1alpha1 description: message: | Fillup Ephemeral Storage of a Resource kind: ChaosExperiment metadata: name: disk-fill labels: name: disk-fill app.kubernetes.io/part-of: litmus app.kubernetes.io/component: chaosexperiment app.kubernetes.io/version: latest spec: definition: scope: Namespaced permissions: # Create and monitor the experiment & helper pods - apiGroups: [""] resources: ["pods"] verbs: [ "create", "delete", "get", "list", "patch", "update", "deletecollection", ] # Performs CRUD operations on the events inside chaosengine and chaosresult - apiGroups: [""] resources: ["events"] verbs: ["create", "get", "list", "patch", "update"] # Fetch configmaps details and mount it to the experiment pod (if specified) - apiGroups: [""] resources: ["configmaps"] verbs: ["get", "list"] # Track and get the runner, experiment, and helper pods log - apiGroups: [""] resources: ["pods/log"] verbs: ["get", "list", "watch"] # for creating and managing to execute 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 container runtime path # Default set to docker container path - name: CONTAINER_PATH value: "/var/lib/docker/containers" ## it defines the sequence of chaos execution for multiple target pods ## supported values: serial, parallel - name: SEQUENCE value: "parallel" labels: name: disk-fill app.kubernetes.io/part-of: litmus app.kubernetes.io/component: experiment-job app.kubernetes.io/host-path-usage: "true" app.kubernetes.io/version: latest outputs: {} metadata: {} container: name: "" image: litmuschaos/k8s:latest command: - sh - "-c" args: - kubectl apply -f /tmp/ -n {{workflow.parameters.adminModeNamespace}} && sleep 30 resources: {} - name: pod-cpu-hog inputs: artifacts: - name: pod-cpu-hog path: /tmp/chaosengine.yaml raw: data: | apiVersion: litmuschaos.io/v1alpha1 kind: ChaosEngine metadata: name: pod-cpu-hog-chaos namespace: "{{workflow.parameters.adminModeNamespace}}" labels: context: "{{workflow.parameters.appNamespace}}_carts" annotations: {} spec: appinfo: appns: 'sock-shop' applabel: 'name=carts' appkind: 'deployment' jobCleanUpPolicy: retain engineState: 'active' chaosServiceAccount: litmus-admin experiments: - name: pod-cpu-hog spec: probe: - name: "check-frontend-access-url" type: "httpProbe" httpProbe/inputs: url: "http://front-end.sock-shop.svc.cluster.local:80" insecureSkipVerify: false responseTimeout: 100 method: get: criteria: "==" responseCode: "200" mode: "Continuous" runProperties: probeTimeout: 1s interval: 100ms attempt: 2 probePollingInterval: 1s - name: "check-benchmark" type: "cmdProbe" cmdProbe/inputs: command: "curl http://qps-test.sock-shop.svc.cluster.local" comparator: type: "int" # supports: string, int, float criteria: ">=" #supports >=,<=,>,<,==,!= for int and contains,equal,notEqual,matches,notMatches for string values value: "100" mode: "Edge" runProperties: probeTimeout: 1s interval: 100ms attempt: 2 initialDelay: 10s components: env: #number of cpu cores to be consumed #verify the resources the app has been launched with - name: CPU_CORES value: '1' - name: TOTAL_CHAOS_DURATION value: '30' # in seconds - name: CHAOS_KILL_COMMAND value: "kill -9 $(ps afx | grep \"[md5sum] /dev/zero\" | awk '{print$1}' | tr '\n' ' ')" container: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] - name: pod-memory-hog inputs: artifacts: - name: pod-memory-hog path: /tmp/chaosengine.yaml raw: data: | apiVersion: litmuschaos.io/v1alpha1 kind: ChaosEngine metadata: name: pod-memory-hog-chaos namespace: "{{workflow.parameters.adminModeNamespace}}" labels: context: "{{workflow.parameters.appNamespace}}_orders" annotations: {} spec: appinfo: appns: 'sock-shop' applabel: 'name=orders' appkind: 'deployment' jobCleanUpPolicy: retain engineState: 'active' chaosServiceAccount: litmus-admin experiments: - name: pod-memory-hog spec: probe: - name: "check-frontend-access-url" type: "httpProbe" httpProbe/inputs: url: "http://front-end.sock-shop.svc.cluster.local:80" insecureSkipVerify: false responseTimeout: 100 method: get: criteria: "==" responseCode: "200" mode: "Continuous" runProperties: probeTimeout: 1s interval: 100ms attempt: 2 probePollingInterval: 1s - name: "check-benchmark" type: "cmdProbe" cmdProbe/inputs: command: "curl http://qps-test.sock-shop.svc.cluster.local" comparator: type: "int" # supports: string, int, float criteria: ">=" #supports >=,<=,>,<,==,!= for int and contains,equal,notEqual,matches,notMatches for string values value: "100" mode: "Edge" runProperties: probeTimeout: 1s interval: 100ms attempt: 2 initialDelay: 10s components: env: - name: MEMORY_CONSUMPTION value: '500' - name: TOTAL_CHAOS_DURATION value: '30' # in seconds - name: CHAOS_KILL_COMMAND value: "kill -9 $(ps afx | grep \"[dd] if /dev/zero\" | awk '{print $1}' | tr '\n' ' ')" container: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] - name: pod-delete inputs: artifacts: - name: pod-delete path: /tmp/chaosengine.yaml raw: data: | apiVersion: litmuschaos.io/v1alpha1 kind: ChaosEngine metadata: name: catalogue-pod-delete-chaos namespace: "{{workflow.parameters.adminModeNamespace}}" labels: context: "{{workflow.parameters.appNamespace}}_catalogue" annotations: {} spec: appinfo: appns: 'sock-shop' applabel: 'name=catalogue' appkind: 'deployment' engineState: 'active' chaosServiceAccount: litmus-admin jobCleanUpPolicy: 'retain' components: runner: imagePullPolicy: Always experiments: - name: pod-delete spec: probe: - name: "check-catalogue-access-url" type: "httpProbe" httpProbe/inputs: url: "http://front-end.sock-shop.svc.cluster.local:80/catalogue" insecureSkipVerify: false responseTimeout: 100 method: get: criteria: "==" responseCode: "200" mode: "Continuous" runProperties: probeTimeout: 1s interval: 100ms attempt: 3 probePollingInterval: 1s - name: "check-benchmark" type: "cmdProbe" cmdProbe/inputs: command: "curl http://qps-test.sock-shop.svc.cluster.local" comparator: type: "int" # supports: string, int, float criteria: ">=" #supports >=,<=,>,<,==,!= for int and contains,equal,notEqual,matches,notMatches for string values value: "100" mode: "Edge" runProperties: probeTimeout: 1s interval: 100ms attempt: 2 initialDelay: 2s components: env: - name: TOTAL_CHAOS_DURATION value: '30' # set chaos interval (in sec) as desired - name: CHAOS_INTERVAL value: '10' # pod failures without '--force' & default terminationGracePeriodSeconds - name: FORCE value: 'false' container: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] - name: pod-network-loss inputs: artifacts: - name: pod-network-loss path: /tmp/chaosengine.yaml raw: data: | apiVersion: litmuschaos.io/v1alpha1 kind: ChaosEngine metadata: name: pod-network-loss-chaos namespace: "{{workflow.parameters.adminModeNamespace}}" labels: context: "{{workflow.parameters.appNamespace}}_user-db" annotations: {} spec: appinfo: appns: 'sock-shop' applabel: 'name=user-db' appkind: 'statefulset' jobCleanUpPolicy: retain engineState: 'active' chaosServiceAccount: litmus-admin components: runner: imagePullPolicy: Always experiments: - name: pod-network-loss spec: probe: - name: "check-cards-access-url" type: "httpProbe" httpProbe/inputs: url: "http://front-end.sock-shop.svc.cluster.local:80/cards" insecureSkipVerify: false responseTimeout: 100 method: get: criteria: "==" responseCode: "200" mode: "Continuous" runProperties: probeTimeout: 1s interval: 100ms attempt: 3 probePollingInterval: 1s - name: "check-benchmark" type: "cmdProbe" cmdProbe/inputs: command: "curl http://qps-test.sock-shop.svc.cluster.local" comparator: type: "int" # supports: string, int, float criteria: ">=" #supports >=,<=,>,<,==,!= for int and contains,equal,notEqual,matches,notMatches for string values value: "100" mode: "Edge" runProperties: probeTimeout: 1s interval: 100ms attempt: 2 initialDelay: 2s components: env: - name: TOTAL_CHAOS_DURATION value: '30' - name: NETWORK_INTERFACE value: 'eth0' - name: NETWORK_PACKET_LOSS_PERCENTAGE value: '100' - name: CONTAINER_RUNTIME value: 'containerd' - name: SOCKET_PATH value: '/run/containerd/containerd.sock' container: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] - name: disk-fill inputs: artifacts: - name: disk-fill path: /tmp/chaosengine.yaml raw: data: | apiVersion: litmuschaos.io/v1alpha1 kind: ChaosEngine metadata: name: catalogue-disk-fill namespace: "{{workflow.parameters.adminModeNamespace}}" labels: context: "{{workflow.parameters.appNamespace}}_catalogue-db" annotations: {} spec: appinfo: appns: 'sock-shop' applabel: 'name=catalogue-db' appkind: 'statefulset' engineState: 'active' chaosServiceAccount: litmus-admin jobCleanUpPolicy: 'retain' components: runner: imagePullPolicy: Always experiments: - name: disk-fill spec: probe: - name: "check-catalogue-db-cr-status" type: "k8sProbe" k8sProbe/inputs: group: "" version: "v1" resource: "pods" namespace: "sock-shop" fieldSelector: "status.phase=Running" labelSelector: "name=catalogue-db" operation: "present" mode: "Continuous" runProperties: probeTimeout: 1s interval: 100ms attempt: 1 probePollingInterval: 1s - name: "check-benchmark" type: "cmdProbe" cmdProbe/inputs: command: "curl http://qps-test.sock-shop.svc.cluster.local:80" comparator: type: "int" # supports: string, int, float criteria: ">=" #supports >=,<=,>,<,==,!= for int and contains,equal,notEqual,matches,notMatches for string values value: "100" mode: "Edge" runProperties: probeTimeout: 1s interval: 100ms attempt: 2 initialDelay: 1s components: env: - name: FILL_PERCENTAGE value: '100' - name: TARGET_CONTAINER value: '' - name: TOTAL_CHAOS_DURATION value: '30' container: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] - name: delete-application container: image: litmuschaos/litmus-app-deployer:latest args: ["-namespace=sock-shop","-typeName=resilient","-operation=delete", "-app=sock-shop"] - name: load-test container: image: litmuschaos/litmus-app-deployer:latest args: ["-namespace=loadtest", "-app=loadtest"] - name: delete-loadtest container: image: litmuschaos/litmus-app-deployer:latest args: ["-namespace=loadtest","-operation=delete", "-app=loadtest"] - name: cleanup-chaos-resources container: image: litmuschaos/k8s:latest command: [sh, -c] args: [ "kubectl delete chaosengine pod-memory-hog-chaos pod-cpu-hog-chaos catalogue-pod-delete-chaos pod-network-loss-chaos -n {{workflow.parameters.adminModeNamespace}}", ]