From c70e2508c627bfd5922a209fb81cb167c62a8a52 Mon Sep 17 00:00:00 2001 From: Akash Shrivastava Date: Fri, 15 Jul 2022 18:58:46 +0530 Subject: [PATCH] Chore[New Exp]: Charts for HTTP Modify Body (#557) * Added http modify body experiment charts --- charts/generic/experiments.yaml | 118 ++++++++++++++- .../generic/generic.chartserviceversion.yaml | 1 + charts/generic/generic.package.yaml | 5 +- charts/generic/icons/pod-http-modify-body.png | Bin 0 -> 12130 bytes .../generic/pod-http-modify-body/engine.yaml | 42 ++++++ .../pod-http-modify-body/experiment.yaml | 135 ++++++++++++++++++ ...-http-modify-body.chartserviceversion.yaml | 39 +++++ .../pod-http-modify-body/rbac-psp.yaml | 84 +++++++++++ charts/generic/pod-http-modify-body/rbac.yaml | 79 ++++++++++ .../pod-http-reset-peer/experiment.yaml | 2 +- experiments/generic/experiments.yaml | 116 --------------- .../generic/generic.chartserviceversion.yaml | 2 + experiments/generic/generic.package.yaml | 5 +- .../generic/icons/pod-http-modify-body.png | Bin 0 -> 12130 bytes .../generic/pod-http-modify-body/engine.yaml | 42 ++++++ .../pod-http-modify-body/experiment.yaml | 135 ++++++++++++++++++ ...-http-modify-body.chartserviceversion.yaml | 39 +++++ .../pod-http-modify-body/rbac-psp.yaml | 84 +++++++++++ .../generic/pod-http-modify-body/rbac.yaml | 79 ++++++++++ .../pod-http-reset-peer/experiment.yaml | 2 +- 20 files changed, 888 insertions(+), 121 deletions(-) create mode 100644 charts/generic/icons/pod-http-modify-body.png create mode 100644 charts/generic/pod-http-modify-body/engine.yaml create mode 100644 charts/generic/pod-http-modify-body/experiment.yaml create mode 100644 charts/generic/pod-http-modify-body/pod-http-modify-body.chartserviceversion.yaml create mode 100644 charts/generic/pod-http-modify-body/rbac-psp.yaml create mode 100644 charts/generic/pod-http-modify-body/rbac.yaml create mode 100644 experiments/generic/icons/pod-http-modify-body.png create mode 100644 experiments/generic/pod-http-modify-body/engine.yaml create mode 100644 experiments/generic/pod-http-modify-body/experiment.yaml create mode 100644 experiments/generic/pod-http-modify-body/pod-http-modify-body.chartserviceversion.yaml create mode 100644 experiments/generic/pod-http-modify-body/rbac-psp.yaml create mode 100644 experiments/generic/pod-http-modify-body/rbac.yaml diff --git a/charts/generic/experiments.yaml b/charts/generic/experiments.yaml index eb4d5ad..5bc26cf 100644 --- a/charts/generic/experiments.yaml +++ b/charts/generic/experiments.yaml @@ -1061,7 +1061,123 @@ spec: apiVersion: litmuschaos.io/v1alpha1 description: message: | - Drain the node where application pod is scheduled + it injects http modify body chaos inside the pod which modifies the body of the response from the provided application server to the body string provided by user and reverts after 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: latest +spec: + definition: + scope: Namespaced + permissions: + - apiGroups: + - "" + - "batch" + - "apps" + - "litmuschaos.io" + resources: + - "jobs" + - "pods" + - "pods/log" + - "events" + - "deployments" + - "replicasets" + - "pods/exec" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + - "deletecollection" + image: "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/go-runner:latest' + + # provide the body string to overwrite the response body + - name: RESPONSE_BODY + value: '' + + # port of the target service + - name: TARGET_SERVICE_PORT + value: "80" + + # 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: '' + + # lib can be litmus or pumba + - name: LIB + value: 'litmus' + + # 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: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.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: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kills the kubelet service on the application node to check the resiliency. kind: ChaosExperiment metadata: name: node-drain diff --git a/charts/generic/generic.chartserviceversion.yaml b/charts/generic/generic.chartserviceversion.yaml index 3041d24..42b5f2b 100644 --- a/charts/generic/generic.chartserviceversion.yaml +++ b/charts/generic/generic.chartserviceversion.yaml @@ -38,6 +38,7 @@ spec: - pod-memory-hog-exec - pod-network-partition - pod-http-latency + - pod-http-modify-body - pod-http-reset-peer keywords: - Kubernetes diff --git a/charts/generic/generic.package.yaml b/charts/generic/generic.package.yaml index 492f22f..799ffe0 100644 --- a/charts/generic/generic.package.yaml +++ b/charts/generic/generic.package.yaml @@ -75,6 +75,9 @@ experiments: - name: pod-http-latency CSV: pod-http-latency.chartserviceversion.yaml desc: "pod-http-latency" + - name: pod-http-modify-body + CSV: pod-http-modify-body.chartserviceversion.yaml + desc: "pod-http-modify-body" - name: pod-http-reset-peer CSV: pod-http-reset-peer.chartserviceversion.yaml - desc: "pod-http-reset-peer" \ No newline at end of file + desc: "pod-http-reset-peer" diff --git a/charts/generic/icons/pod-http-modify-body.png b/charts/generic/icons/pod-http-modify-body.png new file mode 100644 index 0000000000000000000000000000000000000000..5d13f6b2fde28f9f5851dda3b8508814821df434 GIT binary patch literal 12130 zcmV-oFP+edP)dwr$(CZQHhO+qP{?W@0;a_4=%I@7`dO`PX~Dv4UE3YWhEtqz!;y zJV}|TKOGZ z(Mq!6;bNs_RG6NXG9{Ntd0wRQw2_>MpEzhem7y1;Owk%C&#P3Oc9I7P6E|(As`QGK zDOw`sd5ap*LGmF?`~l#0oF7|HxG-gd4gD8d&~vUC0~T2@b)ya2Pr7keA3z`owRmYi z)uT5ewM-Hz&->JhPLLmA;`WBH|GWoXXPHo_n-1xk-$RPV_wYj_q7;;puk-CF(p`rh zbIdq&(F2b!1eN&d7&WJNBcV(ZDbIiD6Y5OoD2Om|dP3N7%8iy2jmXmazEYf&P3|Fe z(|^YID<7A&&3&|)Y{c#}Zn!+EWeU()>OddUe;>6nNu)ggqpzqBT~#|wZF2>&@u&-p z#u|{R)lcO~rIbXwR6my~Ge5uScmuW^cfroDtCA31re5?V{V%D@B$4v`pHk3Jx}{bg zvptAa2b`!gLXY$<)XSqqD&p5chL-nHZ(iY7En3*6f zOhO^$Ftu`sx^$n|pAH5n@kC#s+J~}}4=}jrq14pJg9j2L(y`6e_BC$+4c)2>wFyY_@ z&6A?z)RNwlGHH)YbJWWd@nzzq2(39O+I7aQTz-`V=^S;UPh?UQuaRj^q?d`88%@R; zuvz=0=nD0wuVhlB5}D>iBb7A@_Qgn-k(hre4DU#yE^E5~NGAXJ)RF9>5 z957ge(2)Byj?&TNQl==M=2X-?&5<(kdO{^miso*&L&xh+L-aJAvdLMBB4e7fP}4L= z&uPv^)oG4UnG}`bq-Yu^MR)XmEt4WMEuef6JSmcC&h>bm<_KPYNJYha#$wzW8?I}g z6s@FUGAWX2j`*8N(eUL~T+%)%+DPSPQk3}9oEk|!%@Hb-q8Q~wD`#$cmD@oj9@ZkbqcY8jusa_`)#c&sgI1G_*m+v>r06_#PQXc#Omj9x;WUT; zuRwt=I&_5u(N`2|;@RK5$<_t^j(;OBB zwT9_&?w0S@L&bcq{LW8}p?bbQ$|gm;{pxa3wECdtNzrW@Mk$i@q)4VYKeBfhz;7JM zzrY_eGc!}{V`gS%W@cvQyD)S9@r9WV!^u&Y;rIe(ierjxz4_G3ROwA-_1lqlf7+GR zRa1#=!D_dArs3P)u6B8xKnx})GL0JPyly5TMc-aEI4MAiR@H+P-A!-k4?UXMxM>c} zDOaX1e}7$N<==_)#beib-AqG@JZI1Q?)s1-di1!NgcQx8Iprsjop_X-aM32O+dUvf z;khI7FMt%$tEW{%issOqnO_eM>zrS19*h$02)iGoXgPhL7j+;-_k?vuSkLP_q$nB> zMops>&zVDW>MaSAQF40t_uUmzWMam5gMQGH8jvEp(Yf?5GQ0Ni^f9sR3&;Q$g63R5 zhvr0O865p%8)>y175?2l+KnMa^n|`hwA6tVt)+*(njkoYZ#&!pGYXn>AYKUXXaDY}n7#_555FdzeX52~v5Y~QiVfT{{;&fJLJvG3|irX7F( z_I*}ojA#xiqEGaSevPOx9T?W%2&?mM+y~f7RjL|U;A1~h10 zcX#K;M6c-AsBYVBrUph`?WzGS9jGX0y z2gL1nRvOZN^tFpd1Q__IK_XaT=6-zr1q)~nYfdh@ZcF(0x}P;Sq<8MSy2>?%&opkc zbFSPwbEt!T&)hI~KMD)3Mn>l3te=fcjM+p#8`52+=ZLwnYl4=c>A2OVUUq4 z)s4DjL=Q=k34GC)esx88b$!0z72jLUoEh0`+R26CHiwIotQ=l|n(@%QIOsn8?|0k*rMyrhnt%5?ulGLhpBq$- zboUpRW!u*-08{IN5&hS+wR`=ho&3-w9-8ll?uQ5Jzv?|W*}!<-y7#KV#{-?zA?Iye zkO61YmR$qnC76wHEH&5a19K#mYaUGqP8!H8avV&!fQsqH6xY@XWo z`{QZBFMmlOf5*Ls03K!3ZFg>mhr^er*{n$P(=e#J*6bK)2~b-y5gdb#lZuf>gIzj5 z@y(@mzjIhR&7xC}hrX2QzO*y$)`mlIpYqAO2k$vx_29@K-D9Y*j3wo7RUo~!Q=cDr z_`ZGe`oXKexiXH)+^s!>hXj2z`7k4&i@H25Bl;_BW{`-7x4XqdONNld?+7rb?}x++ z>=vb-miXok_wLjppk}A!fK_L=bou;dCv`?n#}+g_BQiDGoX#QHylt1!go|cGOD)0m zlz9NeCf_`9y+%X#V9+&@>_It(!{PlQo_frb+fjUPymwRX)w(6De=$uXdP2&b@Q0Q6 zsb#o1i}DcA(mpx(yIhv|P!`j8UihUI5(3&6#5KJTiuB7{w_;coyDq9R#Tu8cR2$C| z#m?_(|NG5{| z0nV4*n4QM+o~YB)0G%E)NaWyiH@aD^7bQ=*^xkym=d##gTT8D~GRFIj6W5yv=lf&{0HTbs*}UJ=&cpN0`V2#9YmBrDhN5F@y0t=Y#Cqdc<6O0=u~_n z&|lhemPN(BhPWO+_}IHD1wyheMa*^FokWK5go`)n#~E9(y$>ybB4-^z+_^`qp@0%Z zw*8(}y*ldlVj9ujgG7$Muzk>}oBW>r^X^}hU7Ph4RD%qLD~|(;m+{+ z5XR>8)Yz?w*Ll773C`QBMM*qxjf+nt&xt2sL`)q4$w4r(7^RVu^G%Q6U2G!)+Pg3b z>doeC{U+E=q_cl?)#gE6G2+mPROi|vL@~$r~B@DNee@G$NqAI|f6dGXCmsEe@j(MVDf}EbwoPf>xWU`amEj${8$K{HSjsHb~f}o?g==( zeb3myczy3eU{4fjbuoYe_jj-R?sFH#h+Y?fyOJo0pnCg{i)lp9v$3WPV*>ESEZPAT z9`loXYK$u+_fMPqZsfkR{(l2fj8o^@)r`{lEIT;E@g0>#O@D{Q^QM}v4;RVnGoKZW z%Bf+aF$Q0QB$uy|RQNGJy~ha{zdPQ?cu!^F@=b;Lp>0~XeV*%HG^B*$ybNw4+<<3? zwP^9s=LdV}%*hPnqJmh_-kyfLbs--AmoG*pr+|H-K$Bp_w@4Q1=SNeJ|p*WEt zs)MVx+Gj_@sr6ug6HctU*)y;AzPfn64;`|`J<7zA<>>K~LyhinA93IQ-)BROzaX6Q z3}US|>>800+BKxlmrPM#q|-BUsxd5!VMM@sx26g-ZGy(AD3lAV#EDQ7n5i$v zf5!%Pq6X7c7blpH$z`rWyQK3k{=PP zH+4ieL(X_EH;47l7sH6m#vH~@co>fKPQdFamUzHTy5_grT7~9NqGLmhz;Gv+U~Wg2 z4z69y^*XQjzDdBlngnGEoy={C(}x@Rn&7(m-j3*q1WXS1r~vusuv(9Y-aAM{mh9mn zYtyy5flXBP6?GY9UE>WIu*qvGjL_++g=3Xdu!T(qNLLc1 zYyD;7)yr?ny72Fcy55!%0qGqzNJLGgi(QkHTS^wfp(#UhvZ?313N$*1f+LGdR%|x&^4XyWQ{c#iGv1e zKG5SbV~uVa?wuNv&#&9U@csiEz2`nloW=EO#05T2w)TCU<#+IV4F=04Lw*_7-)qx| zmV~uBo%-Rl9scdS03? z5ZbXJm`mh44U@sxXwY3FW*-U< zdcz1N6~vVKnbcai1nu`o<>i3z`UVpl?hkxl6QEn!TD!da-u-FqA^DM!ABXkV+b|;F zyg#P!4Pe7Q&|_(;YqIu1QC{`Um5tE&GRC6=2CzgFlqWUfsN@Re*EUyEbAJpVc72^U zB3Me9#LOhU|ImgJ0q1Q?;)ICd>U01}+4=Yl3%CmxQ5u~wO+47EK)l}jCb}<2yUAA3x6brhO{vesiEx;JifkI<4Dj%-G)#N7u5T zep2g+jcdgZl0p}V44C&7Cl55f>DUF;YFn1C+Y#YOoz@Y3QW-fJ7_~_w0?NBN*@00k zb=rs^h3(jjCHk7wlC)Tq+!yYkHue%xJodg4Wr1(hK?*RuShDQ=OW5ODa%z^iS_`2%z#tz0Jh90k-AiWz4p$x)zM@UVrNp8ThC89o8gA^uyKSj~Z zH|cNF%x3&cNo#qRi}A5bI>)8qczRS=4aGx1d5Hk;#htLLOUkxH5c|C_JaE6Q30LMD zC#(nX9Hl^%Tzi1d;9~c2q471`D5>}Z&)Fz7Kd}LcfpI!OG?WOmNS6}~o>7G-@Q!E$ zO@K}h&jgKbOowNmuBhGQMw~!)Bt=3s6P=F~XVP|R?&J%;2&_7JFHzzNXlM8S?CIw3 zWhFJuO`1G_)l*b|d@x$~$G8?vcy$G3)>A*l;Jd3Y6(xp4n=&F`ykDkufR7#C-Eoqx z3%tL?1|&(MLi#U-p*WK>=Wv1UZ=1+a^ioQJeyO5w57z}<;Qh(z!$XjIZ-nkk{G`SP zGZ>9PR`A&KH0$<2g3CNo!B)vqus~ibSEB=tYWC5CBdY z6}N2S*h|LENqYQ6n?mZknW8du{%6DK;nZ1LQQPvpbw$%(M>pQcwv>Z~xtT8yYr>=g zFkT`+dtFXh?suldN^MBGJ<6lE`V7 zXA>shjJ7bI5dq-=<0YbFagVOLaxv3VPq6*eDq2z~ibcU@S!4;dLX18!-0SjY$Ddx) zU6+nNY-XBum9%#>(cD>Q6M%Jk)LE`f%7)6^!!N6KFNyF=$E_Fqs zqpNs2zs0k?_kkzt@51_blNix6fD;npK%l+O#zWk$nyG2L*pa`jn5Z3<@2rU1bDG_+Ar-wCmJoL#yBEWjl{pq4RXGm3DQ8W}Fk8|Rg zG;v{2yuMG%lYTxc+=p?;bYgkJ%TPl)UtgrxT+WPqJlaI55dq(wG)M$kudDG87))JK z_;iXzJA4G)A2WIE`S-}QQtU=Y+ehgS(k0Hm%KnxU!}^Qk7|}lk!b|CQ-xEgyb`+%` zGvw@*GJ++IBY65Yx!lb@5MU+;jNPQ4EI+-X43fJFGEKzN|0{9MZ#6Yt- zFzO@1DvpQVK1c)#09dc9M=_{NT{$bpLrqPmc&~o_^|8p?Rgnb18y;QY##&DFL)CSo zKht3dkP^u+Zq26c-xh77#E1?VBm$(zTDuC}5VY2neVUE!qC(6f z$D%TeC7TrK}@ z*B^%;&S0(E#!;K!wb(wURhV>-JYYsk2mT0LPUKQD2WX zGTMlM?SSsmcXt?p8y}*!f|{L{$V5EE#wPUnFRpGZJcVN3Z5$?Cbn-%vl*(mcEX*sv zu~G~fr+V~zPhMioo5)T6xNrihN@aGqf z1wR^tM;dg00+FS3&n^p49K~WuizkH>+UJ*?QjxL9eXVK4ike+DBF{VM`|=#~lcWEs zVJ#RBeJs-l5<#akVMN#eK4(Pv(?*;ketORVtHmMG*DC%K0Z*HntZ~|9_cjd$(&nLK zRXGE}ij;Wnl*$_s+OML)&7I~fta8mi8f~S@h=A;lA0z@}6?e*6aObpWKR(h;rKipP zqv~awv~XkV(K4}3`nDyxx@^W%jEQUpt)jb4{FaV3uAV#p1otd+O2t_}GPrf!InS%> zgW*ix$jI^RWRwvB*ej95VvE)0 zfPPABLa8Pt)@XH7x|m0+i9+@BLUWy3Pb6JoU=lWU1eICGhk(TqpgC9ly0HH7C?k3} zd}6X|blQK7MkHk_by}B|Q!^RGRdbQfG#Nm#a2ldn?L&vuAB^R7@NZ(8XsIbf7Yk#lPj1Fe?MV(?4<~?H zO9w=JBki7zJyMs`h9SGw5y6Bcy0>;KX35(9_6un2tpOFKqj0m{yvV?y* zGFNu~$MVZjdG%cwhYT4vNe#;HQ%K%3{8`Mwh3mOEMKdREXE{4^u`xUO+c_ipAHs#S zdFvHl?26L8o>Kv5=jue>?PC&I@oSu~DQ{UfRtKnjPf8sO;qd@z7WEY&g@ocx#E3 zv;)LZ@v=MG24vR66LaaO>-wXB|C34v1A24_9%0sU1t z$n;g;I%)Ahr*4uZLBRUe5v11DL%>l!8m20^o?}AS;rRhUfy`a)qD!KqbzP|4fQz_3 zb(|?*p%Yr_8Bd;!q|~%F3Vwd4SchDfYdq^0_nJ1y-5Y#3r2XF5`un~PI zd4UswrMG?xIkv(1r|t5XZV=rbaTX#IE+kjNO^hr@sj<{(S+Hv^IvT?6jhkUXPa-j{ z_}j#t+8cmSwSHq#LR15k345qJcpKx|HPubdrq=pt#17a)Mn1%TBIxwk#b#vj!?`>+ zX~UhOIAK6&UKGIYgM1DJa z$jGtmCo-L0olZ;mz`^Z;PAS(*zOrHx5G8+EKM%MMe_1VM93yhdL}O`%3Fnx&gWIm_XctH$L%gmXmSmcUR@>bBG&8CwJvU1Sd_ zn0wR0Z!06qWNfIY{?|M17 zI-l)&0aTSeBs0LClH`*=d&Y}NTTq3ZKaLUIFi7O6;093E#WEy){a;$PPGwkX)$RiL zYFDz$lm_=+uW_u1&R0ux!#kQ-Yg}ZxY@r$y?40qLV;7da7ZPA;!>5oyyTq8kxUAfm z<8y~zH?4sS&n0A7A3S7@(_zsJh&>ooosksG8b!vK@OfiQ9hW3gi?VZ5e#R)>E`A)Vo+69Z)bH|4WabpZYl`-IXoHEK=dk-8 zPphTf;Cf%ph|)7kMYzDiyNkfZ4NxF>+$d~g4@a@HRJbY71d5^YIwG&ZXOCGcBRMD( zr)*OgNT+o%O)}-{yFR&o$drt1VnituxiJ}?X7_2yZemzK$hbDqo&f0Rk+pU=lzow$JNzHd92yr72`75&Wzm3h|YXK5p(-488J7# z_oor=={r{KDCIjyMv#<`SGnT0@&-YfNPK4txl`PVLQ#;OxHk-6c*(}FW}~cU?@u9i z09;%}n|3-Q`mlU=wIAL8T?9Iul(=T`tT4w$cX+A&~}as%|o4q(+H{oXtF@G28`7T;)Xj>3Po9= ztrT+#Qm%bv$Zagtjx zXZFp1+|C`ONJV%+21p80z(ruuI0d6ru_*%1fZD(3{*g78-ng~6$SX5C0~t9rwotpQ zOy=w#0jSnPlqYhXn%@lp=?u7ZGG1e4wtjZgR;>_q6whlwlZt1w3i=CoY~O`ms}v0Z zTUh72+%vs8bO(>35d2Sul!GBk*k$To|OC zcHq)e6=J>j$prVthWm%=I^Qxpja3Y&{{h@8i@~~OYvc**wGlxioc)XO8p#yf@D=0~ z@Zs-|zH@ys7w9n)(CJ31+rsI5@OHNzwb8*nt&TMj%dkvRT7*tD)o?(A}By9P^I@yxNGXG;&v2qXT$aF zk^Bb93KUl3G|0)uy*k!}dL28Di~~)Od}PLevWE0p_d4T#Xnga9eLt>|a+GD!5)zjW zAG(Iy;>MTu)(~@#oL)`!Wg$^1CNUXq0e}5>Rt>JfAUh`F{8P!~^BykGQ(~x!ok_;% zRe1x-8`572>x*3IT;K>{JOlBO*dQptc+EZ=!+lV}H*5B9 z*%aXVxTY{+dXDsNjUyCp|FbsqJq~gY#g|p6dk^<>`Qcs}NeJ$jRqe#;4V0koJI`L> zWEGf?%Qkb#4O>t*l?35}_BNDGP+wHbaeAu6kNNv05!%P|q`Vx+Pm@D)s66p0S}-@{n(zyq;0FEi#d@cGi1DLdvzB zu$(?TZ$RaSB%s=m^M{cfKDhsg28P7FDXk%u!iZXBm5m*}5Zi5T1Pn;IV+Ill*mtX3 zaRl5ipTK~!Q^f^Vsjncls&#oL5)F~k7>!obV#E1d!0-LSC3!c_+)NrU^pyo3|t5g zF;7QaPNEq3D4eD*49Mwkp18ho##OyE5+ZoJX8@TkJ35Ld;;69xRx<{ax^)69fmTLv zSPRgW%s@A+r3nk%sYwyUuMO#K!*mfV+6iSj#THJ%7}vzH_UVd7=XGB1L;%M!CGd#Q z!3$NgYJKy=obkVX=alst75fetCmCT+@d1Z~<2Z31Y$z(C@l|F)32m zZ3XJwBkr(_8Ut|u#AVX%PDAY*YFYmK)#KJHbeq_qqK;0>I7%l@tGsr;Lqnc>G7GH@ zkm(BDRX;bZhb9Kpnjs0e*5y*B`}Mu>mKc(j>O({O0A-(sOl# zGh@}Jvo@@kv}!<^M1#Ozk2_L0NZ%*1ojxjUjq>X5MhMrRBtaq9$V=U36# z3h?@TB59id{~xuJFS}q9_>JH^PJTm@ueBZkl~T8wCWn~=!#e+(Erai#vcaG%aRJ3b zQLLDYWPVU3-Ukh_wCC;r*Z*!?B>+9Ff04RzT{9$HT(?&BpFF0giG~;t`?B!_`dC*4h}04NabssegIA3uC;m5V@dGr0cVqSOyKYvZU)9~Y^s8=d!W}v#i-{_f26jc(UQ_ttEAw|C; z55Hnn`zMKnnKGn*DkD6|h`>;QNGUrxqcf4MGXmC(yySU?qcn}*jW`YpgA$G@699< zX5Ntg8fxksp^bhW*sdwX8He`6`Q%_M`%@>GggpXXNjNs@0nKE5^gp411{pDnRQrI3Hx+K~pj7YNZ#DF^-W-jE{PLMIpp+gA z)iJ>B*N$J0B}dI{YR|y)zwo-sM8b9SXEx)YazlECz%bX+d`#H+rB;_tCzu^ZPe=E1 z=GT%0Ek3100^@ZGRy8p$|G({>1F#%H7=&XxDJw>qv0035+bqSlZQHhO+qUlA^V{?v zJu#C5LD$$p0*#a& zOj897AHRpmt5QGt5)iDjY@>D0*dxGHkX~&d8YvIhX()96Rmh()jWm+ux03RX=>gVT zqa7d*4Wu`bPz+pG&b+_@v(g}a&_JAVd*TG1;cIja6pP3h8k4c+71_^DvZy*{eEf@o0J-q*l18c8&pLssA&^f3#*5j*786<>(F(9pP z3`8U402>U2p1cb+8jZ0+BM-0i$S|^}SPzXhfE+ZCZ?|;?zy(90b9aMKu*jgnmqCL3 z{^#^v-xojuYi#3aq;lYevI^#cTgoo@Me@NGPJVa!{WW?4%F{sBGEz(ML)8<9IY=_O zJaPyyF}>VH+ENc*aqHd&{RFLOAnO?^4HyZO4S(pGmchajvnqxIlSH5#>MY%L0~US$ z-5aP;7#IoC&_LESQg*P`(@-ucL+=kWVXuzq50TYSByq^^Cqvp~iuu6BU!)^0a%PZP zYe9Az$lBYweBdn5N~VCzwG)}1J$KiS-<4cLR)Q5^W&9ax2CE_&W-`M)u{v(X;w9>W zJwIf-Ea_Y1balPXf_(Pa#?eS6z&&6cQTIRz8pvKoDhsXw%J;ek%F;mgG*VHp9s~i( z`w9Z + it injects http modify body chaos inside the pod which modifies the body of the response from the provided application server to the body string provided by user and reverts after specified duration + keywords: + - "pods" + - "kubernetes" + - "generic" + - "exec" + - "http" + - "response body" + platforms: + - "Minikube" + maturity: alpha + maintainers: + - name: Akash Shrivastava + email: akash.shrivastava@harness.io + minKubeVersion: 1.12.0 + provider: + name: Harness + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-http-modify-body + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-http-modify-body/ + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-http-modify-body/experiment.yaml \ No newline at end of file diff --git a/charts/generic/pod-http-modify-body/rbac-psp.yaml b/charts/generic/pod-http-modify-body/rbac-psp.yaml new file mode 100644 index 0000000..2869bde --- /dev/null +++ b/charts/generic/pod-http-modify-body/rbac-psp.yaml @@ -0,0 +1,84 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-http-modify-body-sa + namespace: default + labels: + name: pod-http-modify-body-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-http-modify-body-sa + namespace: default + labels: + name: pod-http-modify-body-sa + app.kubernetes.io/part-of: litmus +rules: + # 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 comands 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"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-http-modify-body-sa + namespace: default + labels: + name: pod-http-modify-body-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-http-modify-body-sa +subjects: +- kind: ServiceAccount + name: pod-http-modify-body-sa + namespace: default diff --git a/charts/generic/pod-http-modify-body/rbac.yaml b/charts/generic/pod-http-modify-body/rbac.yaml new file mode 100644 index 0000000..584be62 --- /dev/null +++ b/charts/generic/pod-http-modify-body/rbac.yaml @@ -0,0 +1,79 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-http-modify-body-sa + namespace: default + labels: + name: pod-http-modify-body-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-http-modify-body-sa + namespace: default + labels: + name: pod-http-modify-body-sa + app.kubernetes.io/part-of: litmus +rules: + # 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 comands 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"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-http-modify-body-sa + namespace: default + labels: + name: pod-http-modify-body-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-http-modify-body-sa +subjects: +- kind: ServiceAccount + name: pod-http-modify-body-sa + namespace: default diff --git a/charts/generic/pod-http-reset-peer/experiment.yaml b/charts/generic/pod-http-reset-peer/experiment.yaml index 0b93b57..ec36fc5 100644 --- a/charts/generic/pod-http-reset-peer/experiment.yaml +++ b/charts/generic/pod-http-reset-peer/experiment.yaml @@ -1,7 +1,7 @@ apiVersion: litmuschaos.io/v1alpha1 description: message: | - it injects http reset into the pod which stops outgoing http requests by resetting the TCP connection and then reverts back to the original state after the specified duration + 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 diff --git a/experiments/generic/experiments.yaml b/experiments/generic/experiments.yaml index b2e295d..1f0811d 100644 --- a/experiments/generic/experiments.yaml +++ b/experiments/generic/experiments.yaml @@ -1222,122 +1222,6 @@ spec: app.kubernetes.io/runtime-api-usage: "true" app.kubernetes.io/version: latest ---- -apiVersion: litmuschaos.io/v1alpha1 -description: - message: | - it injects http reset into the pod which stops outgoing http requests by resetting the TCP connection and then reverts back to the original state after the 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: latest -spec: - definition: - scope: Namespaced - permissions: - - apiGroups: - - "" - - "batch" - - "apps" - - "litmuschaos.io" - resources: - - "jobs" - - "pods" - - "pods/log" - - "events" - - "deployments" - - "replicasets" - - "pods/exec" - - "chaosengines" - - "chaosexperiments" - - "chaosresults" - verbs: - - "create" - - "list" - - "get" - - "patch" - - "update" - - "delete" - - "deletecollection" - image: "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/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" - - # 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: '' - - # lib can be litmus or pumba - - name: LIB - value: 'litmus' - - # 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: 'docker' - - # provide the socket file path - - name: SOCKET_PATH - value: '/var/run/docker.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: latest - --- apiVersion: litmuschaos.io/v1alpha1 description: diff --git a/experiments/generic/generic.chartserviceversion.yaml b/experiments/generic/generic.chartserviceversion.yaml index 83546a5..f764798 100644 --- a/experiments/generic/generic.chartserviceversion.yaml +++ b/experiments/generic/generic.chartserviceversion.yaml @@ -63,6 +63,8 @@ spec: description: "" - name: pod-http-latency description: "" + - name: pod-http-modify-body + description: "" - name: pod-http-reset-peer description: "" keywords: diff --git a/experiments/generic/generic.package.yaml b/experiments/generic/generic.package.yaml index 492f22f..799ffe0 100644 --- a/experiments/generic/generic.package.yaml +++ b/experiments/generic/generic.package.yaml @@ -75,6 +75,9 @@ experiments: - name: pod-http-latency CSV: pod-http-latency.chartserviceversion.yaml desc: "pod-http-latency" + - name: pod-http-modify-body + CSV: pod-http-modify-body.chartserviceversion.yaml + desc: "pod-http-modify-body" - name: pod-http-reset-peer CSV: pod-http-reset-peer.chartserviceversion.yaml - desc: "pod-http-reset-peer" \ No newline at end of file + desc: "pod-http-reset-peer" diff --git a/experiments/generic/icons/pod-http-modify-body.png b/experiments/generic/icons/pod-http-modify-body.png new file mode 100644 index 0000000000000000000000000000000000000000..5d13f6b2fde28f9f5851dda3b8508814821df434 GIT binary patch literal 12130 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 + it injects http modify body chaos inside the pod which modifies the body of the response from the provided application server to the body string provided by user and reverts after specified duration + keywords: + - "pods" + - "kubernetes" + - "generic" + - "exec" + - "http" + - "response body" + platforms: + - "Minikube" + maturity: alpha + maintainers: + - name: Akash Shrivastava + email: akash.shrivastava@harness.io + minKubeVersion: 1.12.0 + provider: + name: Harness + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-http-modify-body + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-http-modify-body/ + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-http-modify-body/experiment.yaml \ No newline at end of file diff --git a/experiments/generic/pod-http-modify-body/rbac-psp.yaml b/experiments/generic/pod-http-modify-body/rbac-psp.yaml new file mode 100644 index 0000000..2869bde --- /dev/null +++ b/experiments/generic/pod-http-modify-body/rbac-psp.yaml @@ -0,0 +1,84 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-http-modify-body-sa + namespace: default + labels: + name: pod-http-modify-body-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-http-modify-body-sa + namespace: default + labels: + name: pod-http-modify-body-sa + app.kubernetes.io/part-of: litmus +rules: + # 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 comands 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"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-http-modify-body-sa + namespace: default + labels: + name: pod-http-modify-body-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-http-modify-body-sa +subjects: +- kind: ServiceAccount + name: pod-http-modify-body-sa + namespace: default diff --git a/experiments/generic/pod-http-modify-body/rbac.yaml b/experiments/generic/pod-http-modify-body/rbac.yaml new file mode 100644 index 0000000..584be62 --- /dev/null +++ b/experiments/generic/pod-http-modify-body/rbac.yaml @@ -0,0 +1,79 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-http-modify-body-sa + namespace: default + labels: + name: pod-http-modify-body-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-http-modify-body-sa + namespace: default + labels: + name: pod-http-modify-body-sa + app.kubernetes.io/part-of: litmus +rules: + # 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 comands 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"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-http-modify-body-sa + namespace: default + labels: + name: pod-http-modify-body-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-http-modify-body-sa +subjects: +- kind: ServiceAccount + name: pod-http-modify-body-sa + namespace: default diff --git a/experiments/generic/pod-http-reset-peer/experiment.yaml b/experiments/generic/pod-http-reset-peer/experiment.yaml index 0b93b57..ec36fc5 100644 --- a/experiments/generic/pod-http-reset-peer/experiment.yaml +++ b/experiments/generic/pod-http-reset-peer/experiment.yaml @@ -1,7 +1,7 @@ apiVersion: litmuschaos.io/v1alpha1 description: message: | - it injects http reset into the pod which stops outgoing http requests by resetting the TCP connection and then reverts back to the original state after the specified duration + 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