From 77f8c7256587d9ae6818e16fe9e36a47620e6c0b Mon Sep 17 00:00:00 2001 From: Felix Kunde Date: Thu, 18 Feb 2021 11:30:03 +0100 Subject: [PATCH] use Spilo 2.0-r4 and update docs --- README.md | 2 +- .../crds/operatorconfigurations.yaml | 2 +- .../postgres-operator-1.6.1.tgz | Bin 19295 -> 19296 bytes charts/postgres-operator/values-crd.yaml | 2 +- charts/postgres-operator/values.yaml | 2 +- docs/administrator.md | 77 ++++++++++++------ docs/user.md | 3 +- manifests/complete-postgres-manifest.yaml | 2 +- manifests/configmap.yaml | 2 +- manifests/operatorconfiguration.crd.yaml | 2 +- ...gresql-operator-default-configuration.yaml | 2 +- pkg/controller/operator_config.go | 2 +- pkg/util/config/config.go | 2 +- 13 files changed, 62 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index e3c9d97e5..b29142967 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ We introduce the major version into the backup path to smoothen the [major versi The new operator configuration can set a compatibility flag *enable_spilo_wal_path_compat* to make Spilo look for wal segments in the current path but also old format paths. This comes at potential performance costs and should be disabled after a few days. -The newest Spilo 13 image is: `registry.opensource.zalan.do/acid/spilo-13:2.0-p3` +The newest Spilo 13 image is: `registry.opensource.zalan.do/acid/spilo-13:2.0-p4` The last Spilo 12 image is: `registry.opensource.zalan.do/acid/spilo-12:1.6-p5` diff --git a/charts/postgres-operator/crds/operatorconfigurations.yaml b/charts/postgres-operator/crds/operatorconfigurations.yaml index 4e9231e6b..3906f9052 100644 --- a/charts/postgres-operator/crds/operatorconfigurations.yaml +++ b/charts/postgres-operator/crds/operatorconfigurations.yaml @@ -65,7 +65,7 @@ spec: properties: docker_image: type: string - default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p3" + default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p4" enable_crd_validation: type: boolean default: true diff --git a/charts/postgres-operator/postgres-operator-1.6.1.tgz b/charts/postgres-operator/postgres-operator-1.6.1.tgz index 44ad2b99bcc7307d30cfa18ef8ceb12537feabb7..48ffb90147ea471fa347a68f6060fd3077991073 100644 GIT binary patch delta 18474 zcmZtNQ*}zc)En!VE1U8pN8)m&=ALaa^(ASPY}}iT4v3B6L)VVj7V2IORye60Au%a>Y>b zT(V7Z9id!|?oLYc2g* zq_9fSlc5GIDqv;|QWpWTIS=IwK5O`><&cWf)g|$Ch8h@l0WbLkT>Q=O>yp&v3 zt~_g-*)AeXLm-(yzz#BNi3aU+);g=>h)JiQsKrujjHf2-xLaSb0!bX_IF-qobOy;L z9KaQf#bjzXRI=g@udMcuz4XSCg1njtg(K zYBI1zjCT#0^Nd+>miusuFk^{UGB6ZNq;nv&uoLiQU0AV5C%^siXE@0ULxe<{j-+lgk2lwS5EL5tq_)ZD25?b%BSHM!qvti1 zo+g+uOr8$|rpqNLGU~W$Amx+dchrR~I8xV#9TEm;L)IaWEMCUYL|M&47^dSfP*Y;) zhz05oWM|XpDh^-9^~lA$1( ztUmBAF*ihXHfZ=~-d6-HTxm|Un(-&9xy5>81F^uku#p4-l)O3h2HALet~I!NdhT7D zF;gWVkNgoeUh!;kDUPgZ096>0o`mScSBwvncx9UC)iAewHjE-u!qeRD&y(l9+k^9@ z+Vc#3HCeA>?!r2gKK%$gQXzFs`$RjX@xdJ9bHepe3S3J_3?9Y#bhgf|0 zE2SwVrij}zSd98}!Or6PC0J=v8;J&i(G^r+cv-PoIl-uuzK2+!nqzu!SX8NwoN5Y^ zK+TU*9YVv%KkR+Sdi1Ut`x z0CmBL{`Bu~tiL-8)feI=?1LndnOnracBEZ>8VY) zEfa(V1v}qAPlJ6>jG59g@FIdW27Ll+xlAz)IKoNhC?2OV22bQL+mR)(1z8DDzWIUz z;zVJ482pv%DM`2xUD(tzEHTwWa^(hr2Pf2s;w zVkWny5s==78d4}QW4-F<{WREhT?DJ*WLUvXL?sI{sR)2ZA>3G{29g-{oL*@d|CpyM zO`LaO-j2~%|9OLw1kyAjGM<`owT%5@QKy*#s^{HEY`<+QHcZ446#p^z?xWJj+*nB> z{uy}E60*yR{p zXv-!GWIDV2Mw$HivYJ!3nw6}Wo})bF>J`7J?qLsv>J{R);V2u8_`iU~R=0ExC7U5S z1sf=L73jK#5N(T|D9b)>;9YI#k($?FlxhSS^xe^A+C^TnNK+I*usLK^laq`Yk|x#n zBTGJho*`;YGNMsZBOyPyhO>9g;KWWQs&!Od5}Otuu7DBWI;Wmaqj&R)SysuHo$IMq zJpol!$2>?{<{(Wm$lN3S011~6PfISaj8s$3Ls5LzRFH>0s{Je1*Ga@|1%(#@%+k5k zdKUb;k}z^Jo6CshRD1Y`_rJJqn1MMy;|+m!W2k|NT`IV6?p_>P^$`2i#P}SxTjS+P zdZY!1i9g_Nfac6-LwAA_N%l`aE5v_(Fl{gn50)|=N-?Lj)XaoPwmesUz%$Dmn-astm1G%W zKqXUPSs-J|r8`EC;^B^)zDqM|N(qQ|7Uv!OdRL+%3`|NqE^@4A$V_jsf)CEQz+|b` zhC4-)S~$wIwXaE9Rh*h)34vSn znN!gE9?`m|DDvzLdzo5MjkaQCDIE+aJl z=%~c}0UI`&@KA96U8AXg<0UI7NEWiec*{X0J_V?We>^Uro%xN% zG_&}J*Da1?y2s2}e&dGnrYbG}15cg`@UZn~PQgC?76q4pf{H8e-%1;9Qznu zwJ>HrGiNzU2<8de>k{G97f7XN-T^0>fl(l)(h*U^BPh72v432byzuKY$ulcMGc1zxxGjMK z3laUdn_+Itk%1trvRjNRX>!5C)65C@+r9Qvfj-sE8#n`(zy|Y-hus_b0s;f!2=NL!P#miaUQxx?VRpgMX z(eY)+!!#pMEtlqh`(Y+B^a`plaOjt0nEnEBm4}NldPK+mbO@q5-%9 zgIhNi(RhJ9Dd-L_a>=5SlD+%>0a~ zoR+~fIj1@xaCj5n=taUHt+C2!QbU~Sjp1Q!N)jYO4S!Z z&RM9CXuQ+0ipbI^Q+5=8-NUI&2?S!G81Tj{BLso$UyI}w@g&mq%OJ==Nf#4 zL1D^?U#^h>#@pn?WddR?#lpVzM;!@_Cw)8RY-caJ`U+ibu228@dc8sRL)|59X{!7A z_5A!HbN_nh{e5zjLQ*j(6o2?z$?%mD+Lk`=Yr)J|^zBTbo;SIIRW@;_)ZjddG$e8t z2~cUCRPh8pewGL}-$zrNC3~$ax9q-8AJ+`eCF3_V@K2w+0QEj)dmkuRBELtAE9bb_ zJ4bAPbVG5FHIj5PqMD;1cB(s-Cb|y4gt%L{_=4MBQnD+*gf?{^4EGO zUdf`7ktJh}`qV?rjb!j-GB_{fR z1QfBj=#(99Fd{=AjH51Jtx@zudtRwf^c(Wgq!Ypr(~&q73E)y$+nxfn5--t-VDNW7 zSrbt)$YkLz7^Cv?%toN~^MS^$E-sDwvZxmk#D;a=Bm0c{!^ajlq0P<-Wt6}CFD$fa zI*RTffbhWza$!?M@<{1NwC6=U}hx^l2Geh)1`k3#?(fL zjxz7Gw*HmGuF*TcV^+Fnf`Q-c{)@jGB;VSH6{L%xAtBXqs*aut;bu{xzwoVWq#Iaq zv97c5vkqo1Od(zZuxm==fmqx-dkLvQG5PY_41cpv^MNwy-Row^sL(p!N?LoZ^v^eo znFIjyiiw{+jXU9zgl>hkQI2BJ71B!Z#VE+2)ZxqLq>_r)jR*t3eID(}Q^$}Gw(AjZ z7ZVzng5o~Gd%GdJUVsNJ)a$m%-4ZZ~=WNMdLEM=w94=;PQ^i-khtk)K4-{|o9pJj3 z#!+ZEmBzQgzUmc%$&X4p$jDnks7s9F)V;7@=a`MO&fan6_~#<6SMxObK(}E6MR?Md z=yZi+Xih&yrPeNIhIx*;TCf)bnrm}=+y&EoWV7Yq1lGF|V%w8g`FWv*!XF5a>2|uu z@4Mp~qo}>p!}`}V!*(T}c$T`(8a0tkk%UfzL_3YegaX_AaQ5;t$gmFL3oQ4s$l3N~ z*;%O;I(tQ#wc)b^t7PAS3yx>zn1{BeNN5KA-aZGj2m_A+^vy3>2`q|uq)I9`JH~jauu`*9O-HoHo_h-diUv*tLam5_N;F46_NgZ#q#5oX@PtS_0POTP_AGLyXpobdiA@Dbh0}0>zlO z7c@bHKZ?hq$0D`hLp8WIF_xN;jOP?@_d>?`@Sk0oQ0RtMt{SjZ@kQ zXt_J(CZBwhLFPBWyA5} z4a2tO7zugyhE(xUdE zNp(B!gi%>jB!fk(9J6Mjq!E!t>`e)8kl=jsc|8F?pSXq)MO}8}0Juf5f`|_Ou8YAg z5Ntx=_NG<0P7Xy|FjCpvuR)@`T=|*I`h9kdBpz(|ftv*+hBd|d3t%!M0Ef~s#ZzTU zs)BBe#5Jo$z-@k?%e~(_O02G8*nD3>UHgD}_hax=&IL;r*q_&r9}ITS@%*jN6+WA) z&PL`y$E7QMEy|JLYd(QbB}ADWM@~VhFJ*D`4DikXeI`PTKq#k+K zuzI7wr~%vbr8?v#?~ScO??;ZOH=UeiK1H8(c)g_*;FJUs#%Ybjy-h#i2topEvj|JYgn9I2{>M&m%pYD!h7#0Nras!7QoD~E8I7swZ ze_)bTHSm{?{R&_058{$GkK0mC^Xp3zb`^ik1x^sANgb?W1l-T=7watY2vqWD7hB}> z1FAk&ylFpHG0p257fvaw!=6mf#LYfs#@2kZTBSoMYR*w_T-w^o=+VDbP?mY>F5BrY zyM*E%@Fj||djs`^M+$`y#aeBqh(1U+pYMJXj!d95>_-C)TRbhB^jXI(9`F$(Yp)0C z4-lzbp^vzG-YvOBGZ^sLjxyECcGx1l0HybL^#nZ05Xshjd_-hTsO#jviff!K(Zh1C zWoI^xBwaO6p#xv{oH8jQ{CL*z~z$zWb5xTxli+%L4=B*b|d64rv?34&(R~R;|iVhz1!&cW#|kn$MqzRSStsih=s%2ih4Q) zGHDb)DXTH%NijEY(5sLIZnPC9*xpIK@XUx5AIbrkJc(}EkagzwfND>$bogoA$qt}6GBsITgQPt3Mi&s~1v(D;dF&L{%< zDE&{rU9KE?THK5p@F2J)^v!uJJw}^4Fv@cv&7mV~a`?2T1Lhp%3z2!dHH7e1@@#{J z9Ku{012k)Yjn!Sm4)Q2QOhB|j%SQSOTda-W%;#l%?UGRV*_dBi!wJU{jv;3AB`XGPEb3%Nvbz^h=O_CSgJY- z*^IT1ulwX~;(l43O~FEgQ3TASjMy}Vq?U275Z5PDe|hd9&8hjc{|jzF>C7hjG5NV| ze6`y5q3j#@0Sf)-uDSK20B|HIQfO`5t4kYmgM4 zI8R~ly!>^#-*$Y$vDf#)$nfIWZYq<&Qzx#&<2_4*K$Mg{aPF1pmFNh#=0>|H@xxAh zbD*O5J+l}OKS=JpgK}~%AX(wTbnlZ5|F(J^56UBR>Xsrxe;{87iJ(uVr}jMOp~-() z+sqMo>|o}h0FD68aoc!ICn^V7ag1}X>S+*Omao=U;%9+$U{g`u`}YE-#!xF-->rzu zuIniswBhR?9MHDq9b0VJR+CtX@Qf6&Yt>o2v^&9J(_;@tLr*T~f7kASA6Aja;KwJj zDX?F1i6dBw^Kn9y%Z6sMIO<)X#OE>S-5V&(XXJ>WxA?w z5*?jAfR}CmuBUS|TFsWqomNW!7)^6YCt?qUTbw6??f0ZekzqF-2r-! zPF+;2>%m6^ZDpoFXA7ye>Yi0^19j&<3&OPW_`z?B`W3Ot=!PHxG_bR`2Vs|h@5k%Gy}M4x zjuf-u)|2$ohLQq5)HUtJ^+m6@m(TU17vRN#MA3n=k3v|q!|&;J@0n9r2q@ac@8#*C z(mf$0?E4VA-|zV(^X;n<4=GmF!d=K0A5Z7Uqsbd7gcEP4Z#p0PXN;$|LWAQCtr70@ zRyTQ9%Z6i^O(a(D=>APt&NDPEdFX=Ex^81 z5Tb9YU;VFK$J=)!4=u^^y@7=FaW9{P%@OFuo899LW1n`*K8~Sgo1fEnG;dB$PQYhl zuz$4GX1$-K_s-1mul~rwqKmxX1)Jr->Lw~83SoO(2dA(lE|hJT;b3FIr$<|4JvQaK zIgJaXPd$6JP4_}un_1BGBqMaqL&4tq&Ax+2Nlv>1U#2tBWr9JGDzM4utrbQ+RqMl{ z>%*dA$?2y3Fd!{h+)16@oIm>317f_xj0W=49kznrdV{UuyJ_dJZGSY^vV(=~tDb$B zhB;BkC`!H|YJmgQ6qN3m?FL$zf5*kih5lK^5)g<5>xcx;9_&;ETNw#HyJ9;66I`N_ z?TL1cHRO{&Y5Dj@0}-Z+4PlHY)TzB=7`(x^g{F%)*q%#r8mlSS`bOTMY70=ec67dU zZ{VGG?@Om+smrK#MxnJB*{nd9Hz8^=@!*q06)G> zlkIhPjX?u#;CK?fDg@AkiWLa(g~NA`ObHEU8Pq^iXx@DLNUSQnawsZXDbxen2?YHE z4JX)?IubnHmR_!o4>^|3R-xwhwl&TJ6?QsNe374`vAze)@<)>9-{<2bU0Pj5%s@(4 ze>poBBXq~v(CH9Go+4bs4k?A^~yQ+;{VUqz*?IQqhHg<4xKeysm$ zwZb^E@s>0;VYdTY6No7+D}zX!1}j=T_?)!Yz2m!}%(v?=$J(om-AwV>Y9d7Oh9WY( z-H=_yp9vyEs z%}XQLRAy3dOmDA&VYTqI^ zN>0vUa5efP?#z7U<3@~jz>=n%EbH3NnNuO23bGAuPdUcZDdovM0nKI4J#F#Ku*97~ zZB|6h`APnUq!2pVzLK3tKDlkpjxw&531l1S#zajh^TrDnNYo$Di`}iwWkoAA7dX7F z{`r);!`SSV?@<~I`h5KY1W4YbNvVf)={u18fs<9lYaHNh0~K>I1FF)>lH9uPS(p+A zen=GBlLy(QRFnTH;tA?RFCPUQB>Z9}!CBRyb*zVA3%8T>raHj2a~jYkH9F9BIyYqY ztDg;MvDJAimy_{MKBMz13{Ep&c_DV?sgSEv!@_7Ie~%8gcriNwjLwMH z^=&sIo>N}A*}Q!v#q_ji%g26n)Z_%MyAcUt`LXqgqtdZw&IDwm4G!dzD(2VK^fB>n zm&>R0ijz5^Ds7kp84C~-GauJd(>*lb4gkx$x1)Wu-yP(+bqbGtR^qg{Yhvg(F%1$m zYk$^^5fGVqEN9Z|N6q#Z9hw1`k+2 znl6x~l6Jdc{F^gp&$xDu@F^o@s(cbd7e$&itk)e zE1KNQ68#jLgg9^rkkk`(-4?^lzOxl{ljMwk>6|zxDu4-3dWiQW0)R=PW(5dM` zs0#oEyFjdgPt^k^$)O+3B%2-?FPc@l4y&uAsD+)@>$@v?Wdp(ZF(XEw-QT*0fQq6Y zgy4tS8j#U`Y#?3#bS(Jsc^at0RS;Nwb3fYP%ds8P6VO0=Vcn=F{j?GpyHaywLV$B>((FGRL6f!o@8tCz6~N1z z*5R#rZe?vYtZ219M+$A_r3@vyr#3qizL_h4)!E~OFIB1ymaQxuHmSdgQ&4oZK|X7@ z%{tTLHz!yEAw%cl%f%OsRZlXW!jt2zZwJ!-QPH&7L<4NnGRExo64ALXC4d_PX#7g& z>R&9i13oj{vb1v*(?5IPW^>35ig?i{r>H}pBPl^L$mok`m5 zi4WD)7hdC3j1UHYGQx3hA+GIy;lEFBs5HeYq&^>A8qWkLu~3$Z1LiTrCT z?|Ff$*jLuh6m(&uJ>k2k?_Qy!4^L7Z6S0+--x3+qyaK&mdnSIRQ{xPrVvZBQHO;7< zi5zO<%4IQrHi-Hv{L|~$v6PQE+#wp!JYTHn3FWV~>iV z*JI5WF&!FpCmW|0tvyq%uy^&2J1}JGT9D&$j`p`JD}(X36MqATB{?(xY+u!LD-UGV zNt1}S=pKC7*Zro&jyM|yBb|Mu_NbT0L0g7m9QwYCu)GP;SQ z%ZBhxwCzS}53aAv^HIfg&Zw>;LTiEtc+-bqpM9TdST!C^k#1veRQqJRTG_&i<1MDd z)pT8=qdI8H?-jzCS=`07Z-{dy4lCF4pO9D(rvR!U+py6lBY#Y;fOCdV6AHz>m)Krd zTNonB<{};Y)1_fx`5~~hm?6Jekpehm*_GAzjJSL{+oU$&6>w~J%EK< z#6DEi;}*Z+BcoT>LEsWimUgnGY1N7PTr&?$C(Y3hMa%RDy`MxDSUL@At&nX2RyDNl z7IFzy4K=%k5jQE>N{NyiwFE>z#2awKue&4#+aEzY8K|Epsp8kSEk^swfkylPj=tUZ zfh9-NpbwzYYwxF1EbzjAQ=+4JCdXUoy@>4mqxl>%EMaH|oV-yh#|(oUk-Dr?@v*9H z*Abm86w5F48!JO#;$Rc3iEiK6Y(kyIDuyazMbvw zsF1Zj&hMmt8eg@XUKzppc8df0O9Qt_!M94_N8reNUusBOXtxNd2-H%DXOrj`ku%YN zd%J1Vm-WJL-S0fsZSr*QITV#y?j5Hx};B^78RPEP00SVm&6(DbYYhS+~%0y_O( zn1KZ6uz{&paMRNLsf8cM;^4tj=k9fNVca#D4uBR6Ohabl7jaaLNZ!kqP!<`L>%;5| zo^uQq{cPXvn=lMx|N4ia?{eE@Ai>VFfJrj1Ckt6`(A}f#{O3r--LX0Lg{eV%!%zOm z+9n8lRBoVQZZ`^3&3v6^`M1mi`#{(^Lg1Riwn(IBM{^q8SfoZS-_AJJc1otmv$0th z3WMkB9XXAtNR&5p7r2L``>Wr8rZd_h%|?s<+_xFYU`R(F|?I(iAON$ENSj=6d5rX1+bBI_?F(B>O%6oz;u?_tC0V7HxQ* z@6fq9xk>=G|9PFai2wJ%CDg8giFK&pN4xV%nY+9B2&dRUHkc=^+fCJPj(K%8OH1;K z{2-ZGYEc5{DFp#gwwgHMnr{4<27$g-Cy)>+-Hm)>Nq|Z{5SL->gss@6LI#Lgq&mR zED&xmc{18Y|T^}a!vR`A@OhJ89-{So8i%xQflNR_n`$aQ4INwHR;}C zdwtmEgD*{`kH&jB$6g5<5{!$)Jo?jS#%qj+;2aL5{(g_9Z$&{5zw` zRWza#MjTP%I|nhOQX+tpQhnl=Zbzz(h_70}B&QwFk~SYiNvi+hvBSR6c_NbwFS4>YIc0d!(4 zCn?NSaMx~P9Va;us=7jhejcyic|CG=KAWcH{3)i zTdiMnR8}hLcl!8Vi2BZM8lr8EcXs2axad?LR82Z(UH~66eHcEu9IJwT$yg)K#XeSA zq1(ok)ffFY{cZ-<#(>=$#k5Wms2pKM?4J9U|%t z=P&E`Gy_UU#BzR^p?_vOrBlbzNr$-?Bc8L!e6Yz8W=T;E<^=cfE-wx3X>IU%5bAgtWpykEecmr-`JHgqRMF)0H zD(6lCJ(Du_?C%<1Gs*I%|HbB-J*rq!>wog*aaU;yEvQ9E*z?e%!t9+}`d@S^z87Kxlm@tAYe^(jkNUDbxS*SnyXdv4%~m zwZ)$&tAq&JMiF?Qo;dnhAOXX#{YV5c5xC#~vm54P`j>qZ_yESTDQ*2bx&85E_4GA7 zjn}e?Z+j~X^hLm7u%rCwWVO7V*IbS-__t|z=m zoNPLlEud4l%eu&nBxt^YmtdJ`8r`9#dpE)OWjbRXj&l1J;;!9ywM(gbQtxV-@1knm z%@u-puY^tNCHT{RaxZ%AS9)(mje6N8POlJuGF^rN|aR+?NMT7eoe9u*WdLp|8 z21Fl69)Tqd*CA@ajTois@qGvA|OMJn-r&I0bG! z;zd;Tvs-cQ%0Tep#Nh5ijVU?5ee)sZD2@bsUxA!4jgf}Zu@VN|qUe4%`0KdGG9L%g zWM@#R@>lHH-%&c$s+u%!m6yLdMCI#jPqfa#qK-A&6G5ib7AI-4QjY(ESjG?+X@FDh zD99Ik28PR2g18o$!DT=KUh`}5*WWgrj+T2&r~@raW~4b6ITjzeRvf;-r$6AW25Ip2 zIvMLJSUDG+>>gZm`}_)i$lKraZy5lT+Ow*Ymky-X>_j*%Sk3nHQ*MGjx5)oq!3J7g z!3ECFrxupp=+t!VLb%kz(0)REL~K9GMG?(&%n-(Zix1QjLGQK@b+KZvq8fNmiGgy>)*BhPZa$${m{ zke$b9HuL(0>v~CuiTU|?^zVB<@g=;*T_1)(s-tz^n|e_{foIwYKCc(kR?)Dh{hLox z-)6GGMBr|u$-6zLdEl|~(|#&6A?gb01v;E>;AmvYbgrUd6ujA^-_>9%*agV%W!%L! z;P(a!z`g_IWYkaK==G`u?ivHHPLPLHwsoujt>86a0vQZR&Mr0@XGWHmBI`zZ1PeB>qdJm=j@&xtSn-Ccm-j7$0R> z7AKe|&KAQnSJAJ-9@u&gV+}RfK-4HiUTa4pN#f1?i!fPPg=@~&2^EF1W*e6J&kaavfVuvMSSvJ7~ zXNGodO&t^#(PR+E{!7pRv+{tjMY>1iwqyKoEdr?_F#y?Udg3*#x;J+$a3}jV;Z;H?IIP|k92YF&iC_A9y?36%RUqBqweQB9K2eauuNqHjQ|{me2|QO-y3=h(bv+xT`=gS-K7zM<8df z{hh<$KzsIZ;a?g@@yjj2oD?~72{(KTnXTpj%O53P2@(QTzw8B9&DiuB^RJyf1isr0 z)B4nwp@@~Xnfrvq;(f6HA7KPbB9nh?z%Tb3^7p|iiP+o|D*1nT5$Qi(L=N+j0ccZh zyPwbB$;3E|8VP7egV9%4hc@0yf(Y>s!kCRZNH7RIFqs=M#Zu{qG2Kgm3$vr8iZ9j& z5P`f~nkd6)V^j*h@{zalNjh`U{zDuOZ2X8lZ#|fO1Whixo zRT7dhAWd>*c5SmHOCH|SLf^OHV5*g$lg+zgZe1s(=>Y$gqs>M9O@jPr2C8;Bc^j&U zJ$`_7ZVZb*Rv8Yp)5DkF!%XUZC@2nrE6!IT6j#1~ZDThe*9EU_BO$*3)8GJyu)OPY>NR=_qq1<|;ATD%UbOy?^)u5S>B7R-m`1fUdKeq7l zaq+Sbor(asxcSJMnxGH|zJ=l+{-NZ{g18Y4y}cqC-rWR!F?yo3al`||67^4N&5*?Xw?Qj;^h5waQmdJwmXBpIW9MRu zP@fwv3FUV1nTdGn$BKMNy!OiCrZ`n{3_EGCX3fy!BEh$RC^H^3k*6hg-G{7QjDr1# zdmp>FG1?I_c~FVbQzaAdH^}A)sDhQD{KEq2WN)~q^JELqKr&qqPT~0Kxy-&UcN9pI zmj!2-daQcjhGZrXPsyT^Y;L`4r&Ie^3yBnq%8?UyHfXe19IfG9b>4VAsJi6V^aUSWu&b>49`A8p%0QD6)tOwrp~W)E{I-ByKg2 zMK1j~wW1!ngV`q09Jx&?8%P zDcuRajc;H0MIjTXz5o;pwGL+6!bVjD3`UvKs$=6{(I~uyrBBXcygcNGhrW%|uN46gD{5(B%Heo61hd`2#W6@mQNwN zHK_#zXJW-k0VJDxTR-=PpAua~xq({_v$ZKHq_-mz5}AQA7b()`W|5;|3MB^li`M~IK;Kga{dKdLIos0(OO_CM?-|ktEns#Kq5k6%6XDxl0>mI{O96Gs2Xkx zrn64#evw(l%3kMUs<_EbVlM6RI}_TtC)M0X^%)MKKAla1y1RNwgPM=KPO^97JqdqG z*;%i4KS&7wCYTJa9a=|$L%;#icr}aHbbuAzBq`BG91Varw#2nzY#_e0?#fh9i9Ryd z^q)4umr94kIB`5cOnbn*!!^V7yVAyb%LQC*%FYGFvahMrcH+PC5Yl9n#X*S6#Rh0R zaZj8HxXf+iCa>xs*`kU3Jf^pR&K7g3#QY<4)+=U&_#6{ZPD2FYs{UJf#*7ns)&Rx` zUQ_kUd4=GiE`}!uP+eeVs74xNF}7 zC0oleh5}f))`x4+d-rC3632UOG<%;ZV%y#W zK`m3&=!&d$86ABlOLti;jkxNH6}joN73WGNomvhp0dRIMg#5d$!k(Sy)NQap%`<+( z@TC-+;m8z{4PlGDe=5Eup-puZ6Q#8hM2@^e{Lb|1kpiq&Z`E%AVwdKC4U@*#f z;wvfKas&;w(6?BHI+bXhYG67s@*oD3?0~w)C%$rO$g~M1glu3#%>W-mJpyP-e|q-J zWLaAEq^L=1li?9}xQ*{Iz&^6Nt4@M~4)Oq3y1@9N?Vp_ahBl>K={RK0kd-$9tM*EM zyaFw6ae*#R!FTqDI|XUd+d3d-59dmmv#CGL!bej`^1U?erCnDZ`JU-g} zr4)>wsz>05bZjsdVYeRpHLN{?ln)T-*B;W8AK(r;g=l3RHc|Xv0W$~8_(2r{Z3bfj zG;BTq6CC_}NrWV?56^8s9^9xi`8vw62M?+p2Ipy@H_FtQMmh0Js>iVX3zo8Nkn<&Y zTR+xZgJL7nH4CKmBLtp*{haE5Sq062qGNGgx;iZQ2~U`sE6vhUtU1;3k+pGJFk=Q- z(%m)qcVjLsUegtlO-;Ae2jKYfm9w)9uiU5*i;V~?g2;?8O@e{%dndHeBBh!~zUwgq z6wvL{e9yq2=0gv%of~Yd!f8GX%bLrQSd|wSU~M?hY-#-kaK;ZZQ7 zdCoHB5xR^lOzHa&jz=TQLgCkk=l)>hq=%CYp5vh=ly)nZ$27`AuX5#FFuied@D}w- z)7u5C=XQWOO?xz@A4EoP6oeOA{j+pw`!1vs+f^}UA*U($HY!|~LozO+E8JBm6v}Zm z<9Tl8ohPYyGIuj=$NUI?)iA`G6|mQbm#d)teDH=SHceS(!)eT$;27;|nuJre1aUQa z>i{m0=nDhbFO?!Azl*VT%Pl)nN(oxOBnb%P;Ctz+Vb_S* z?lgjPO$(r1g%K2V>~nxi?+v!sv->hhV;_FjpDpD!DsxH>)@yHZqL(pb~3 z301fFAmALYguO$;vPjNzYb-XvQHGBXjxYE2pJ9F5fi7!)sX3T=h-zR1Aa_$M=??p( z-zVRh|6n%T#e|hMtLfNTk&(%qV#?<_!yfObMQ0VygzPUKM3k4FvY0+oN9o zZnxweCAMXDTioV$5!X!KNUk-@%xKZf-|K#YJ!34rw8c7Q9F zINeEqJ}2pbxx+#x7@Z<0!V*H51BlROcOYH-yX!y#3!<`R-rGsn2*Pe4)d19kW|!-1u5snl zu_(X?gzl7J@U&|~BHkN9E7;1KdO)w095a!B#Ek?P%OW0!UhNTi)^}zN1pAqiX05S1 zN)0ezYMbbhVk>40wls z{A~0))a_<0Nrz8R)|>xf67K&h4+of~ryB(7iswNjW7P#+^@``cB@*3zL#X?=QA^2X zt=#&y6S#zsEyP~bVBmD^LD7>5sID&5&ng{U0k9{8A{_4TZev$~YokaKl-1Vh=ra4j zQI*Sv7Otmkqu>Oe>f2EWt?UN5h`aWG(zh}jQ5DByzJia>Uhqud#%PdurACm8xRWnk z0Bz0MhKhb{tLik~9u1Xi8F%~}K%=}UCvJJ=R=I6izqky_4i?MWjXlMp0uYN#v-dDC zvb?Ryx&PqJsmLybs6rJbqw!gm%+1Tcmu{`{Gffh4bMAK4k5xpInp>!|L)-;_HB|%@ zXweWCw?i&&aq`N$+74luQ42B=v)vsRJ{8a`4rr!%P{vqQ5uG1D8-h+n%v@aDRy3If zE|?ZPX1fM?px{u7A*>-hN2&xoo>j6r z?rn&b#>Gx>ZeJex{{HRbGxBI^2lQ{e1wH8@Ac5H2H;M4QeSmB4Y2c>xbNeL{OAi!& zPZZ(jBA?He44iJ^EjjLe$`WSW5v3_>8CYxS}tzL{b5anK2aUFiUjGXQWV~o7<2xi`DkC z&zEc3!6n za}};=Ag!Eyr6_@&vl!*np`IvG;zFD>QoUv;6a(eWPy6CZqtBfKaXZ-}UWgPt9*S*P zbbUoDf5G{j@M{&iB$ir>Rj&~|or9dx;>kWK-zZCd`3WpLDG^_Wn%!|4#j_gKx0N9I ztzTRwo+2GX*GF0z!Z4qEue({~hTQDnuB66NfJ>-}b5^b+^S~o+qyb(*I!Xj89|`jqTD^ouN%r*?<1IF(|6V1UsBL>r`UA<& z4xTrIX9!t$1X%7M;$H^jd-l3LMDaB#P-oz{K_Vh4boyVCOEP35MABzC;zaYm$}3?y z0Tmhz#Pv+k9HPY%-|p}Pm6yN0u8~5{5MjP3&!$C7V7-F>qAAJ$JUAngtF4)0nEX0+ zXe>vulRg_Y81mJL`jE%9tZJFkNp5UlTTjw%ypid!gs{Db$IA(oP%jJgasKe6CVn-^ zFi9J6TMmWNU`;q#UghE+FP<@NEy&_34H#COq|t~uqNWnWT_cyr9Fs>O7AhDBU>sN8s7e*>iRZ>f}`zW zo~LJL@hxMN1ibQzaqgG3I=vC=x@=uB|3w6j`6ZI2FI%5h96iwa}hk@D?ymyzOPZ(h)`)<#qFe;>IA{$QG+rG zRR7-H+U!!62eYO?>l3Q4t5CN?aTTL0z@w}e=KlMMQ}9EFR_IC4TxbX?aOXI03Hg@f zi`(+2WSm#}EL&t6%eyj-E})u!8m}+VLy<0^dyJBBOGj53CBcbJ+)O=n36|7j z2bsY-BC35WMb0u%01hqNkmV>z{-*XPNwrO1fkC*6l{EB(62&rJ)aA>e>{tC|aahy| z35FGXa@0gIa1gB)~t1wHmL{(VvhJcB(CAh#&xp*SuKMj=B~Bnw)<}Ds!^P zVf>d1G3vxg8kM$FNge?O#(^P{N+pc}!|rq~2kFKcpc{H*HdN}mT!l?Sb+kl|IcUqI z-s`0yhwb>&XckXgca@7^cQi=dNm;HzM1)O)G=#iv5v>9}*OZPU8!-9tcL#M(PXp5F zkDzRoqrjabkC^$E0CIXQySWMxxBjQX^ZGFfbH9I@)GfpvQh6;KrciUq3<5JV?u6wS zrre^?zqO%MNpIm~vkr>De?l;Kqiz5jh`m5ruY+=o#hI%honftTIAJl$nvIfAn}s|r zfHpKktRMBmnFz8t1PqWTO0Pq3iqZL@4<|mD*92+3EHPM}tq~imjrr8Ur5K)Gxl&0> zm9U$`(JjI&$c5qcOahuaXP4rz9Wu+qC}kKBMN}B3c}%7%0^amA60#okO)nkF$?=LB zhGC=QhM6;AN6uMBFlgB5YLcLpc&n1mGXe?*oGlfwT|!MWgwVLt({ABO6^a>6v=|KK zQ3VHQ*D-1tSCCE*Mre;op?M!t%*35W5d#x@eqlhnxHGFYeAy$%$6~hJtgJ}VA}m-) zbbzq{OzDsYBe{i=tdadH1^xJpR`=49wZ?;0gpJSgP=8CfEoaY&DiH*W zHV_xlH69)ABV{&{W?$jT8K*riPTYi(Es7ypWk;xWwK3lPw|?aJ=oBmu)d&y?fj(n{I?C7(g5o(8&*5 z^`46=iNM#%0aF)*=Y`MLr}avvjnT4^o{(r{laC^SRqY$0z1>&*yI+(QyN@wGR4U;U z8plIes33ahCel%?wi{>?6e~y=>tKmft&rhSF3RwYS;wzQyxBnV9D7;1fWo=C3bM8n z_!gBPpy(}omGbzr2AgmTr$4b!pZSCKmQ*k>t&S@((vg>4#AAWR2#TERnEvgA^tTD; z?^+DW7$j$*I4UuxM^*Z~=aayhkUf6VjR<0I6OCyP9|Td;FVkWWQC#lP0`RS4xL|62 zX;tcsqev<$KgYADBqh?&ncy)uFflAl02dPZ@ggOeNsqttz83m?&1q3Q&U0Tcxb6n! zOv*&e(Zl=9Nf6wJ>KIhE>sCNVGi#ia*n=zZQqS%?CpE4z=Zc}cR)V3J&g%X(l+F2p zQ6A8Qkw151Qp4>A5H4EPaYxFYD3eVM$CAv-e#7FVgUMnB$;r?@MA1??*dV740R81f zs9G%~R)z)2Tz~fKCb`beELEL&+tIld$Ywvb>EdI%6Nn-h^@F9wZoEc07@w^CQQurd2Rh&Ti3-XWp1|8c62LNoNuBO=6Alawk+buTZ=5K z^OC*rc#8csHq0~nKsgJAJ{tBO!uXSJ->NL$Xo5GZA*1S_dCN6MBWN-12$W%j9(1Cf z_%673!q+6TNmg)=VqZ;y;B3IDewjS|Y$>noRPXQZM8CnHZOuVw*&Dl>aZ>_QXAg@0 zUN0?zeIR=BTDNYjug+4X(#ZQ=%T5H^=d7sSH|-~?NjGasO}{UQ{>k7%NPA-k;$9<< zmBz^2X_PewllrDKpuROt2EZ(vtfk{xyf}2({gZFQ>DLT-h19-@1``@`ELWaFL#hGZ zFtN-=`oM#_i0SkO-SS>mGQT;gE@n%;G)d6e@nv__kJ8fGgyr4DnpCNI))1y;r+Ru~ z6#Oh9KHAnqSZ7HngkSUbtqdzysbpb)oF!RLvu58Bx~!wOi=rF9KLT0gAiT(-e(bP9 zby?yTJRZuKRvuKiDP4zPVt>?$8>31h90D$LpXVH5`{HT(OjmA=VO6xOY*h40)MWb? zc{5UTnL)OE4doZ&Em+*%hO0On`N`T5yF?WPY5=1)8Fkbnhi;m}k9&$mjHxb}ecr03 zN)b=f)vQ|_Yte3sXDLO8Ae*SqU@kI?z8P6rrZP1hwQ^j#v`Ouv`4YlP1NTRM;M_T= z4MO+qSSNBhMI#ian!9f^(215r6PK07F`|2K43{3-pPp#-Hkk&95^+|u9!#*v(mkUM zmDiPD%)A)UIv@C<cshpB89VrAuFK_b`lzwmfGsOO!z*0)tAlMkG^k@%)JSw>W8ZM~x^l z38vGQ-2a-a$5I_#B}x&qU6in(!^pUse#ei$9Qz#eb+ecXHPLibwTzV;o@kqqz=BLO z)|R0hck5oO&96q_b_Jjkw-6b~Kip-5$ZKO6ZR`j)D&SwZN9&1VD{PRC?DASi=hMWv zZV)O<6Pc0lfP_;Gs0qIUBW6YdLd^FdDjE7DQw!?dtlQ_mn%wkh2Ay6a9dFPe-|^xB zs}7-t@{^WVlq}s|$HkPLG%XCndQ<~Zl=NREl1$ed=Rug7Map->Pn@QH;2l00MA*-B z-p7J1PC?NsKPEyAG#VvoXcK0i^3n}`z(X*mhR@WBfMGWI;fpA7R^q>f24Z(vCZl97 z7&>XQPx)YKEDY#?kM{}k4;n5Rt0O&cABUUQ2@7{;kC(%9>;lTZy~?@7yE!*Aal0Bk zpI_z&VjjnTs(DaK8Yg2m3wAA_3;m$BV)#ofVoUBh<7c#>@;y}r>9bdRa?9`g*3peH z9Ww$TfTBJZUh+NCjz8VOLixYdSaXg_JaPo~M*3t2c<;!R`%$cH;m?N(IYsLKo$B%I z@AhUgx6$eC`ztEH=n?5{!R#t85WhBnbBGiV57!!6`?ytZrYMfzhEdjNO5!y#9%SnFCru(U3K28Z1x-|5p3yLwcK*MshoftQrX=D; z1pa27=Pv+;34_E|i+@N~aLfw37 zT^stOw?0_9ATco(U5+LJskDl1i)&`(8>TS$wGNT2txXJVgResL!8G{=IxZEV(qB3n zR2WVRmG`%Rg~tmz%irqY79u4Q`BC=u-#Q`Zw#}dXD&h{kN9rSO4JtiRrFwcj_iBGN zO|z2G*(lE@vY3w`V4gGaH79T*T9H(%G%-$5_PIfw_do9c;hX0m0-2V6?|M!_$LCN; zykGM%>JEo;!rQ_K#VILqK=9S64W;M*i3av@Rp(&^jApo4ag^k>rHVj^?_HMh(&)!` z*Jo}HGnPfQJB+9OVl*4avrMz*>4(jNjy1%{R6(RiifGk4y-{zK3${tyaN(SF9oMIQ zP<5=F8+XAG71 z=~`S55D3fd;*rIB%{4?x=b(>u|5KLzTq4FiLA@ztM6Dzyu>y&1Jf$w~Ys0NM00`Ns zf5`>UxXXF4dz$AtU4R(3q{+bY&4iCKB69xh%@<0*hj+X+}pc_wZfcg3>*Wc>g$5|UM=6@vu*K!VU zptTs)SvuA{jde^$JKd#22D^AG(@R2azu_SAVB5jAErvS3+Km6hQ4DDBocOld$Wor(2Ct^Ji#bb(Dj{)p?)o8VX|^9>2VZ5N*P=2 zmi%|~Ly44Wd}3m17>=2LBCdh?@ZIX>!dgj2>DZ?mG53zAfWN!FD%Pucmq`>^*X@}0 zQ^J_}TT^#XUqXgOtqJYupMX5$?X`c3RN7ksw>^bX=QlOO7pFlpzhkc!Alya??Zq>0E}D-mDZCWbV&N|oE?WdXToGdy$dDkuf!Z8lo z**-gX0X_VQ+}V2v;ZKDkzv;zu$&1(B%eeR5lbUU1h$f4%a**m>0PoAp#oVP=PS>)q^=Gm!}(gBf~im z4tvb-IXa0@Ys)GeqCX0xGX1xVj5*%}$>!L_*BF*y)GDyQNj#o8vaG(139@qad63K? zi-IE$r^y_Pe-gvPu=_g)+~2Bc8nc->-6Lxu@(6KA!)A&e*5G+@=TNyRX#g$^!?ocfjYO*9-fF+MN?a?RMj_{gHEfsYXxvRzZ zGMWwCVga#Er%ufD+l|GS9eKTX8&;9{EfVDkbB~Q)S4qzEO^aRcljN(LmpSN(=pU- zTQhF(Bpm74oQ#XW={5D0h{1+O8bppwYHY?Y>gBS_#bwWKC0QhL~XOoUACh|>Bb)t8eOrEp=Tvno^y33g25oWU+g2gw_5-C zCf%(OZ1}0~`@HSzW8u;JZr%R5MN6>%`T$H5b-DL6eLlg&er`?OdG9;`)#-0#km?kE zlwaYn)}dXFHknrQ?&sC&acLWBTB;Ywfy?z@lFjc=J+sPK&#ML%7f8N2!87n(f$MPz zGwKTgRBm?cB1$&uRNWLaa>yjI)S0idraf8p2v1T>$R-e?T(v0#KLK248f^8aS$I;5 z3rq1UDdfwYl|eenII3D6T^H}>VkG|s4$@7{e05dLC*F^_9FF*?X_4^RQiF$BK>Xp+ z_LSaIC~8pJLzhINK}MjF0h=~5*P2#> zrS)SNsYaPSoQCiD-WnMk_waG;K=*8KMo0hTp*Nw6gNMyFOf0;_0;=xa$D&vKcT%Hi zoEy?Y>e%b&DAX06%*#dEGw3rgPyc9@6?j)cQm-}zLpk{Ypz+9Xv@l>y2{Kw*W+mXn zvmx!TA$9fb$BW4TrOjT9jVf9uyy*!Y)zrJ|?}~9&R(TTr!JlVsyd!Vt0BcJTKAPbc#5sn zc**>ETU|=q4W7ufjH~!%>1BOgo05Yd1eKthFdQ|jcU1n(z))-Y@L0aOp`%8Atyd5o z#ML46dL4-KhkLyFO-4&Q$5JPILll_&45~%e>vB&5 zQN1lCbcCzPzHrLYGr}e>yNPBLe{iRt4*dPlW7yYerH4A_$UYE8Zx0i8LuU#q z^fOrD&9r)}sUKViCOZeu(>^gkMHaK?IaIx9IRkWa`}#T-ZIz~D4Z8M^t{B=J^YoE# zT(qrKySKSE(SODwnoJ0W7h8F~8QV8nx{Z}OtTnv3WPeLFZ#&$4lJQwB0XY1_ym@$2 zpa(s=T+mM*ZywN{Moz~E*2pp|XuK$yEtBQ;DC=~E_4Ww3=?hz#X)S^gZ}O@|W2V&U zr+U)^D|N1pdTyls&88YcutZ$;Gle^pZ|74y4c#8 zIUcoS&ZD9Z&he!)Q0>CB8>@x#WWlfGd5!4p1m*)4PJJZAiozAVT0No)GdBxk57Y?R zt6$MPzwdyA>@_vFM&fWEVr(Idau=3)8AKjbvCnlcGmDe%f(SvWt;+;fzw->87yE<(qZ0iHKJ-3RRs=G&V+-+pno zOzxLwho)PNIcjp=GLrWD8YR8*UmMMrXhRJzWgarB3~*1C?W(ysMBScFxc^Cec)Xo% zULRIo&KeN@M5=dnT}4;5XQtUhZp*IjtQC%3zaL+m(A;)%XRL|@3A=kZd|W;(oVd6< zcmSR*_m{gBzUgl6H>X6ULsx`xF(EycJmi|?M~FW6m#4cEnRAsWvv-@(4X^EsF7pen z5o%@*7-tHTyMkM_-3ert7=w!OrV`TKP2T@*lJ*a(pDIzb&8;YcMO_qiUkyDREYONH zUrRzpKcB?D_&yegylx()xb$Or;;cOQ{97(}w2K&n~x$5PG1I^s~tM{cd! zd2e7~|DVE-C$1dXvD@GSf1_NOm|8j2mcSIn(g_$HD{&4X_jQ`p4U}p#?4G?C_&?5< z7YivZx;aM0nX4G@Zp$SdS7HmJ1#fYgD$u%Tq62PwL!IYxyl!i@9D5w=6rFO#mO$^L z15_D9?dzKF+n8$g)~?IY2NQhYW`)AAJ?_E97ge_*De(6*xW!-7ZF;8pf8ApjQt-@b z)<);=-Ih@*hdEpmafG@FMb^Z!pqdgE+6WZiT-WY8+ZUIrL7(Js>*z@Oa9fh_%jlpb ze(gyRGtUqAD9|(AR7$|Q-pK_!DZrEIiR#C!6u-|^vi~vm6rnOCzpg>6VxraOBa-@j7~N(vt8yZP##}P;m9oZ>%c{Ck-;d|L zP53DnRFw!)wd-(${Vn#=ix1*`e%&50dVezWz$JUFs`Etee%gBaSIA1P2bRrJ^B$#j z2lQ?|tM#E0WtvN;~M-$D+i?oA7)^=u?Z<>&Zl4 z>3u13N9uhja>wX1cj|V2uQ%meKSwU4rY_|=N!(B)-;l+1nr9&n<|+KGyb~ZJ$Ze&e#$$sJ4raQJg>VKrnc08ZHM^*QB z*D~iq&F@^LB2J*-PDOs>FuT^%$aC(cqI9n7ZUMBlLdLH!BAP$EGE#ne??~-y5`TH` zK7P!XlDNABhhDg>&Q06Ww8{ zLsvq%(JEuaGhYDyiSEc~%`{nWXG%^O#c-+ml9j}^gY4VLkGfRFl#pfgsR@R;xON`s z%Vq03*W#BP`{G_J#ye=GK$HZk;37#aM*VBtsS;5k6KN7URy4(2wS6d&eRa56gTf5i z;Qa-&IZYvD@~8ogoUCR^oTM{)EP6H~Vob^-I)+*evP)pn9wf_LQylVJQ5g%4fiQ4} z){d(uiDyoRFtSLZF@a6Q!_@8&at!m_5GtMFyfOnG2km+L;Cgey$354n$~svud6=O* zCt9MGuxNYhi(cU$&0R1^Tw6)_B&hj+8K^Hq>gld>?9ZjygZj3KnlGKv28s!Lu+0(1 z3Iz3=A@hKf7xUPy4x$Ryrhi{c^&)Pzod;%?2UfJIGOkz}%ZkXMR?bb6L^rMU7`brW zF{id}SITjc8A&bb&hSso-5;5vmR~c_40zq%UVi4V6kBBMA^d)`wBe0!JU_lY58ZLO zXznN8uIj>~eX0$R#*FO>z1tv8C@frrTRZ$>D%$-D-9IB(OSIpA z`Hjiz#^YZgE{8_Q*;GwxMkmr|z9=V89j}H$e%~q@X5k;O)*BD`UK_O2Ci0r0N*T3fBvw9JVFda4AB*^+#gt;5wlBJHWX2`j9egQ8;qC_ z$P^bvCfjMmlZT+;nm~|fH##Gd&{vb}`zXjx5~m_KpX3eOvN&Wyxl3x3jcSqDse6%e z+&;4`c^W-Ao+L&;b}Egns;LN#CR(GE80YPYHdY>RIJjinvR>@noKEB1k+nX3@FM_} zX1`iSS70uxBaTSM84I`w?t)q|^rnW42^wu@5GVJ;M5R0e2^*kb^>8)pyZ;leV#@IK z92i+tK5HH=KPv9Y{cW8u^%z+r17GdSP*n+86Mi6HFIiiT-}VASvi#w{67+cI{GIai z-W)F42V=8tKu)It4(Zk1%zl?c2^Ek{TW?w7n`mlWrJ8C(Qj^Ez@VC?|7=h+p>JRBE z@Nf}1$vMtw3ZU>-8C*tD8uZ=eXt9Do4h%6vlT1z#ErK5rqW)H5DY)Bde}J3!^Y#$> zA;fy9$BJC65v%aC?f$tqu&g~!W5`b3>1UmYTyh5ni!Ecb@4!GQX-W4uhb0iGlCLQ` zO|b2b*vU!P&yEZ>H2GytB~$?hTb9>`-)Cs&b@4q&B%>$Fhdf-AUOM_+-$mjb?p* zpotTMXi9^OT2Fnpxq3*5a0lym1Qc+IG$UXrM&qGCOjGOAd%m?*b!lDfj<<`v6%-YTiv--Y{!Y(u#J(Mw zx0$jWq%*^mCWuunJa~vZS28FlR(O3!UaGx!6L|Q;mCg4kmA)KF9+{5n8-D6D-QKmM z@s8>%81!dI>{NeC5EDlQdY`**)f-?Z#vZdr{+{?2SZ3?R&NyU9M zlTmBPvO=z;^+lPBy9elE2z;vfYmglJQA4odn(-o6t!cNiLWo${WxlqvTu}Zu7%OI2 z@3WVRe+ZBTKwO_^iMd|K7bm%(1_Kco*}aoQvnRtIeE$zq+0_~I)+oX{ ztlYZXy<2%=)b{@Nl%jDX%E5loMSJ`mIXD&7u+l@RN9fE@=%gq^<8x{9ke>nt~ z|3Hp)_YImseUBSMv_%U-OJ5Luv)jv>-z4MG%hY4e9!QrQkE2O+84r&j$50 zFNgAt8F7ILA8TeJ=5kdlBS^_b54LlzF6*hH{Zy{84T)Qu2%}q6_zIK2rXHrn;7;&L zwANvg4v6Q%FwCf%jvQ>~%%wMYR*4ek@pHejE#qWaF7U9=b?@?>*qYqw{${`FCyOZD zwa?dO5E*xM=&uv(5xdd=7iGe{p7tTIeMxen=D&hbdD6eTUrPQ#1_@!nhqiB z7+fxRW@<$GxEWBDFOxrr7PL7nIvyETQ}Bem0lDPpI$G z&bbg;@TKdhzocUiOCZ)_jTcaDnl&eyCKt?sTr;#Ct)n*-35Po5c=W@)t*WYEtgVCq znIRFDjH0c}f2|6C1M0;H_**si`>pE(DA6KKWnv~qcLr~s-~E5Iqi2X_45*Cte!;-o zt$+Y8DBZyuPnTlY@S6Ujyr+vtJj&%dx0o1BgJr!1e@aO!P(7iVardE;d*BGSZaUxT zLFz~-RMPa8QEyVv{JOXMVy10Df|bvF$%#MJ7Q0~0y=6{k(AOCHr$Jdjluct8mBfqO zwA~nW0nu#xl9@Q{i@J@P%W}Z;?V4fqVVU>_kqg;ULR)7d3N1F^t$?GmAD-tBi^2PM zrs-fNPOA&&&i1GD*tBqS5}v^jC27+j*)Q7foaGzHG1pG*Gq)$|=yj4ookV}OUtA$e z?tQRh`%n8nQZuolX^&|RN>hp+3R@vC*3H*QvV3$Xb{yt`(rNF;gp)*};-`Ftyp_!R0EYY?WDD)oL4r zCe6+sXPOqq+opX`%y5vjy4Qe~@RpqD(<P_N3#v_pG9K|~uvXle+oPxAQVIDA*BdTh z1@_hQ37h0!`p9}PH8!n8*ej)?LaQzKnw9Nd5F2dI%fZp})1RrEshcYp{)fP$!>Pdj zT;TQ34x>D9>9Z;H)-vty@$-p|6f7)Za2wRTUMEKfDIJlzq;dAKqHfh1o$M9T z$Scvc88}c~Ztw$@#W0Oor4)z0CI%X6yZSsq{}GpZ&#E zVD4*Rpk75UfQ$bQZh}yVS|_w!>64Y-5X!#yPYymh{ZRL9#~_iYCSVqtz)|~nMqfYx~Fa!5K9DFIWl0A2A&jHX_2TqqCY1_42vl08d|v4b4OvXxHO`3Lqc_ z{NcQUW)$nU6ARUY`A97s{IFHJ(KaW$Fx5sy8MmE%g=ANzUv1kWY#|o?qvqD~uR`DC z>~h&ZNG9a>uri4!Ozi{Qo<8@yu>;#1sTc0EZ)8@JxrsJSk+LU~;Jb8vi{N$a z)9)TmpDa~fl0%x6gf@wdh?o*qfO)IW6W!*%|~r4$9v z8jnki7X(RRqUHGSLe#JChtOxG&iSzbPbpemw$!@94AAO~dUadS1sXe|0JfUD*gc6r z_a9-R+Ql3cEtqY3k(e%2Hs9tQ^A}9|4#u=Ijn{r8Hy%2w=?$8`n=LZ3E{j!en8{ux zt#7$%wOX-M)yddT{3%I_g}kOA;=sNJoh{L#bbB<`q1o+1B9)!!<6CFI$0u1N0C3X! zf;#tm^^`u|T;h2Ncm{x|@4HVLneyipjCX==MaJDG@KfdcSKO;>ZY*Mg zB}xtqGnJ{W949CYeN@k32qv0GA9Q}(xK`3Pm{W>U!ZkCiI!4O_HeaR8uSI{F>MVKM zh&bM1ACU5CrivXZou$~UNVF;xLWi9zLL$1ah?}@7qGOYAwz@1h_?)wl0iyl2DJ~UR^@8m8^ApS@C*hYFJc@+tFgJ z5^@=!%3BDrRKQE3v7okP$_>IN@R126v~~Z*ZL6PVR~MCIZ6fxh#Gxe_^d4>2d_?n5 zSo|FtdDTv8ggGO`e9hydwmO7zceoroUPekS|E&f#c%y?oae|o`g*%NeIzdo@#^5UY zs~t+5R^kUUKA2!4E(@tLou6iBss*o?5}#RmGrt=iyPHrAp)vmdX&o1L!S*JadxVLX zxD#s3L#Gxzaa-Mz#+mrnNdA{x{YbJmcCBNT#bg*_j8MrwHUkWY^%gHNj)f2y3GO*q z2bF%85MdpPWcZ#)BP5xlki$jR&j!6I_w0oUgCboIT~n#@eGaqVVOSsnRYe8?ft|E; zYWRTl_7cbABdW_s%+@m|i`~zn0Mdb#np4MWPKWMKrr)9|f=9@W!2mn?Nqg z4}_B*w4<{UV^UB!wXfZkXF_NR=?t#)kv4pI2VG(?2(Vtuf3|MpX!LABg6kWKf0OhpB-&=kYu$nHZrO(>dd75yc={x0 z4i_J^@g>A*1-t(jZ);00`a8!T@yzv?4DWGwJVx6LxjgB4xp8PgDA3nv^pVo<|D>GL z=}%VMwr0UuioF?h@XdNFF;ML`k%( zpohyy2Ype~+{o*qx9jS5%00DIs1 zuh2#D1~+X7cQ*?sGo5pZYSrl0Wq@xz82DmpK`@8_N)5|Sj&r&WI;7AL5j|%jZGU1^ zTwrn%v^7`R=vIwhRqNwh-{VVK60LDD(aMQcJ2j~V+|*Qh_}16dAg0gC=I5#Jp5EV1 ztlZ3WHb%O>XXa<=S%)ZX`cB_|yuOXiRbJJ~*J_?DL+-p6AP#z8yyR~@a%z901FhJv z3he(R)ZcVwTssy-*P8{pd)c{W1|1!_^I3e#@8NF790cef#W3yQ)cawdKuUQqRVok@+0%?Vrc@nZ9 zpj?r3cTnnDK~;)K_eYbZn-6N^zw9^cm5mKRr5{ccB{flLm^vkF3vEQNOz|E31noV( zUdVhGQ%s3TSKd#d`U*WAlb#Qp|Jq+z-)Yal7GG8#k&Uu_U|-&g8uoN!cUL}p&lp~nR|1?jW)}F^iUBhKnn1F zfvb5I^TFheBAewsCPE1K6l8M0v1P*M1)1J^FaLZ#yneBN?gFltKK18YVLUSx+h`pP zZnVPS$e9Vf6nqQZXa~^aMN@99rQ8n*W`rQUN0SKS!+g+W3w+<-53VU9sro;c_OQ0@ zhqie5v4^Hs{AOxHXYAi6?0NWjcmSTfbBf5_KszMl-TwZaF_OYB)|64J7jo7z?Kv1m zZ6q_g1RYz(e}5xQSI0S+fG;aPPHC?AiG+XOB@Wz=ssS&Vr~?G;+1^8cG{pyl# zjYTRli$6&S!MSc|M1^KW({!NiU~g{NKBE!i3J^(!f*q#IiOuw=r=C*%Q6ew<2= zJ=o+fJP<*A4UiZ_E{3eq13;lu$f5nk51{L_&uxbf5Wc)eXntpiy~v`D1T2(Oej8@V zcU}2qrWLkq+^;rJZo1?n#S-pK*zuPu``X9SBj{t!t#d16SX`QtBYl^A|0L8jAxjE^ zg1ZL!*PMKX?n%OW{xNcY>It|n`UgGIm}y+4>HqYTanl8uH0|gk0M@>`)fjYRjr*H+ zj+AGy;Qs+nx+nS4|Kpt^Pemk38y9N2nUn&F5__hQKK&U4jDksbQaGu^S z;2+@)G$fk)f_;Z{B+Y1rx?*VXkL;=fhK1=&raZZEX$RrzMRaqvH*5b_y zEM0?WhW%OC1EotzSCMGsM-@_7D&{$%;E#oNyS8;tMeFW$d+)fWLiJ z<@R|xv4J@vztvF7b*R7f|Kf4X&QH_@n=W`}iTyd$~TG(3%DU#gZXCXQ$AF zUnUk3;+B2{(oqmb@z?_^CPCki*uxb$?%oGtI7^aYH$j{_=C|Kh|bd;#SMU5ApC4QObtlWRt zmXp(zw&LVX6^ErMnt;-BBCkVA|Bk=@t4tH0ok)}I(~{UCrq-vs9MlEAO+`GhTukXw z4~@!n9f~6)F2H}K9s**#I1xOygw?$Ek(L+z)wCe}z`Je^MtO9X@uU9-4Y3>kLqp%m z`RgZTr=D6Ap#HZPI>bD=eBiI`ziZr6`su7X9+!A$^$p%=8+(1L zn~n;jJs3OOk

7!)26KM5v03hRTqXG_3AkvH{R42%;G%)i}s=ai7+y<|&i*Dzh~f zD;8}DWwIjf_GZT{;HTl!@=O~aChllJ^zXJPUxc)CTih;S&NGf<9Ms#f59!xsiTXQR zb4iF>?i_UUy~&fkrFQTKH>b7#xe0VPcmS5}Zx)j@;$oa!reYgs_%b?I#rDY6aRDkB z)>t56+B<+&NdoI16Ow(}OuKMT`Dl&6>F5kuQDq^b13O^5?%?^a6B_$JPG~GZv{&)^ ze>))#M5%3z&`9x$CzI}vT5fiVqMU{0IO52t?E{pEs1*?jQ#I`x1=@fMn@X>$eJ_S) zeEJflz~AOFY;#!(UVuPGSXEDR{2o+{95qD9+&adSnlH@V?LLMxW+0!}SYsjAfhl-g z&kQHDi}`L=+mWVaQLs=WA;Q6)tHVhAFlvuAiBTHTj_?iRezqk%9#4nc zxsDc};a)_RTtyQzo`L-Pw9Jail)a!_GI*{6jMK?;u<-YDpyr!q&pLY<7E+!)USx(v z;W>W3X}CjvW{i=K|54jwg7H{&gUOeb-97!TvO>|7r!UyFT%9nN;{4XLT?YTvNcchw zeb%kSc*vy46gdJgwL zl_E#NWJ-1N7tH&2p0p{13MJ6Rbg0QLVO92tmavZAKs=srgE;FyvIVn=7doknrvs2^r}YDcxrAYGoW?6%#Mf_FZmQGrKQN`qa2_^`W@W6?ZxPrDNXS_8Mgpe8 zEhvicn*hVvM|%yPEGgW26RT!QN-189D6F$Bvf`^=LFvbR#bbeJiKoCui+@SL%FKV0 z0Pz1i35eSrvZbB{>o&lD_7nVWKNmiODn%c_;}GvEmn}dMK$8$o7bj$Hrp(uz7(_*y zBr1lnP9oe9_?g%FJ|ZUL3iCnvKh)QAi|O2L`kGsP=RM^nuF*-k`xE2byZHhHz6;XA1S z$gbu@JV6|tiZgUvZ7PcdWf$erMm0|tjbx9edx9S+- z-{CuFb4@+obgWqX5U$!m9eI`Ow44%|hQ$$pCC#d>#T;+`Na;FQ7EK~c_8 zpjAoXeL#OYq(-qTs_|@V+y(LMm#bJi$0rp(guza3|Q=UjuTKh~B4>5AHVTp@i45dV#gjg0r!flk+|H!>IpeBwJ_z?i@2a}-td%lV zeL`o4=}dGoWfiWXWMOLjSjDweX|u9Li$9Q^3o*-HJLjjaOTs!BQ0anSD{3{?v?n@- zbO{xQ0!1H9jlp%Wd1DrxfJ8kO+TvY2Nu)+n>(W_oOjx@13Rkcc`5@-yh~>pJIiJ9; zK^;I8mHk%#1eQK=y*fm2Z2z(PPwCA4|4N5|#e4EUN{2aHDC9uW2RYDcAR#=vkg8<4 zY>>_gpd1on4ifmrtda~Gm@D3KN`n=c-9D$ik&U1es%2e*zxP~jj#u`yu=(W{;WOZH z8Qo2^R#0hIr7$e{#UnWWySi76TbOU;;rx{|{G>f%oPnP3r;i~O`F)E$|zQ|+AS8QjW2rbot)o7aX zxeox0|89c-r#1+iy_of18zgvYgC1=CutA}Ef3rc+KWtF2wGeq{iM4{C`OjNJtq+lj zCc7~+gZMBAo4PKqJ7mbNL>GZdk5zndp1SSnW~XrU^>F08?{9m7FFS*E$6`hvuI%KV z03hqC-}p+jP63dU*Zr2r{TYEP{{ujau{Oubj&Ixe%Db_a$#%V7ylq6@iT$+Xq*cyP z5#HD!G(D^!Kb&c(RG>U#GOYne;Gt(~+&Mn(Z}01P!lfwEiMK4Xrvk-y<+YLD^5hq- zD)rH3bMleKvR|oy1LJ=apxGdDN~Q&2{O7B$SgcKtQT|0!V0r1@;$D^=VRE@x^v!gf zI1QOMDyt?uEDEd%vrT=!>My{o-e;?TQ>!)6HPS@}CcRb(Ueqgh@YvsjKa+*T68N-U zz@WAod-bAu;m{mk>U<8leFD>x-^l(Mr6y1_n1ESV;ckYea>wbZ8M0Ef51pF5C!sR+ z*N6+~Q6W#1GdqXmH;KiOZ;}pawHXW}Z_k{!pW;*yQmA1VjQOm!mY888!s8q9FRId% ziX;2sH3c^dM4b!X%0&62!8y|en;7k5WkokaGfuvaf?7JELZyXUg=R$8_4uq6#dps~*Q2}6+RkGO`}1yl3%E-aiBAH0XUB}1yI^ad zU!&f`bLm($=VH3I4%X%cB$zpnd{ZGbV1_+#lWn)n>Ji?gJdLI}q_1BDdOF-hsfsi6 z@TC2PkSb0Pl1-Ui;|W5F2zeFqg4OG%S&*=lU1b#m$vn?4--9Y!C&2M5y>gu2r@M%> zfvWm5eH(Y!MG?Xm#U}VKfj}iPhoEtZ@>d&Z8G67vZ%MVzoIPI%f^kwKff)d|yGiH^ zH}U1U?I)U8*}lVu;Hl2Xcb7deYeX)Fv%QJSJQl))nyK6muhc{;eEI%?*se5;7)lPS z>ohX!vz6CCR68Dy^}UBwAlq!HbuOIR5@J0IPWw9D>II`C!yE!&Qb`5HTx5?az;eAK ztWnPkD7}!Nay}hul)k>3EG8E~YjuvoD|Tv__%aq4dyMDkw zX?jN0WpKH2*}irlS(JW6+4Pvypp7{2%dK{phtOr{OQf^D?yR|)4D4e*u79|<3iGKx zBBpb_4V^VT9BWv>o#n@@?SOL9f>XLD#5gs6IVWji$qy!6%+GQLHU`CxK3T>GKNiTn zrtC&YXP)drcqq;+I9|`ei1Dr&%iS^*P_TBScJ1I$Pbk$dk#kf%f0rPOI9I+k;OZLB z<0_a9qDtt;XtuDeEzLV}3E6_ORCeb~n+-r%wo^+4IkiN@%cqtIb^%k$9?f(F3vJJV z>^p77$Jp*yF6Tay#rw;4*otmz?|G;8Cben!T$ming!m9=&AlU8z;H(uuaY;k4OKfv z_BnW1&|jFS8%WhFOJ9ocL$N?M^Cgzr3?tU+iOKt)d>nMaQPU&b%@=zhhyqG|d9hVf zPw4)K)kg0Ua9iF}Nqkf6j50~3`c0+%muF=9vU^9wGXBQ%`DgxGu7*0exR-NBz>L6S zRJeABvfk{4U$u0BGGb)aRg#wOR%P1iCKxf>PP8|w@>$Vrc+w#kR?^Eec)M!?r(fI4-j8LUcJ|UxuMUm|LgB}f5ld# z$NfJlii$+qy5&*gqtaLWZVmpy6)=dz%3T*BDTon&e(C1y^qqq7$$IMbIAPkjf&7pp zlQ%Ylc%rwYT81x|Db!DjYi!gD3W?7^%`vdtUCH)ok8(G*nm(0By5G~+phv6INQtXQ zpN2sgRhRcmOW2~<%7LAA3u@C^y=)xu7H8}v;j@&k&s9c#M}-gWSl!{@sI=(Y3_ZHu zw_JK#AN9sUmM6pG(uR7e5^~T~H$56gX~d|8CF;0ysE-n$ymU+AKZ_o&;paOiQ+ zaAV9pTHi?yTzuWvmuxF)xKG1# h+I=Zb#lm2zL+^GED;|6|0{{TW$C>I`hkybWz@LUMIqm=e diff --git a/charts/postgres-operator/values-crd.yaml b/charts/postgres-operator/values-crd.yaml index 4f4ec3324..a66911f96 100644 --- a/charts/postgres-operator/values-crd.yaml +++ b/charts/postgres-operator/values-crd.yaml @@ -32,7 +32,7 @@ configGeneral: # Select if setup uses endpoints (default), or configmaps to manage leader (DCS=k8s) # kubernetes_use_configmaps: false # Spilo docker image - docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p3 + docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p4 # max number of instances in Postgres cluster. -1 = no limit min_instances: -1 # min number of instances in Postgres cluster. -1 = no limit diff --git a/charts/postgres-operator/values.yaml b/charts/postgres-operator/values.yaml index 83426eeb2..e55da4b86 100644 --- a/charts/postgres-operator/values.yaml +++ b/charts/postgres-operator/values.yaml @@ -35,7 +35,7 @@ configGeneral: # Select if setup uses endpoints (default), or configmaps to manage leader (DCS=k8s) # kubernetes_use_configmaps: "false" # Spilo docker image - docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p3 + docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p4 # max number of instances in Postgres cluster. -1 = no limit min_instances: "-1" # min number of instances in Postgres cluster. -1 = no limit diff --git a/docs/administrator.md b/docs/administrator.md index fb9f774fd..a96732259 100644 --- a/docs/administrator.md +++ b/docs/administrator.md @@ -618,38 +618,35 @@ A secret can be pre-provisioned in different ways: * Automatically provisioned via a custom K8s controller like [kube-aws-iam-controller](https://github.com/mikkeloscar/kube-aws-iam-controller) -## WAL archiving and basebackups +## WAL archiving and physical basebackups Spilo is shipped with [WAL-E](https://github.com/wal-e/wal-e) and its successor [WAL-G](https://github.com/wal-g/wal-g) to perform WAL archiving. By default, -WAL-E is used because it is more battle-tested. Additionally to the continuous -backup stream a [basebackup](https://www.postgresql.org/docs/13/app-pgbasebackup.html) -is initialized every night and 1am UTC. +WAL-E is used for backups because it is more battle-tested. In addition to the +continuous backup stream WAL-E/G pushes a physical base backup every night and +01:00 am UTC. These are the pre-configured settings in the docker image: +```bash +BACKUP_NUM_TO_RETAIN: 5 +BACKUP_SCHEDULE: '00 01 * * *' +USE_WALG_BACKUP: false (true for Azure and SSH) +USE_WALG_RESTORE: false (true for S3, Azure and SSH) +``` + +Within Postgres you can check the pre-configured commands for archiving and +restoring WAL files. You can find the log files to the respective commands +under `$HOME/pgdata/pgroot/pg_log/postgres-?.log`. ```bash archive_command: `envdir "{WALE_ENV_DIR}" {WALE_BINARY} wal-push "%p"` restore_command: `envdir "{{WALE_ENV_DIR}}" /scripts/restore_command.sh "%f" "%p"` - -AWS_ENDPOINT: 'https://s3.AWS_REGION.amazonaws.com:443' -BACKUP_NUM_TO_RETAIN: 5 -BACKUP_SCHEDULE: '00 01 * * *' -USE_WALG_BACKUP: false (not set) -USE_WALG_RESTORE: false (not set) -WALE_S3_ENDPOINT: 'https+path://s3.AWS_REGION.amazonaws.com:443' -WALE_S3_PREFIX: 's3://bucket-name/very/long/path' ``` -If the prefix is not specified Spilo will generate it from `WAL_S3_BUCKET`. -When the `AWS_REGION` is set you `AWS_ENDPOINT` and `WALE_S3_ENDPOINT` are -generated automatically. - -The backup path has to be specified in the operator configuration. You have to -make sure that Postgres is allowed to send compressed WAL files to the backup -location, e.g. an S3 bucket. If you want to change some settings you have to -overwrite Spilo's [environment variables](https://github.com/zalando/spilo/blob/master/ENVIRONMENT.rst) -using an [extra configmap or secret](#custom-pod-environment-variables). +Depending on the cloud storage provider different [environment variables](https://github.com/zalando/spilo/blob/master/ENVIRONMENT.rst) +have to be set for Spilo. Not all of them are generated automatically by the +operator by changing its configuration. In this case you have to use an +[extra configmap or secret](#custom-pod-environment-variables). ### Using AWS S3 or compliant services @@ -683,7 +680,8 @@ configuration: wal_s3_bucket: your-backup-path ``` -The referenced IAM role should contain the following privileges: +The referenced IAM role should contain the following privileges to make sure +Postgres can send compressed WAL files to the given S3 bucket: ```yaml PostgresPodRole: @@ -703,6 +701,21 @@ The referenced IAM role should contain the following privileges: - "arn:aws:s3:::your-backup-path/*" ``` +This should produce the following settings for the essential environment +variables: + +```bash +AWS_ENDPOINT: 'https://s3.eu-central-1.amazonaws.com:443' +WAL_S3_BUCKET: '/spilo/{WAL_BUCKET_SCOPE_PREFIX}{SCOPE}{WAL_BUCKET_SCOPE_SUFFIX}/wal/{PGVERSION}' +WALE_S3_ENDPOINT: 'https+path://s3.eu-central-1.amazonaws.com:443' +WALE_S3_PREFIX: 's3://your-backup-path' +WALG_S3_PREFIX: like WALE_S3_PREFIX +``` + +If the prefix is not specified Spilo will generate it from WAL_S3_BUCKET. +When the AWS_REGION is set you AWS_ENDPOINT and WALE_S3_ENDPOINT are +generated automatically. `SCOPE` is the Postgres cluster name. + ### Google Cloud Platform setup To configure the operator on GCP these prerequisites that are needed: @@ -772,6 +785,15 @@ pod_environment_configmap: "postgres-operator-system/pod-env-overrides" ... ``` +### Restoring physical backups + +If cluster members have to be (re)initialized restoring physical backups +happens automatically either from the backup location or by running +[pg_basebackup](https://www.postgresql.org/docs/13/app-pgbasebackup.html) +on one of the other running instances (preferably replicas if they do not lag +behind). You can test restoring backups by [cloning](user.md#how-to-clone-an-existing-postgresql-cluster) +clusters. + ## Logical backups The operator can manage K8s cron jobs to run logical backups (SQL dumps) of @@ -792,11 +814,12 @@ spec: There a few things to consider when using logical backups: -1. Logical backups should not seen as a proper alternative to basebackups and WAL -archiving which are described above. At the moment, the operator cannot restore -logical backups automatically and you do not get point-in-time recovery but only -snapshots of your data. In its current state, see logical backups as a way to -quickly create SQL dumps that you can easily restore in an empty test cluster. +1. Logical backups should not be seen as a proper alternative to basebackups +and WAL archiving which are described above. At the moment, the operator cannot +restore logical backups automatically and you do not get point-in-time recovery +but only snapshots of your data. In its current state, see logical backups as a +way to quickly create SQL dumps that you can easily restore in an empty test +cluster. 2. The [example image](../docker/logical-backup/Dockerfile) implements the backup via `pg_dumpall` and upload of compressed and encrypted results to an S3 bucket. diff --git a/docs/user.md b/docs/user.md index 6c7f675ad..8ba649bdd 100644 --- a/docs/user.md +++ b/docs/user.md @@ -706,7 +706,8 @@ spec: ### Clone directly -Another way to get a fresh copy of your source DB cluster is via basebackup. To +Another way to get a fresh copy of your source DB cluster is via +[pg_basebackup](https://www.postgresql.org/docs/13/app-pgbasebackup.html). To use this feature simply leave out the timestamp field from the clone section. The operator will connect to the service of the source cluster by name. If the cluster is called test, then the connection string will look like host=test diff --git a/manifests/complete-postgres-manifest.yaml b/manifests/complete-postgres-manifest.yaml index 835cb0748..7f7b34d98 100644 --- a/manifests/complete-postgres-manifest.yaml +++ b/manifests/complete-postgres-manifest.yaml @@ -9,7 +9,7 @@ metadata: # "delete-date": "2020-08-31" # can only be deleted on that day if "delete-date "key is configured # "delete-clustername": "acid-test-cluster" # can only be deleted when name matches if "delete-clustername" key is configured spec: - dockerImage: registry.opensource.zalan.do/acid/spilo-13:2.0-p3 + dockerImage: registry.opensource.zalan.do/acid/spilo-13:2.0-p4 teamId: "acid" numberOfInstances: 2 users: # Application/Robot users diff --git a/manifests/configmap.yaml b/manifests/configmap.yaml index 97f038cf6..c35344b4d 100644 --- a/manifests/configmap.yaml +++ b/manifests/configmap.yaml @@ -32,7 +32,7 @@ data: # default_memory_request: 100Mi # delete_annotation_date_key: delete-date # delete_annotation_name_key: delete-clustername - docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p3 + docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p4 # downscaler_annotations: "deployment-time,downscaler/*" # enable_admin_role_for_users: "true" # enable_crd_validation: "true" diff --git a/manifests/operatorconfiguration.crd.yaml b/manifests/operatorconfiguration.crd.yaml index 00ed5fb56..227ce6689 100644 --- a/manifests/operatorconfiguration.crd.yaml +++ b/manifests/operatorconfiguration.crd.yaml @@ -61,7 +61,7 @@ spec: properties: docker_image: type: string - default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p3" + default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p4" enable_crd_validation: type: boolean default: true diff --git a/manifests/postgresql-operator-default-configuration.yaml b/manifests/postgresql-operator-default-configuration.yaml index cc0ae609a..0c0daa924 100644 --- a/manifests/postgresql-operator-default-configuration.yaml +++ b/manifests/postgresql-operator-default-configuration.yaml @@ -3,7 +3,7 @@ kind: OperatorConfiguration metadata: name: postgresql-operator-default-configuration configuration: - docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p3 + docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p4 # enable_crd_validation: true # enable_lazy_spilo_upgrade: false enable_pgversion_env_var: true diff --git a/pkg/controller/operator_config.go b/pkg/controller/operator_config.go index ac21733e7..dbdd4afb4 100644 --- a/pkg/controller/operator_config.go +++ b/pkg/controller/operator_config.go @@ -39,7 +39,7 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur result.EnableSpiloWalPathCompat = fromCRD.EnableSpiloWalPathCompat result.EtcdHost = fromCRD.EtcdHost result.KubernetesUseConfigMaps = fromCRD.KubernetesUseConfigMaps - result.DockerImage = util.Coalesce(fromCRD.DockerImage, "registry.opensource.zalan.do/acid/spilo-13:2.0-p3") + result.DockerImage = util.Coalesce(fromCRD.DockerImage, "registry.opensource.zalan.do/acid/spilo-13:2.0-p4") result.Workers = util.CoalesceUInt32(fromCRD.Workers, 8) result.MinInstances = fromCRD.MinInstances result.MaxInstances = fromCRD.MaxInstances diff --git a/pkg/util/config/config.go b/pkg/util/config/config.go index bb208e822..93fceff01 100644 --- a/pkg/util/config/config.go +++ b/pkg/util/config/config.go @@ -151,7 +151,7 @@ type Config struct { WatchedNamespace string `name:"watched_namespace"` // special values: "*" means 'watch all namespaces', the empty string "" means 'watch a namespace where operator is deployed to' KubernetesUseConfigMaps bool `name:"kubernetes_use_configmaps" default:"false"` EtcdHost string `name:"etcd_host" default:""` // special values: the empty string "" means Patroni will use K8s as a DCS - DockerImage string `name:"docker_image" default:"registry.opensource.zalan.do/acid/spilo-13:2.0-p3"` + DockerImage string `name:"docker_image" default:"registry.opensource.zalan.do/acid/spilo-13:2.0-p4"` SidecarImages map[string]string `name:"sidecar_docker_images"` // deprecated in favour of SidecarContainers SidecarContainers []v1.Container `name:"sidecars"` PodServiceAccountName string `name:"pod_service_account_name" default:"postgres-pod"`