diff --git a/workflows/sock-shop-demo/usingCmdProbe/workflow.yaml b/workflows/sock-shop-demo/usingCmdProbe/workflow.yaml index fe43f40..a2fe6fc 100644 --- a/workflows/sock-shop-demo/usingCmdProbe/workflow.yaml +++ b/workflows/sock-shop-demo/usingCmdProbe/workflow.yaml @@ -38,11 +38,15 @@ spec: template: pod-network-loss - - name: revert-chaos template: revert-chaos + - 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", "-timeout=400"] + args: ["-namespace=sock-shop","-typeName=resilient","-operation=apply","-timeout=400"] - name: install-pod-delete inputs: @@ -110,7 +114,7 @@ spec: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: '15' + value: '30' # Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' @@ -195,7 +199,7 @@ spec: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: '60' + value: '30' - name: CHAOS_INTERVAL value: '10' @@ -287,7 +291,7 @@ spec: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: '60' + value: '30' - name: CHAOS_INTERVAL value: '10' ## enter the amount of memory in megabytes to be consumed by the application pod @@ -310,7 +314,7 @@ spec: ## it defines the sequence of chaos execution for multiple target pods ## supported values: serial, parallel - name: SEQUENCE - value: 'parallel + value: 'parallel' - name: TARGET_PODS value: '' labels: @@ -550,7 +554,7 @@ spec: - name: MEMORY_CONSUMPTION value: '500' - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds + value: '30' # in seconds container: image: litmuschaos/litmus-checker:latest @@ -706,13 +710,22 @@ spec: value: '/var/run/docker.sock' container: image: litmuschaos/litmus-checker:latest - args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] + 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"] - - name: load-test container: image: litmuschaos/litmus-app-deployer:latest args: ["-namespace=loadtest"] + + - name: delete-loadtest + container: + image: litmuschaos/litmus-app-deployer:latest + args: ["-namespace=loadtest","-operation=delete"] - name: revert-chaos container: diff --git a/workflows/sock-shop-demo/usingCmdProbe/workflow_cron.yaml b/workflows/sock-shop-demo/usingCmdProbe/workflow_cron.yaml index 2eb8af4..b9f3779 100644 --- a/workflows/sock-shop-demo/usingCmdProbe/workflow_cron.yaml +++ b/workflows/sock-shop-demo/usingCmdProbe/workflow_cron.yaml @@ -42,11 +42,15 @@ spec: template: pod-network-loss - - name: revert-chaos template: revert-chaos + - 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", "-timeout=400"] + args: ["-namespace=sock-shop","-typeName=resilient","-operation=apply","-timeout=400"] - name: install-pod-delete inputs: @@ -69,6 +73,8 @@ spec: - apiGroups: - "" - "apps" + - "apps.openshift.io" + - "argoproj.io" - "batch" - "litmuschaos.io" resources: @@ -76,8 +82,15 @@ spec: - "jobs" - "pods" - "pods/log" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" - "events" - - "configmaps" - "chaosengines" - "chaosexperiments" - "chaosresults" @@ -88,6 +101,7 @@ spec: - "patch" - "update" - "delete" + - "deletecollection" - apiGroups: - "" resources: @@ -104,19 +118,23 @@ spec: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: '15' + value: '30' # Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' # provide the kill count - - name: KILL_COUNT - value: '' - name: FORCE value: 'true' - name: CHAOS_INTERVAL value: '5' + - name: PODS_AFFECTED_PERC + value: '' - name: LIB - value: 'litmus' + value: 'litmus' + - name: TARGET_PODS + value: '' + - name: SEQUENCE + value: 'parallel' labels: name: pod-delete container: @@ -148,12 +166,23 @@ spec: - apiGroups: - "" - "batch" + - "apps" + - "apps.openshift.io" + - "argoproj.io" - "litmuschaos.io" resources: - "jobs" - "pods" - "pods/log" - "events" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" - "chaosengines" - "chaosexperiments" - "chaosresults" @@ -164,6 +193,7 @@ spec: - "patch" - "update" - "delete" + - "deletecollection" image: "litmuschaos/go-runner:latest" imagePullPolicy: Always args: @@ -173,29 +203,30 @@ spec: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: '' + value: '30' - name: CHAOS_INTERVAL value: '10' - ## 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: '' - - name: LIB value: 'litmus' - - - name: TARGET_POD + ## It is used in pumba lib only + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + - name: SOCKET_PATH + value: '/var/run/docker.sock' + - name: TARGET_PODS value: '' - + - name: SEQUENCE + value: 'parallel' labels: name: pod-cpu-hog container: @@ -227,11 +258,22 @@ spec: - apiGroups: - "" - "batch" + - "apps" + - "apps.openshift.io" + - "argoproj.io" - "litmuschaos.io" resources: - "jobs" - "pods" - "pods/log" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" - "events" - "chaosengines" - "chaosexperiments" @@ -243,7 +285,9 @@ spec: - "patch" - "update" - "delete" + - "deletecollection" image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always args: - -c - ./experiments -name pod-memory-hog @@ -252,30 +296,31 @@ spec: env: - name: TOTAL_CHAOS_DURATION value: '30' - - name: CHAOS_INTERVAL value: '10' - ## enter the amount of memory in megabytes to be consumed by the application pod - name: MEMORY_CONSUMPTION value: '500' - ## percentage of total pods to target - name: PODS_AFFECTED_PERC value: '' - ## Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' - ## env var that describes the library used to execute the chaos ## default: litmus. Supported values: litmus, powerfulseal, chaoskube - name: LIB value: 'litmus' - - - name: TARGET_POD + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + - name: SOCKET_PATH + value: '/var/run/docker.sock' + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + - name: TARGET_PODS value: '' - labels: name: pod-memory-hog container: @@ -307,11 +352,22 @@ spec: - apiGroups: - "" - "batch" + - "apps" + - "apps.openshift.io" + - "argoproj.io" - "litmuschaos.io" resources: - "jobs" - "pods" - "pods/log" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" - "events" - "chaosengines" - "chaosexperiments" @@ -335,49 +391,34 @@ spec: env: - name: TARGET_CONTAINER value: '' - - name: LIB_IMAGE value: 'litmuschaos/go-runner:latest' - - name: NETWORK_INTERFACE value: 'eth0' - - name: TC_IMAGE value: 'gaiadocker/iproute2' - - name: NETWORK_PACKET_LOSS_PERCENTAGE value: '100' #in PERCENTAGE - - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds - + value: '30' # in seconds - name: RAMP_TIME value: '' - - name: LIB value: 'litmus' - - name: PODS_AFFECTED_PERC value: '' - - - name: TARGET_POD + - name: TARGET_PODS value: '' - - name: CONTAINER_RUNTIME value: 'docker' - - - name: TARGET_IPS + - name: DESTINATION_IPS value: '' - - - name: TARGET_HOSTS + - name: DESTINATION_HOSTS value: '' - - name: SOCKET_PATH - value: '/run/containerd/containerd.sock' - + value: '/var/run/docker.sock' - name: SEQUENCE value: 'parallel' - labels: name: pod-network-loss container: @@ -385,77 +426,6 @@ spec: command: [sh, -c] args: [ "kubectl apply -f /tmp/pod-network-loss.yaml -n {{workflow.parameters.adminModeNamespace}}",] - - 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}} - spec: - appinfo: - appns: 'sock-shop' - applabel: 'name=user-db' - appkind: 'statefulset' - jobCleanUpPolicy: retain - monitoring: true - annotationCheck: 'false' - engineState: 'active' - auxiliaryAppInfo: '' - 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 - method: - get: - criteria: "==" - responseCode: "200" - mode: "Continuous" - runProperties: - probeTimeout: 2 - interval: 1 - retry: 2 - probePollingInterval: 1 - components: - env: - - name: TARGET_CONTAINER - value: '' - - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:latest' - - - name: TOTAL_CHAOS_DURATION - value: '30' - - - name: NETWORK_INTERFACE - value: 'eth0' - - - name: NETWORK_PACKET_LOSS_PERCENTAGE - value: '100' - - - name: CONTAINER_RUNTIME - value: 'docker' - - - name: SOCKET_PATH - value: '/var/run/docker.sock' - container: - image: litmuschaos/litmus-checker:latest - args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] - - name: pod-cpu-hog inputs: artifacts: @@ -515,17 +485,13 @@ spec: components: experimentImage: "litmuschaos/go-runner:latest" env: - - name: TARGET_CONTAINER - value: '' - - - name: NODE_CPU_CORE + #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: '' # in seconds - - - name: CHAOS_KILL_COMMAND - value: "kill -9 $(ps afx | grep \"[md5sum] /dev/zero\" | awk '{print$1}' | tr '\n' ' ')" + value: '30' # in seconds + container: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] @@ -589,15 +555,11 @@ spec: components: experimentImage: "litmuschaos/go-runner:latest" env: - - name: TARGET_CONTAINER - value: '' - name: MEMORY_CONSUMPTION value: '500' - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds - - name: CHAOS_KILL_COMMAND - value: "kill -9 $(ps afx | grep \"[dd] if /dev/zero\" | awk '{print $1}' | tr '\n' ' ')" - + value: '30' # in seconds + container: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] @@ -621,7 +583,6 @@ spec: appkind: 'deployment' annotationCheck: 'false' engineState: 'active' - auxiliaryAppInfo: '' chaosServiceAccount: litmus-admin monitoring: true jobCleanUpPolicy: 'retain' @@ -665,7 +626,7 @@ spec: components: env: - name: TOTAL_CHAOS_DURATION - value: '10' + value: '30' # set chaos interval (in sec) as desired - name: CHAOS_INTERVAL @@ -677,11 +638,98 @@ spec: 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}} + spec: + appinfo: + appns: 'sock-shop' + applabel: 'name=user-db' + appkind: 'statefulset' + jobCleanUpPolicy: retain + monitoring: false + annotationCheck: 'false' + 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 + method: + get: + criteria: "==" + responseCode: "200" + mode: "Continuous" + runProperties: + probeTimeout: 2 + interval: 1 + retry: 2 + probePollingInterval: 1 + - 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: "500" + source: "inline" # it can be “inline” or any image + mode: "Edge" + runProperties: + probeTimeout: 2 + interval: 2 + retry: 1 + initialDelaySeconds: 2 + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: NETWORK_INTERFACE + value: 'eth0' + + - name: NETWORK_PACKET_LOSS_PERCENTAGE + value: '100' + - name: CONTAINER_RUNTIME + value: 'docker' + - name: SOCKET_PATH + value: '/var/run/docker.sock' + 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"] - name: load-test container: image: litmuschaos/litmus-app-deployer:latest args: ["-namespace=loadtest"] + + - name: delete-loadtest + container: + image: litmuschaos/litmus-app-deployer:latest + args: ["-namespace=loadtest","-operation=delete"] - name: revert-chaos container: @@ -689,5 +737,5 @@ spec: 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}}", + "kubectl delete chaosengine pod-memory-hog-chaos pod-cpu-hog-chaos catalogue-pod-delete-chaos pod-network-loss-chaos -n {{workflow.parameters.adminModeNamespace}}", ] \ No newline at end of file diff --git a/workflows/sock-shop-demo/usingPromProbe/workflow.yaml b/workflows/sock-shop-demo/usingPromProbe/workflow.yaml index 433f8da..95bf186 100644 --- a/workflows/sock-shop-demo/usingPromProbe/workflow.yaml +++ b/workflows/sock-shop-demo/usingPromProbe/workflow.yaml @@ -19,7 +19,7 @@ spec: - - name: install-application template: install-application - name: load-test - template: load-test + template: load-test - - name: install-pod-delete template: install-pod-delete - name: install-pod-memory-hog @@ -38,11 +38,15 @@ spec: template: pod-network-loss - - name: revert-chaos template: revert-chaos + - 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", "-timeout=400"] + args: ["-namespace=sock-shop","-typeName=resilient","-operation=apply","-timeout=400"] #for resilient provide type flagName as resilient(-typeName=resilient) - name: install-pod-delete inputs: @@ -65,6 +69,8 @@ spec: - apiGroups: - "" - "apps" + - "apps.openshift.io" + - "argoproj.io" - "batch" - "litmuschaos.io" resources: @@ -72,8 +78,15 @@ spec: - "jobs" - "pods" - "pods/log" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" - "events" - - "configmaps" - "chaosengines" - "chaosexperiments" - "chaosresults" @@ -84,6 +97,7 @@ spec: - "patch" - "update" - "delete" + - "deletecollection" - apiGroups: - "" resources: @@ -100,19 +114,23 @@ spec: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: '15' + value: '30' # Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' # provide the kill count - - name: KILL_COUNT - value: '' - name: FORCE value: 'true' - name: CHAOS_INTERVAL - value: '5' + value: '10' + - name: PODS_AFFECTED_PERC + value: '' - name: LIB - value: 'litmus' + value: 'litmus' + - name: TARGET_PODS + value: '' + - name: SEQUENCE + value: 'parallel' labels: name: pod-delete container: @@ -144,12 +162,23 @@ spec: - apiGroups: - "" - "batch" + - "apps" + - "apps.openshift.io" + - "argoproj.io" - "litmuschaos.io" resources: - "jobs" - "pods" - "pods/log" - "events" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" - "chaosengines" - "chaosexperiments" - "chaosresults" @@ -160,6 +189,7 @@ spec: - "patch" - "update" - "delete" + - "deletecollection" image: "litmuschaos/go-runner:latest" imagePullPolicy: Always args: @@ -169,29 +199,30 @@ spec: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: '' + value: '30' - name: CHAOS_INTERVAL value: '10' - ## 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: '' - - name: LIB value: 'litmus' - - - name: TARGET_POD + ## It is used in pumba lib only + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + - name: SOCKET_PATH + value: '/var/run/docker.sock' + - name: TARGET_PODS value: '' - + - name: SEQUENCE + value: 'parallel' labels: name: pod-cpu-hog container: @@ -223,11 +254,22 @@ spec: - apiGroups: - "" - "batch" + - "apps" + - "apps.openshift.io" + - "argoproj.io" - "litmuschaos.io" resources: - "jobs" - "pods" - "pods/log" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" - "events" - "chaosengines" - "chaosexperiments" @@ -239,7 +281,9 @@ spec: - "patch" - "update" - "delete" + - "deletecollection" image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always args: - -c - ./experiments -name pod-memory-hog @@ -248,30 +292,31 @@ spec: env: - name: TOTAL_CHAOS_DURATION value: '30' - - name: CHAOS_INTERVAL value: '10' - ## enter the amount of memory in megabytes to be consumed by the application pod - name: MEMORY_CONSUMPTION value: '500' - ## percentage of total pods to target - name: PODS_AFFECTED_PERC value: '' - ## Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' - ## env var that describes the library used to execute the chaos ## default: litmus. Supported values: litmus, powerfulseal, chaoskube - name: LIB value: 'litmus' - - - name: TARGET_POD + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + - name: SOCKET_PATH + value: '/var/run/docker.sock' + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + - name: TARGET_PODS value: '' - labels: name: pod-memory-hog container: @@ -282,6 +327,101 @@ spec: "kubectl apply -f /tmp/pod-memory-hog.yaml -n {{workflow.parameters.adminModeNamespace}}", ] + - name: install-pod-network-loss + inputs: + artifacts: + - name: install-pod-network-loss + path: /tmp/pod-network-loss.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 + spec: + definition: + scope: Namespaced + permissions: + - apiGroups: + - "" + - "batch" + - "apps" + - "apps.openshift.io" + - "argoproj.io" + - "litmuschaos.io" + resources: + - "jobs" + - "pods" + - "pods/log" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" + - "events" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + - "deletecollection" + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-loss + command: + - /bin/bash + + env: + - name: TARGET_CONTAINER + value: '' + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + - name: NETWORK_INTERFACE + value: 'eth0' + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + - name: NETWORK_PACKET_LOSS_PERCENTAGE + value: '100' #in PERCENTAGE + - name: TOTAL_CHAOS_DURATION + value: '30' # in seconds + - name: RAMP_TIME + value: '' + - name: LIB + value: 'litmus' + - name: PODS_AFFECTED_PERC + value: '' + - name: TARGET_PODS + value: '' + - name: CONTAINER_RUNTIME + value: 'docker' + - name: DESTINATION_IPS + value: '' + - name: DESTINATION_HOSTS + value: '' + - name: SOCKET_PATH + value: '/var/run/docker.sock' + - name: SEQUENCE + value: 'parallel' + labels: + name: pod-network-loss + container: + image: lachlanevenson/k8s-kubectl + command: [sh, -c] + args: [ "kubectl apply -f /tmp/pod-network-loss.yaml -n {{workflow.parameters.adminModeNamespace}}",] + - name: pod-cpu-hog inputs: artifacts: @@ -339,17 +479,13 @@ spec: components: experimentImage: "litmuschaos/go-runner:latest" env: - - name: TARGET_CONTAINER - value: '' - - - name: NODE_CPU_CORE + #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: '' # in seconds - - - name: CHAOS_KILL_COMMAND - value: "kill -9 $(ps afx | grep \"[md5sum] /dev/zero\" | awk '{print$1}' | tr '\n' ' ')" + value: '30' # in seconds + container: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] @@ -411,15 +547,11 @@ spec: components: experimentImage: "litmuschaos/go-runner:latest" env: - - name: TARGET_CONTAINER - value: '' - name: MEMORY_CONSUMPTION value: '500' - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds - - name: CHAOS_KILL_COMMAND - value: "kill -9 $(ps afx | grep \"[dd] if /dev/zero\" | awk '{print $1}' | tr '\n' ' ')" - + value: '30' # in seconds + container: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] @@ -443,7 +575,6 @@ spec: appkind: 'deployment' annotationCheck: 'false' engineState: 'active' - auxiliaryAppInfo: '' chaosServiceAccount: litmus-admin monitoring: true jobCleanUpPolicy: 'retain' @@ -485,7 +616,7 @@ spec: components: env: - name: TOTAL_CHAOS_DURATION - value: '10' + value: '30' # set chaos interval (in sec) as desired - name: CHAOS_INTERVAL @@ -498,105 +629,6 @@ spec: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] - - name: install-pod-network-loss - inputs: - artifacts: - - name: install-pod-network-loss - path: /tmp/pod-network-loss.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 - spec: - definition: - scope: Namespaced - permissions: - - apiGroups: - - "" - - "batch" - - "litmuschaos.io" - resources: - - "jobs" - - "pods" - - "pods/log" - - "events" - - "chaosengines" - - "chaosexperiments" - - "chaosresults" - verbs: - - "create" - - "list" - - "get" - - "patch" - - "update" - - "delete" - - "deletecollection" - image: "litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name pod-network-loss - command: - - /bin/bash - - env: - - name: TARGET_CONTAINER - value: '' - - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:latest' - - - name: NETWORK_INTERFACE - value: 'eth0' - - - name: TC_IMAGE - value: 'gaiadocker/iproute2' - - - name: NETWORK_PACKET_LOSS_PERCENTAGE - value: '100' #in PERCENTAGE - - - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds - - - name: RAMP_TIME - value: '' - - - name: LIB - value: 'litmus' - - - name: PODS_AFFECTED_PERC - value: '' - - - name: TARGET_POD - value: '' - - - name: CONTAINER_RUNTIME - value: 'docker' - - - name: TARGET_IPS - value: '' - - - name: TARGET_HOSTS - value: '' - - - name: SOCKET_PATH - value: '/run/containerd/containerd.sock' - - - name: SEQUENCE - value: 'parallel' - - labels: - name: pod-network-loss - container: - image: lachlanevenson/k8s-kubectl - command: [sh, -c] - args: [ "kubectl apply -f /tmp/pod-network-loss.yaml -n {{workflow.parameters.adminModeNamespace}}",] - - name: pod-network-loss inputs: artifacts: @@ -642,14 +674,21 @@ spec: interval: 1 retry: 2 probePollingInterval: 1 + - name: "check-probe-success" + type: "promProbe" + promProbe/inputs: + endpoint: "http://prometheus.monitoring.svc.cluster.local:9090" + query: "sum(rate(request_duration_seconds_count{job='sock-shop/front-end',route='/',status_code='200'}[20s]))*100" + comparator: + criteria: ">=" #supports >=,<=,>,<,==,!= comparision + value: "500" + mode: "Edge" + runProperties: + probeTimeout: 5 + interval: 5 + retry: 1 components: env: - - name: TARGET_CONTAINER - value: '' - - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:latest' - - name: TOTAL_CHAOS_DURATION value: '30' @@ -658,21 +697,28 @@ spec: - name: NETWORK_PACKET_LOSS_PERCENTAGE value: '100' - - name: CONTAINER_RUNTIME value: 'docker' - - name: SOCKET_PATH value: '/var/run/docker.sock' container: image: litmuschaos/litmus-checker:latest - args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] - + 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"] + - name: load-test container: image: litmuschaos/litmus-app-deployer:latest args: ["-namespace=loadtest"] + + - name: delete-loadtest + container: + image: litmuschaos/litmus-app-deployer:latest + args: ["-namespace=loadtest","-operation=delete"] - name: revert-chaos container: diff --git a/workflows/sock-shop-demo/usingPromProbe/workflow_cron.yaml b/workflows/sock-shop-demo/usingPromProbe/workflow_cron.yaml index 1166f53..a0cf8c3 100644 --- a/workflows/sock-shop-demo/usingPromProbe/workflow_cron.yaml +++ b/workflows/sock-shop-demo/usingPromProbe/workflow_cron.yaml @@ -23,7 +23,7 @@ spec: - - name: install-application template: install-application - name: load-test - template: load-test + template: load-test - - name: install-pod-delete template: install-pod-delete - name: install-pod-memory-hog @@ -36,17 +36,23 @@ spec: template: pod-memory-hog - name: pod-cpu-hog template: pod-cpu-hog + - name: pod-network-loss + template: pod-network-loss - - name: pod-delete template: pod-delete - - name: pod-network-loss - template: pod-network-loss + template: pod-network-loss - - name: revert-chaos template: revert-chaos - + - 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", "-timeout=400"] + args: ["-namespace=sock-shop","-typeName=resilient","-operation=apply","-timeout=400"] #for resilient provide type flagName as resilient(-typeName=resilient) - name: install-pod-delete inputs: @@ -69,6 +75,8 @@ spec: - apiGroups: - "" - "apps" + - "apps.openshift.io" + - "argoproj.io" - "batch" - "litmuschaos.io" resources: @@ -76,8 +84,15 @@ spec: - "jobs" - "pods" - "pods/log" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" - "events" - - "configmaps" - "chaosengines" - "chaosexperiments" - "chaosresults" @@ -88,6 +103,7 @@ spec: - "patch" - "update" - "delete" + - "deletecollection" - apiGroups: - "" resources: @@ -104,19 +120,23 @@ spec: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: '15' + value: '30' # Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' # provide the kill count - - name: KILL_COUNT - value: '' - name: FORCE value: 'true' - name: CHAOS_INTERVAL value: '5' + - name: PODS_AFFECTED_PERC + value: '' - name: LIB - value: 'litmus' + value: 'litmus' + - name: TARGET_PODS + value: '' + - name: SEQUENCE + value: 'parallel' labels: name: pod-delete container: @@ -148,12 +168,23 @@ spec: - apiGroups: - "" - "batch" + - "apps" + - "apps.openshift.io" + - "argoproj.io" - "litmuschaos.io" resources: - "jobs" - "pods" - "pods/log" - "events" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" - "chaosengines" - "chaosexperiments" - "chaosresults" @@ -164,6 +195,7 @@ spec: - "patch" - "update" - "delete" + - "deletecollection" image: "litmuschaos/go-runner:latest" imagePullPolicy: Always args: @@ -173,29 +205,30 @@ spec: - /bin/bash env: - name: TOTAL_CHAOS_DURATION - value: '' + value: '30' - name: CHAOS_INTERVAL value: '10' - ## 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: '' - - name: LIB value: 'litmus' - - - name: TARGET_POD + ## It is used in pumba lib only + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + - name: SOCKET_PATH + value: '/var/run/docker.sock' + - name: TARGET_PODS value: '' - + - name: SEQUENCE + value: 'parallel' labels: name: pod-cpu-hog container: @@ -227,11 +260,22 @@ spec: - apiGroups: - "" - "batch" + - "apps" + - "apps.openshift.io" + - "argoproj.io" - "litmuschaos.io" resources: - "jobs" - "pods" - "pods/log" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" - "events" - "chaosengines" - "chaosexperiments" @@ -243,7 +287,9 @@ spec: - "patch" - "update" - "delete" + - "deletecollection" image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always args: - -c - ./experiments -name pod-memory-hog @@ -252,30 +298,31 @@ spec: env: - name: TOTAL_CHAOS_DURATION value: '30' - - name: CHAOS_INTERVAL value: '10' - ## enter the amount of memory in megabytes to be consumed by the application pod - name: MEMORY_CONSUMPTION value: '500' - ## percentage of total pods to target - name: PODS_AFFECTED_PERC value: '' - ## Period to wait before and after injection of chaos in sec - name: RAMP_TIME value: '' - ## env var that describes the library used to execute the chaos ## default: litmus. Supported values: litmus, powerfulseal, chaoskube - name: LIB value: 'litmus' - - - name: TARGET_POD + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + - name: SOCKET_PATH + value: '/var/run/docker.sock' + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + - name: TARGET_PODS value: '' - labels: name: pod-memory-hog container: @@ -286,6 +333,101 @@ spec: "kubectl apply -f /tmp/pod-memory-hog.yaml -n {{workflow.parameters.adminModeNamespace}}", ] + - name: install-pod-network-loss + inputs: + artifacts: + - name: install-pod-network-loss + path: /tmp/pod-network-loss.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 + spec: + definition: + scope: Namespaced + permissions: + - apiGroups: + - "" + - "batch" + - "apps" + - "apps.openshift.io" + - "argoproj.io" + - "litmuschaos.io" + resources: + - "jobs" + - "pods" + - "pods/log" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" + - "events" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + - "deletecollection" + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-loss + command: + - /bin/bash + + env: + - name: TARGET_CONTAINER + value: '' + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + - name: NETWORK_INTERFACE + value: 'eth0' + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + - name: NETWORK_PACKET_LOSS_PERCENTAGE + value: '100' #in PERCENTAGE + - name: TOTAL_CHAOS_DURATION + value: '30' # in seconds + - name: RAMP_TIME + value: '' + - name: LIB + value: 'litmus' + - name: PODS_AFFECTED_PERC + value: '' + - name: TARGET_PODS + value: '' + - name: CONTAINER_RUNTIME + value: 'docker' + - name: DESTINATION_IPS + value: '' + - name: DESTINATION_HOSTS + value: '' + - name: SOCKET_PATH + value: '/var/run/docker.sock' + - name: SEQUENCE + value: 'parallel' + labels: + name: pod-network-loss + container: + image: lachlanevenson/k8s-kubectl + command: [sh, -c] + args: [ "kubectl apply -f /tmp/pod-network-loss.yaml -n {{workflow.parameters.adminModeNamespace}}",] + - name: pod-cpu-hog inputs: artifacts: @@ -343,22 +485,17 @@ spec: components: experimentImage: "litmuschaos/go-runner:latest" env: - - name: TARGET_CONTAINER - value: '' - - - name: NODE_CPU_CORE + #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: '' # in seconds - - - name: CHAOS_KILL_COMMAND - value: "kill -9 $(ps afx | grep \"[md5sum] /dev/zero\" | awk '{print$1}' | tr '\n' ' ')" + value: '30' # in seconds + container: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] - - name: pod-memory-hog inputs: artifacts: @@ -416,15 +553,11 @@ spec: components: experimentImage: "litmuschaos/go-runner:latest" env: - - name: TARGET_CONTAINER - value: '' - name: MEMORY_CONSUMPTION value: '500' - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds - - name: CHAOS_KILL_COMMAND - value: "kill -9 $(ps afx | grep \"[dd] if /dev/zero\" | awk '{print $1}' | tr '\n' ' ')" - + value: '30' # in seconds + container: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] @@ -448,7 +581,6 @@ spec: appkind: 'deployment' annotationCheck: 'false' engineState: 'active' - auxiliaryAppInfo: '' chaosServiceAccount: litmus-admin monitoring: true jobCleanUpPolicy: 'retain' @@ -490,7 +622,7 @@ spec: components: env: - name: TOTAL_CHAOS_DURATION - value: '10' + value: '30' # set chaos interval (in sec) as desired - name: CHAOS_INTERVAL @@ -502,105 +634,6 @@ spec: container: image: litmuschaos/litmus-checker:latest args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] - - - name: install-pod-network-loss - inputs: - artifacts: - - name: install-pod-network-loss - path: /tmp/pod-network-loss.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 - spec: - definition: - scope: Namespaced - permissions: - - apiGroups: - - "" - - "batch" - - "litmuschaos.io" - resources: - - "jobs" - - "pods" - - "pods/log" - - "events" - - "chaosengines" - - "chaosexperiments" - - "chaosresults" - verbs: - - "create" - - "list" - - "get" - - "patch" - - "update" - - "delete" - - "deletecollection" - image: "litmuschaos/go-runner:latest" - imagePullPolicy: Always - args: - - -c - - ./experiments -name pod-network-loss - command: - - /bin/bash - - env: - - name: TARGET_CONTAINER - value: '' - - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:latest' - - - name: NETWORK_INTERFACE - value: 'eth0' - - - name: TC_IMAGE - value: 'gaiadocker/iproute2' - - - name: NETWORK_PACKET_LOSS_PERCENTAGE - value: '100' #in PERCENTAGE - - - name: TOTAL_CHAOS_DURATION - value: '60' # in seconds - - - name: RAMP_TIME - value: '' - - - name: LIB - value: 'litmus' - - - name: PODS_AFFECTED_PERC - value: '' - - - name: TARGET_POD - value: '' - - - name: CONTAINER_RUNTIME - value: 'docker' - - - name: TARGET_IPS - value: '' - - - name: TARGET_HOSTS - value: '' - - - name: SOCKET_PATH - value: '/run/containerd/containerd.sock' - - - name: SEQUENCE - value: 'parallel' - - labels: - name: pod-network-loss - container: - image: lachlanevenson/k8s-kubectl - command: [sh, -c] - args: [ "kubectl apply -f /tmp/pod-network-loss.yaml -n {{workflow.parameters.adminModeNamespace}}",] - name: pod-network-loss inputs: @@ -647,14 +680,21 @@ spec: interval: 1 retry: 2 probePollingInterval: 1 + - name: "check-probe-success" + type: "promProbe" + promProbe/inputs: + endpoint: "http://prometheus.monitoring.svc.cluster.local:9090" + query: "sum(rate(request_duration_seconds_count{job='sock-shop/front-end',route='/',status_code='200'}[20s]))*100" + comparator: + criteria: ">=" #supports >=,<=,>,<,==,!= comparision + value: "500" + mode: "Edge" + runProperties: + probeTimeout: 5 + interval: 5 + retry: 1 components: env: - - name: TARGET_CONTAINER - value: '' - - - name: LIB_IMAGE - value: 'litmuschaos/go-runner:latest' - - name: TOTAL_CHAOS_DURATION value: '30' @@ -663,21 +703,28 @@ spec: - name: NETWORK_PACKET_LOSS_PERCENTAGE value: '100' - - name: CONTAINER_RUNTIME value: 'docker' - - name: SOCKET_PATH value: '/var/run/docker.sock' container: image: litmuschaos/litmus-checker:latest - args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] - + 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"] - name: load-test container: image: litmuschaos/litmus-app-deployer:latest args: ["-namespace=loadtest"] + + - name: delete-loadtest + container: + image: litmuschaos/litmus-app-deployer:latest + args: ["-namespace=loadtest","-operation=delete"] - name: revert-chaos container: