From 64a680dcdf17047983fe9da42eff6e8c92f26179 Mon Sep 17 00:00:00 2001 From: Laszlo Fogas Date: Mon, 15 Feb 2021 16:22:51 +0100 Subject: [PATCH] HA --- charts/onechart/Chart.yaml | 2 +- charts/onechart/templates/deployment.yaml | 17 +++- charts/onechart/templates/pdb.yaml | 12 +++ .../tests/deployment_affinity_test.yaml | 27 ++++++ charts/onechart/tests/pdb_test.yaml | 11 +++ charts/onechart/values.schema.json | 14 +++ charts/onechart/values.yaml | 4 +- docs/cron-job-0.1.2.tgz | Bin 1928 -> 1929 bytes docs/index.yaml | 80 ++++++++++-------- docs/namespaces-0.2.0.tgz | Bin 3379 -> 3378 bytes docs/onechart-0.13.2.tgz | Bin 5907 -> 6296 bytes docs/onechart-0.14.0.tgz | Bin 0 -> 6295 bytes 12 files changed, 128 insertions(+), 39 deletions(-) create mode 100644 charts/onechart/templates/pdb.yaml create mode 100644 charts/onechart/tests/deployment_affinity_test.yaml create mode 100644 charts/onechart/tests/pdb_test.yaml create mode 100644 docs/onechart-0.14.0.tgz diff --git a/charts/onechart/Chart.yaml b/charts/onechart/Chart.yaml index ff54c0e..c5c9c97 100644 --- a/charts/onechart/Chart.yaml +++ b/charts/onechart/Chart.yaml @@ -15,4 +15,4 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.13.2 +version: 0.14.0 diff --git a/charts/onechart/templates/deployment.yaml b/charts/onechart/templates/deployment.yaml index 9dcfee0..92e51ef 100644 --- a/charts/onechart/templates/deployment.yaml +++ b/charts/onechart/templates/deployment.yaml @@ -103,9 +103,22 @@ spec: nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.affinity }} + {{- if or .Values.spreadAcrossNodes .Values.affinity }} affinity: - {{- toYaml . | nindent 8 }} + {{- if .Values.spreadAcrossNodes }} + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: "app.kubernetes.io/instance" + operator: In + values: + - {{ .Release.Name }} + topologyKey: "kubernetes.io/hostname" + {{- end }} + {{- if .Values.affinity }} + {{- toYaml .Values.affinity | nindent 8 }} + {{- end }} {{- end }} {{- with .Values.tolerations }} tolerations: diff --git a/charts/onechart/templates/pdb.yaml b/charts/onechart/templates/pdb.yaml new file mode 100644 index 0000000..b968463 --- /dev/null +++ b/charts/onechart/templates/pdb.yaml @@ -0,0 +1,12 @@ +{{- if and (.Values.podDisruptionBudgetEnabled) (gt (.Values.replicas | int64) 1) }} +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: {{ .Release.Name }} + namespace: {{ .Release.Namespace }} +spec: + minAvailable: 1 + selector: + matchLabels: + {{- include "helm-chart.selectorLabels" . | nindent 6 }} + {{- end }} diff --git a/charts/onechart/tests/deployment_affinity_test.yaml b/charts/onechart/tests/deployment_affinity_test.yaml new file mode 100644 index 0000000..7f567ee --- /dev/null +++ b/charts/onechart/tests/deployment_affinity_test.yaml @@ -0,0 +1,27 @@ +suite: test deployment +templates: + - deployment.yaml + - configmap.yaml +tests: + - it: Should spread pods across nodes + set: + spreadAccrossNodes: true + asserts: + - equal: + path: spec.template.spec.affinity + value: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: "app.kubernetes.io/instance" + operator: In + values: + - RELEASE-NAME + topologyKey: "kubernetes.io/hostname" + - it: Should not spread pods across nodes + set: + spreadAcrossNodes: false + asserts: + - isNull: + path: spec.template.spec.affinity diff --git a/charts/onechart/tests/pdb_test.yaml b/charts/onechart/tests/pdb_test.yaml new file mode 100644 index 0000000..cb5dfd9 --- /dev/null +++ b/charts/onechart/tests/pdb_test.yaml @@ -0,0 +1,11 @@ +suite: test prometheus rule +templates: + - pdb.yaml +tests: + - it: Should set Pod Disruption budget + set: + replicas: 2 + asserts: + - equal: + path: spec.minAvailable + value: 1 diff --git a/charts/onechart/values.schema.json b/charts/onechart/values.schema.json index 0794698..8eb977a 100644 --- a/charts/onechart/values.schema.json +++ b/charts/onechart/values.schema.json @@ -96,6 +96,20 @@ 1 ] }, + "podDisruptionBudgetEnabled": { + "$id": "#/properties/podDisruptionBudgetEnabled", + "type": "boolean", + "title": "Pod Disruption Budget", + "description": "If pod disruption budgets is enabled, node maintenance won't affect the availability of your application", + "default": true + }, + "spreadAcrossNodes": { + "$id": "#/properties/spreadAcrossNodes", + "type": "boolean", + "title": "Spread pods across nodes", + "description": "This setting prevents pods to be placed on the same node", + "default": true + }, "nameOverride": { "$id": "#/properties/nameOverride", "type": "string", diff --git a/charts/onechart/values.yaml b/charts/onechart/values.yaml index ddab57c..1f4f146 100644 --- a/charts/onechart/values.yaml +++ b/charts/onechart/values.yaml @@ -29,7 +29,6 @@ nodeSelector: {} tolerations: [] -affinity: {} probe: enabled: false @@ -51,3 +50,6 @@ debugSidecar: image: debian:stable-slim shell: "/bin/bash" command: "while true; do sleep 30; done;" + +podDisruptionBudgetEnabled: true +spreadAcrossNodes: true diff --git a/docs/cron-job-0.1.2.tgz b/docs/cron-job-0.1.2.tgz index 686ecf93b0f1702a45267e109541bfedf6558ba6..27cbeca888d7c130b46d18909a219a1f8dc8dd41 100644 GIT binary patch delta 1442 zcmV;T1zq}x4~Y+usDDvBJ{}*$qw&ef=>fz$m!tlR=nsFEX?Ip#n(kKhH&P@rNIeng&EXqi;7l%)bv6r53F$pio? z7F;fK6h=qzH>9N02tp2|rB4JX%rT#$vgG0KMXg30jiPbz)Q0^+U={xh!b{YjB>_AX|HtuhC;pE{N0V9s+kZ!=<9+-;2E4s^ zc>zoqCBX*DQ;V~QM~0sG|80)EK&2y7?4}fWApVagr{hliACFIu_VNE1aD6>|1`C!a zpwU3aINHkk+uWLk&M|>!!`s`yVg=t_6-1=2NVf+y$jp7a(mx6+yaA+`F@X@yk>>+H zY0*O%tPx1b4Me`>Jb$;eqIbUhY*qkp14fmC!pV{QWcg*8W$X&VK?oHs6si660-h-( z27#I%B*%zqGha%s>}NzlnmMGEm5o=*ntT3PYICRe#Im#+ZRW80RoWD7BSS z198Gv(%xs=x^7zAmt`w+c8jXoYP$+z3@=~~8>Av}@jjkl6tTg%xR z{7B&n#e~Tq{7MhL(qV^|XS%(I^?$bfuCbvuPO5&?Zl>GR%0oOBCsXA2Z>;-&y{lbq znuhk@RUZ#GwttrAgd&804k7$4{P;kUc`k()Qr|12NAXhH;YiPiZYF{2YhZ%%GVN6> z@{D^?bXAo9QW1|DUQ_A%q9|&0Z*K!q6w&)tutrP{SC;|T*F8&a;6o`5c68sQk`qB@ zm=2~(PpI~wOH>O+yX(E}>W*R?>va_!^h)7xKJKuU4}blrUw$UEA%bFC`euOj`EfVF z>q=WfsVs%N3@SA~pqN|o!ml{LD?PQ*BI@~fj)|}P)Lv)3=$pI9iKd>7yigMktB-Ii z0voaa)F=0Dpr`($QewVA{|4NFV<#cyf!4Jg$ zWOOpw=>PWjzmEgWK%Wvr=flNliiWIW-aEs8Q-8$U#>y^TUqxF^^$}hTHe(tEvQ~e{;Mylm6wueh#6aZv|aZLN?s1&qR3I$!hmYmUL0^dtDWvQiWh%!vfULr|3 z6L^VKic}{s8pi>^?{fOK3M;Q`ExHBMn(5BgmidF3`ARu=S^v7^{LftNJ*dzrTC0DK3sjBis*^+2VL7+!nS*UkD)f?@h>k?_3Y9wnaBB@Vl5;u zb9`lc1Kn>zUxKWx=j$siHFY|u#9d)G)5A%d zYNgUi=Rvcl&1`5B2{i waku}UOvaPv27e+H@85qP2aI*w{fWGXJ?vo*|99}800030|1?r2pa3!e04RdZC;$Ke delta 1441 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 o_r{S$o$`Woy@^N zV#3QLsFhaMci$qx0|aq#4qYK0Yz@(D0FCZnH-RP*qX_3I@^C)??h<9hxj|9*V!y?8 zUH4?Qs{VIfm;c{goUUFhR_@JU2r!U;a(a~c00^B|KLw{I`oS^K5yK`Io;GRf9 zY48iq@*s)VaJ962oO@Z2lInM*5I_>}GK>g@PFDcMK9EZsWZ>fsDngQ5W$l`wvB*t| z*MQPA3_MhFw62<#TxaRH)3TIvtMFG!o$Z%0zNfW=J41*{jId|V`*pY9$<{G%-ZnBrI8`;AW9|n zsf;T_{Lj5h93khoJc;+zh8q8mPgW;9{vW%`(+U6Yqug2m_DeeF_8RO3e>dxi% z8a`I&bz7si-5En$$JVzrWq)cHS+&uttQeH7F%T5?~^DdQ^yFR_$;kUdKiasp*%q>YncAEIZ!3I;8ByV@6lfD8U0_@e3-vUSh#gixl zBPln`WfroT^#BIA>nZ4g_nR2-bsD0$S_c4ho)o0Q?X<|!B*&0!fLsQXbOT5Y_M#mk zyd2{PvK3`P_a#U&bpy2ZIl%0ZkwFuL3paXOn>i6MuVsj^3+oF%9l7s_K|N^T^65 zuoB1r4;3dp`7o$ct|=7is0@+tNk>BBnKzGy#!miY3y1bF|1vCkARjomCR%MW=Q&*D zldaNkt(Yal-52)K#D5k`dYYXM-Cl>uZiiggv^yR~dmd)H9{X7=l6f9v*Ib<-BM4dD7T|BjB-{_B+Av!_q5VC zW|c>QJ&$RPN1v&&Cw)@7@9jKY!}6K?I(5Kk8Zu5UZ)=s^!s(4fz(?it_5y$Xmj(Iq zs6C%(+9%&Pa`NRc^q9QgA$K@9t(x{WcJYDo#eWL@a>eBNc2L&ofv=-7UDkG=rr(=( zGGKBHcHGgh6ub=i4BzUhU-hHhgo)5<1s}eU$2m~LH0Hy+kk@%du@3d# zl9Z&cN-`(a*^KrF}O#U_5J*B?WWurGH*Nc(fjDt52}(?wKCM1(`pIKT|h!?_Oxs zWAI3!Kcp)fDR(|OZ?8CLad&F(Y90^!DRja~Ws~B}9ti~raF5_&P?CQnPJodoz1)c~ zSjtwk*QnZG9Qz>2uj7i>ZpS}K4zj33>0(t z$}?}33iV9=F`v$~Pk+2^3eq!v9u%Yz9qNfh_Dwj0nGz=Vn4_I4k>}Ck-Bw>re9EwA znhrD08XpYzMw_B2rR9L=HzEz?8RMTYmE>`($(SX0Jp0v{?Y`*xYd9eG zO=~b!(X4&#hI^e?f=(H9HuzS9g^bhh76I0$5 zJty$dd@eUw?~poW+>noDO&s;Ly(jW%Uv^_JJfcK>G6hrV_^YZ$Ff@ zL3{yuioLHK>&FdbIK(KgrRF6uK|!2TxzTF@f&T6+URK>-zc!!Ku8*xCC==&Bl@h(T>1Xfa$bZhISrC&A*k9zc zFLImXMH@BOF!7%~y<;Y{w3GUHY_B`afm&V zWIxr+9Y$;FvA#*uW`DSMcNR)h=l9lFogkUFCr#eo3U2ufpNfQFZtO!Y5sJ|T_Gjle zlu@HWA8>XRc>MiTb|31_n@Eoz=uFrPdL*AjR@C$zasQjgwtnwf0~6^n5Ab7 zbML1Jv4N`?e!w6*|RC(@!Cd$Mb6d_q}pMq!K8sgrlQgNvWg`CLQ&YS{tR&t`#2`BVo9HCRCa$w zX#W|`lOpr*tb9yDJA;5O{yRE3;_Ux)xjdQd|2~RQ{8zsS$VNMzi>ND^5T|;uBh*0LyP*>I;{8%8NR^Re+ptB?2n7t|DSzh3s|;6h>ioA{rAo6-zAf#3mJ`v z#GU79 a5>uJVRHpKWEB^}s0RR79U@?gRkN^M_C$W(L diff --git a/docs/onechart-0.13.2.tgz b/docs/onechart-0.13.2.tgz index 126a74b9921ef1e4a3c05953d3d82f6ff489ad8f..831f453f44741ed1406df9fdf64ade2cf1d71d6b 100644 GIT binary patch delta 6268 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 diff --git a/docs/onechart-0.14.0.tgz b/docs/onechart-0.14.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..157adaa9f5c8118c2985d576fa6ce2afdb81d3c9 GIT binary patch literal 6295 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 N|NkQ7Wq|;!007gkbr}Ev literal 0 HcmV?d00001