From 82c8194444dc3dcde56ee1232cfb4c0ddce5221e Mon Sep 17 00:00:00 2001 From: Ishan Gupta Date: Tue, 8 Sep 2020 10:59:01 +0530 Subject: [PATCH] Added sample workflows for litmus-portal. (#308) * Added sample workflows for litmus-portal. Signed-off-by: ishangupta-ds --- .DS_Store | Bin 0 -> 6148 bytes cron-workflows/.DS_Store | Bin 0 -> 6148 bytes cron-workflows/node-cpu-hog/workflow.yaml | 55 ++++++ cron-workflows/node-memory-hog/workflow.yaml | 56 ++++++ service-accounts/argo-access.yaml | 29 +++ service-accounts/argowf-chaos-admin.yaml | 115 +++++++++++ service-accounts/litmus-admin-rbac.yaml | 37 ++++ workflows/.DS_Store | Bin 0 -> 6148 bytes workflows/node-cpu-hog/workflow.yaml | 190 +++++++++++++----- workflows/node-memory-hog/workflow.yaml | 191 ++++++++++++++----- workflows/pod-cpu-hog/workflow.yaml | 157 +++++++++++++++ workflows/pod-delete/workflow.yaml | 157 +++++++++++++++ workflows/pod-memory-hog/workflow.yaml | 158 +++++++++++++++ 13 files changed, 1056 insertions(+), 89 deletions(-) create mode 100644 .DS_Store create mode 100644 cron-workflows/.DS_Store create mode 100644 cron-workflows/node-cpu-hog/workflow.yaml create mode 100644 cron-workflows/node-memory-hog/workflow.yaml create mode 100644 service-accounts/argo-access.yaml create mode 100644 service-accounts/argowf-chaos-admin.yaml create mode 100644 service-accounts/litmus-admin-rbac.yaml create mode 100644 workflows/.DS_Store create mode 100644 workflows/pod-cpu-hog/workflow.yaml create mode 100644 workflows/pod-delete/workflow.yaml create mode 100644 workflows/pod-memory-hog/workflow.yaml diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d8adb82beeb517e7376c33534febb3e7290e8b64 GIT binary patch literal 6148 zcmeHK&2H2%5FT&0C5Ea>B@RX6V2J~lMcS&RdyTd&r%FYnq6dDqNt3csBfCnn&0)1t z!~^gE^h)79fQR5kxHDrLv}H>VJ)o-cNaJrZo*Bzuvi1%Du>L4n1@HmDLnUl+94--> zC!LX&^~@tOUE>MVprC+bIGTxej+@8;y}Kni#CN7Z!u0#g(NjYi*X2o^s~F>c#wU4J zR^9Fo)|zY2FWm9?UB1YdIDZokRUKAQH7fg2G4LOTS(3(4v7aT?a4(hHd3u`4-C`%I z(&7~b?*ZY}FRNYr2nUp%-7T5Oks2XA&{wO$T zG{4;A1Ak>a?scDb#M=7Cq$9??UbiFG*ES{-&bX;{cy$#)n>i}9)7isgE`)Fsn@6`%#3I0hU8j)7}2 zV2?cS-nFt_l4HOzaGM#R^Fg2z1{NEG`slzxw*ZK3bZbGIdI`!A76XfoL7YKhCKb`7 zGTUM>la792;{uC~L6Z*5HXqEc%xs6k^y*k&=x|_xK{q-E90L~_m@|()-T&MF?*A_) zxhKbfW8hXXz}j2kRv))y@79^k(OoN04^T-ct}*y01r2=_V=P_8E2vt~FUUX)EH(zw RgW~=OXd2w$82GOY`~m?Ae+mEq literal 0 HcmV?d00001 diff --git a/cron-workflows/.DS_Store b/cron-workflows/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4e206e153d8f5b723add252a73460ff341e35d2a GIT binary patch literal 6148 zcmeHKyKVw85Zomcpfr>z{R{kog~%8115tvKA}1_?fcColc4i-u4jqxGQiNG)J@$IX zmZ!MA6%kz>w@ZB{zLv)^@X_kmqpOrru+fC^9nDnJEpS0GF0?D2LAGpPU-xDy5J`%vJ9HL(x$ zPX`8X0f1A4-7xoF0$3~ntciUfA}|dqFsPa>h6Ww+l6f_;4-C4f-;8teX3Y*o{dUBQ zr;FA=j#PjOTq^Jo%Z1hdXZSDu|0RhlDnJGPl>$0lZ`Lb3DQoNKaaL;!{007F$n|s# lUW$QUim|X#{4~fbHphNV>;s*SxYL3B5inh7RNyZZ_y%Fm9Blvq literal 0 HcmV?d00001 diff --git a/cron-workflows/node-cpu-hog/workflow.yaml b/cron-workflows/node-cpu-hog/workflow.yaml new file mode 100644 index 0000000..6058a4d --- /dev/null +++ b/cron-workflows/node-cpu-hog/workflow.yaml @@ -0,0 +1,55 @@ +## Refer to https://github.com/litmuschaos/chaos-workflows.git to setup the argo infrastructure +## Uses admin mode of litmus execution + +apiVersion: argoproj.io/v1alpha1 +kind: CronWorkflow +metadata: + name: node-cpu-cron-wf + namespace: litmus +spec: + schedule: "5/10 * * * *" + concurrencyPolicy: "Forbid" + startingDeadlineSeconds: 0 + workflowSpec: + entrypoint: argowf-chaos + serviceAccountName: argo-chaos + templates: + - name: argowf-chaos + steps: + - name: run-node-cpu-hog + template: run-node-cpu-hog + - name: run-node-cpu-hog + inputs: + artifacts: + - name: run-node-cpu-hog + path: /tmp/chaosengine-1.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + kind: ChaosEngine + metadata: + name: node-cpu-hog + namespace: litmus + spec: + appinfo: + appns: kube-system + applabel: "k8s-app=kube-proxy" + appkind: daemonset + jobCleanUpPolicy: retain + monitoring: true + annotationCheck: 'false' + engineState: 'active' + chaosServiceAccount: litmus-admin + experiments: + - name: node-cpu-hog + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: "60" + - name: NODE_CPU_CORE + value: "" + container: + image: lachlanevenson/k8s-kubectl + command: [sh, -c] + args: ['kubectl apply -f /tmp/chaosengine-1.yaml -n litmus'] diff --git a/cron-workflows/node-memory-hog/workflow.yaml b/cron-workflows/node-memory-hog/workflow.yaml new file mode 100644 index 0000000..8f165ab --- /dev/null +++ b/cron-workflows/node-memory-hog/workflow.yaml @@ -0,0 +1,56 @@ +## Refer to https://github.com/litmuschaos/chaos-workflows.git to setup the argo infrastructure +## Uses admin mode of litmus execution + + +apiVersion: argoproj.io/v1alpha1 +kind: CronWorkflow +metadata: + name: node-memory-cron-wf + namespace: litmus +spec: + schedule: "0/10 * * * *" + concurrencyPolicy: "Forbid" + startingDeadlineSeconds: 0 + workflowSpec: + entrypoint: argowf-chaos + serviceAccountName: argo-chaos + templates: + - name: argowf-chaos + steps: + - name: run-node-memory-hog + template: run-node-memory-hog + - name: run-node-memory-hog + inputs: + artifacts: + - name: run-node-memory-hog + path: /tmp/chaosengine-2.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + kind: ChaosEngine + metadata: + name: node-memory-hog + namespace: litmus + spec: + appinfo: + appns: kube-system + applabel: "k8s-app=kube-proxy" + appkind: daemonset + jobCleanUpPolicy: retain + monitoring: true + annotationCheck: 'false' + engineState: 'active' + chaosServiceAccount: litmus-admin + experiments: + - name: node-memory-hog + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: "60" + - name: MEMORY_PERCENTAGE + value: "90" + container: + image: lachlanevenson/k8s-kubectl + command: [sh, -c] + args: ['kubectl apply -f /tmp/chaosengine-2.yaml -n litmus'] diff --git a/service-accounts/argo-access.yaml b/service-accounts/argo-access.yaml new file mode 100644 index 0000000..a417f5a --- /dev/null +++ b/service-accounts/argo-access.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: argo-chaos +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: chaos-cluster-role +rules: +- apiGroups: + - '*' + resources: + - '*' + verbs: + - '*' +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: chaos-cluster-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: chaos-cluster-role +subjects: +- kind: ServiceAccount + name: argo-chaos + namespace: litmus \ No newline at end of file diff --git a/service-accounts/argowf-chaos-admin.yaml b/service-accounts/argowf-chaos-admin.yaml new file mode 100644 index 0000000..668633c --- /dev/null +++ b/service-accounts/argowf-chaos-admin.yaml @@ -0,0 +1,115 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Workflow +metadata: + generateName: argowf-chaos- +spec: + entrypoint: argowf-chaos + serviceAccountName: argo-chaos + arguments: + parameters: + - name: appNamespace + value: "default" + - name: adminModeNamespace + value: "litmus" + - name: appLabel + value: "nginx" + - name: fileName + value: "pod-app-kill-count.json" + templates: + - name: argowf-chaos + steps: + - - name: run-chaos + template: run-chaos + - name: run-benchmark + template: run-benchmark + - - name: revert-chaos + template: revert-chaos + + - name: run-chaos + inputs: + artifacts: + - name: run-chaos + path: /tmp/chaosengine.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + kind: ChaosEngine + metadata: + name: nginx-chaos + namespace: {{workflow.parameters.adminModeNamespace}} + spec: + appinfo: + appns: {{workflow.parameters.appNamespace}} + applabel: "app={{workflow.parameters.appLabel}}" + appkind: deployment + jobCleanUpPolicy: retain + monitoring: false + annotationCheck: 'false' + engineState: 'active' + chaosServiceAccount: litmus-admin + experiments: + - name: k8-pod-delete + spec: + components: + env: + - name: NAME_SPACE + value: {{workflow.parameters.appNamespace}} + - name: LABEL_NAME + value: {{workflow.parameters.appLabel}} + - name: FILE + value: {{workflow.parameters.fileName}} + - name: REPORT + value: 'true' + - name: REPORT_ENDPOINT + value: 'none' + container: + image: lachlanevenson/k8s-kubectl + command: [sh, -c] + args: ['kubectl apply -f /tmp/chaosengine.yaml -n {{workflow.parameters.adminModeNamespace}} | echo "sleeping for 120s" | sleep 120 '] + + - name: run-benchmark + inputs: + artifacts: + - name: run-benchmark + path: /tmp/bench.yaml + raw: + data: | + apiVersion: batch/v1 + kind: Job + metadata: + labels: + app: nginx-bench + name: nginx-bench + spec: + template: + metadata: + labels: + app: nginx-bench + spec: + restartPolicy: Never + containers: + - args: + - -c + - /go/bin/main -r -c10 -t${BENCHMARK_DURATION} -n 10000000 http://${NGINX_SVC_NAME}:${NGINX_PORT_NUM}/; exit 0 + command: + - /bin/sh + env: + - name: NGINX_SVC_NAME + value: "nginx.default.svc.cluster.local" + - name: NGINX_PORT_NUM + value: "80" + - name: BENCHMARK_DURATION + value: "300" + image: devth/alpine-bench + imagePullPolicy: Always + name: nginx-bench + container: + image: lachlanevenson/k8s-kubectl + command: [sh, -c] + args: ['kubectl apply -f /tmp/bench.yaml -n {{workflow.parameters.appNamespace}}'] + + - name: revert-chaos + container: + image: lachlanevenson/k8s-kubectl + command: [sh, -c] + args: [' sleep 20 | kubectl delete chaosengine nginx-chaos -n {{workflow.parameters.adminModeNamespace}}'] \ No newline at end of file diff --git a/service-accounts/litmus-admin-rbac.yaml b/service-accounts/litmus-admin-rbac.yaml new file mode 100644 index 0000000..ab3751a --- /dev/null +++ b/service-accounts/litmus-admin-rbac.yaml @@ -0,0 +1,37 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: litmus-admin + namespace: litmus + labels: + name: litmus-admin +--- +# Source: openebs/templates/clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: litmus-admin + labels: + name: litmus-admin +rules: +- apiGroups: ["","apps","batch","extensions","litmuschaos.io","openebs.io","storage.k8s.io"] + resources: ["chaosengines","chaosexperiments","chaosresults","cstorpools","cstorvolumereplicas","configmaps","secrets","pods","pods/exec","pods/log","pods/eviction","jobs","replicasets","deployments","daemonsets","statefulsets","persistentvolumeclaims","persistentvolumes","storageclasses","services","events"] + verbs: ["create","delete","get","list","patch","update"] +- apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list","patch","update"] +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: litmus-admin + labels: + name: litmus-admin +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: litmus-admin +subjects: +- kind: ServiceAccount + name: litmus-admin + namespace: litmus \ No newline at end of file diff --git a/workflows/.DS_Store b/workflows/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..975c493d6a8048d091911b9322b01fd7872d314c GIT binary patch literal 6148 zcmeHKOHRWu5Pbths#*kHvh)SI;094uPQV2aO$CdTAW9ePe01J;hR{F+I~1WA$$s{D zKK7GhX8_3RP+tQJ08=(a(ZPVIdT{B)jn9ZuVl1)2GY(kdaUjqbRl4_cJfTI6E%*Jo z{}vDRe$(8yZNtOi^2lgM(;Z!2@K%oc#dJ;%G~N%QnE9CD&~;NF#2F180a%_YSV?j|2O<( z28;Z@OU#0SVBnuIAd~g&dc{Ne+xqQz`qn14J2n-y%Q~QN-1`aOMDLNSvS{l`$F!>) Wv!O;&eQ_tok3b