From 18bc8db8685bba6211813eb6db7223a967097b02 Mon Sep 17 00:00:00 2001 From: Marius Oehler Date: Fri, 23 Jul 2021 16:30:41 +0200 Subject: [PATCH] Closes #1142 - Add documentation for configuration staging accross multiple Configuration Servers (#1149) --- .../model/RemoteConfigurationsSettings.java | 2 +- .../src/main/resources/application.yml | 10 +- .../docs/assets/staging-chain.png | Bin 0 -> 18602 bytes .../docs/assets/staging-pull.png | Bin 0 -> 10572 bytes .../docs/assets/staging-push.png | Bin 0 -> 10273 bytes .../docs/assets/staging-workflow.png | Bin 0 -> 17102 bytes .../config-server/configuration-staging.md | 167 ++++++++++++++++++ .../docs/config-server/overview.md | 2 +- .../website/sidebars.json | 3 +- 9 files changed, 176 insertions(+), 8 deletions(-) create mode 100644 inspectit-ocelot-documentation/docs/assets/staging-chain.png create mode 100644 inspectit-ocelot-documentation/docs/assets/staging-pull.png create mode 100644 inspectit-ocelot-documentation/docs/assets/staging-push.png create mode 100644 inspectit-ocelot-documentation/docs/assets/staging-workflow.png create mode 100644 inspectit-ocelot-documentation/docs/config-server/configuration-staging.md diff --git a/components/inspectit-ocelot-configurationserver/src/main/java/rocks/inspectit/ocelot/config/model/RemoteConfigurationsSettings.java b/components/inspectit-ocelot-configurationserver/src/main/java/rocks/inspectit/ocelot/config/model/RemoteConfigurationsSettings.java index b9713759a9..b9aa4c2e4b 100644 --- a/components/inspectit-ocelot-configurationserver/src/main/java/rocks/inspectit/ocelot/config/model/RemoteConfigurationsSettings.java +++ b/components/inspectit-ocelot-configurationserver/src/main/java/rocks/inspectit/ocelot/config/model/RemoteConfigurationsSettings.java @@ -26,7 +26,7 @@ public class RemoteConfigurationsSettings { * Whether the current live branch should be pushed during startup. */ @Builder.Default - private boolean pushAtStartup = true; + private boolean pushAtStartup = false; /** * Whether the remote source branch should be fetched and merged into the current workspace branch during startup. diff --git a/components/inspectit-ocelot-configurationserver/src/main/resources/application.yml b/components/inspectit-ocelot-configurationserver/src/main/resources/application.yml index ddc025717b..7e0846f247 100644 --- a/components/inspectit-ocelot-configurationserver/src/main/resources/application.yml +++ b/components/inspectit-ocelot-configurationserver/src/main/resources/application.yml @@ -72,7 +72,7 @@ inspectit-config-server: # Whether remote Git repositories should be used for configuration management. enabled: false # Whether the current live branch should be pushed during startup. - push-at-startup: true + push-at-startup: false # Whether the remote source branch should be fetched and merged into the current workspace branch during startup. pull-at-startup: false # Defines whether the configuration files of the configuration source repository should be pulled on the initial @@ -85,11 +85,11 @@ inspectit-config-server: ## The remote Git repository which will be used to fetch workspace-configurations from. #pull-repository: ## The name of the remote ref in the local Git repository. - #remote-name: source-remote-configuration + #remote-name: pull-remote-configuration ## The URI to the remote Git repository. Examples: https://github.com/user/repo.git, git@github.com:user/repo.git #git-repository-uri: ## The branch name on the remote Git repository. - #branchName: remote-workspace + #branch-name: remote-workspace ## The type of authentication to use. Possible values: NONE, PASSWORD, PPK #authentication-type: NONE ## The username for accessing the remote repository. Only used in case of PASSWORD authentication. @@ -103,11 +103,11 @@ inspectit-config-server: ## The remote Git repository which will be used to push live-configurations to. #push-repository: ## The name of the remote ref in the local Git repository. - #remote-name: target-remote-configuration + #remote-name: push-remote-configuration ## The URI to the remote Git repository. Examples: https://github.com/user/repo.git, git@github.com:user/repo.git #git-repository-uri: ## The branch name on the remote Git repository. - #branchName: remote-live + #branch-name: remote-live ## Whether force push should used for pushing to this remote. #use-force-push: true ## The type of authentication to use. Possible values: NONE, PASSWORD, PPK diff --git a/inspectit-ocelot-documentation/docs/assets/staging-chain.png b/inspectit-ocelot-documentation/docs/assets/staging-chain.png new file mode 100644 index 0000000000000000000000000000000000000000..222f3f4998708942229be50e2e3803493a644302 GIT binary patch literal 18602 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 literal 0 HcmV?d00001 diff --git a/inspectit-ocelot-documentation/docs/assets/staging-push.png b/inspectit-ocelot-documentation/docs/assets/staging-push.png new file mode 100644 index 0000000000000000000000000000000000000000..93f5183d5cc5dbc65403381f8e474b7e15cec3cc GIT binary patch literal 10273 zcmd^lbyU>P_ctI)i7c?7(k!)k-5rvPf*>IcE8Qg>N-8NG64D{H zAdDn z@Qoq72L7vO)D7X_FySa8@U zTP)5WAsQ@NZybI$<>S+s!|h44ow?banTzkM)2H?1D2{ntJSH5xc#5^n zcEybBe8mZ-Z^5!6)X1YpvM>B`2q%;>p48Z$;hLMQh26%NWx~e|gT-DY^!NXW&x9^g zmBJ$kcniKB-2y_!DE#3S!Uu$Omkn1y15*ZQxi1C8;QO!}tCJJs;mdx~#)BZMUotqn zk~PQEm6pGpL{|j|^JQv;#UAo$@3tilzAO%YnRf^c4laaH5hoQka_yh_zH$B){*80b zi*$49V+1h?$(3i;Q&r(P4-;b^>&C^!RoTzqPZG9CDs$?hcY7o!C#NC&fz;N|I2|iRW>%ZsTCV@^NfXs=TkLy>Gm%=U*E3sJh1HU?R~vMV_5SV2NC^( zNU@d)5{x5`l;$L-MpVA+!%R)-clY&W|NiaD%nnApE8~Ao8$r!W5g2CUdGH7sz3q|B zq~G9bBWqf|Yh`H}$iK(+SvrXT^F{G%U?I~FT(Eg$OdJwOQQUSs{{~*Gv7*ePA|4G1 zSI^>Q@PVh^Yh6EnvNDCs$TTO%XTSz?C4TKmAma2PSrY? z$QoPEHYU>0(q8#JH8mAvUszh2n<*bk{8?K^=ceOqW22w?0<;G>9k<&y#FCTu5dfT-5kOoJQQ z^R9A7H`V?&r@gP*2h5W+pWNLDWubL#RN8W%O2I*UzZF|mmWu7M3}uy(kzoqTI+_<~ z3~I+HxTcI`bBl!}lxMxq&&y*vZWNb}fj`G~ET-I7d&4XtA+fZVn3CXQERgN$K4E7l zZi~hK{+rE#TSXo(li%~w1?;Ma;Q5*6z6H!6Sq(%K%Ah>w4^#kkFXr1et@BPS7 zyMYj8>T*IZN$AXsgIaopv3Cu+U)RfFrd9MM@@ohwZM*W*JC(uT2R@)-)jL&e7m;I} z#5F0o{j_RO?7roy3Kc&uFRvUulU7#H!sk-;RB^4wEZ4ZB<5UT^YvQsoPqehC;t~=F zMDsDW3+>?nKI#R=OWSWHBZKKqOI@?PAL)->YT!eJ11y}}AHF9i*FMDQn6{byR=>_M z8$#*G;>3el+nsM?4t}+H7r6n=r_D*FZOaxV;y{a1Z44!Ba7SPs?Tbqw=kY&OHTazV z_ScQ++7nELMipFWxT~f~iZPA3zpiJ6+wA5XMzbhh3m0dMjX$_^AF5}B2OtH4^eqgq z_d@I5<pXZa z(k0Y3C=#Y?SQ7?D)S{se8gCoe=ETqNoXbS8#x*z{^S$T@3^!rNK|zJM=m_z&Az&j> zNvS<3Z>{%J*f3`;ElErmGP0^e#ZbtsA4*%b+~m8|^u~QM{6fNIInFPN9rM`M(Oj#aV@pIdmhNdeP88*jD^A#HldG zro{6(tuWZd@^yw+{>i|er?ZmTt49lqhgeyIaPb0h5ah(T__DHWIH(}cwfi`3K?0z?4e!a>)Ey~N&l0VBYc9?*OBUdLm4`y8Axry5QU z0d5<(cempqwO8<%e$eB7N04_#5P*5zL5I8>5FA`9q6s)!TtcF_PXwT{68_OX@HY4G z@R*Ew0q$67MtzdYAOT;{OZXlIlNG7S1QG-=f$?xcFuo8dsF&)CPj)E~7c@ZrL3R?L z@Wv|cZ)he1z~v&a5vDd9;XX8%awz;#AHq67l8DP?ov zO+#~2Qx7zA9%k0p*Jpf+zhm%#ii(QpYJ=7I9e`*o#fD8ufVHuCuJhU>E?(a3j)+7jM7ir2go85 z825JWp1}#*BMS$H?lpvw0H4f-8-~dX^LCMiqq3wEQd8-*p*G*E-vHOpAxImgS7waM z`=t8y4F*X#J`qXS*_k&pm!qR&Jx^CK1yapVmkIl7)mTo*YK({3_vo{V-8*(wiqdkz z$vUT8h>T(+9eHW7L4&aQd7_ZnHJ5-a`$SQP=M&39X)XEr$`imv*d-i$+@Q8lE3Y*l zgaPlXKgIVsQ*)`XMk3`ZF65gk4n|32aAb<4CRfST$5fI1ajp^-(h|x8(S7)38**WU z<}k~JkEFrGYBZVhdpvo@M((_;-y9tpqNvJMKH2}m67{V$n51FzCh?_&aQ9Mj5=M{d z_W~vefK_AkF$mMJzs{xhuX-sfgO5302ehkoMh3pN=h;sL2ie6 ziEX?8iqX;HYh5lp2Cfkttoaa0Vcq{iN(;I*S;_J3-gCy$Te@XR%G zdkOV(T+??1*nBk5H_$r!06hkVvwn*_lhlnz`$fcpsH07oDiaNF0t5u;>~qfyEe zF_Isy1yz2=oKPrzx>;G4oR+F$w=p*_j_mhQ9V)GJS`C3B2gQ*ahTOkXku$^UGQ5Je zZ9}&a(erk;wFKabOM|O=c-u=%o(J=#PA2rvqLeVVP6;%*ypCmIS~JTqhA|3`uF6$1 zY#lgtuZ?K)o$=afdVa3^8;Vu1)cV5Oko$!bowaj?;KplD2|PZh&6THX&^qOt)p9ua zuQ|Xi_C_x_@+ZNcoA5B?sHJk1d|Bx0Zk&IQBzJQh@uFjE@Mfo9J=T4Uy;zQW*3Uh? z6f?n=@Dx@;?PNGly}coHn`D5>^7x_cb-#mAosN)gC7pCJWb~%9a^@`^n71cCB3hl2 zpax9#3jq4%fyA)606i-n32-)N*w3F1ugKZFeUfdCRSnJ!@oxR1Y)0BHCJf@EzH773nh z6^ELNQ0{A4QL;bWU0UT^>VwMv$t&LPeA{0*estjSbBuhhEv&S9kyfx<8Kg$J*;$0YgSV8m}4QKNbSw}(7^Nq#=$U^#w`*z)G`+!>>+3HS3 za8FLkE9Bd$+Yeli`DY3UKrA4Lb_ct?00YkYW=WNpE)^vmG=lW}qkCPA0x|PB_Hmta zhe76d+Xi0y*HD_hlEL}T!uz4Cj;?u+CA@WPCd*OC!QWfouX?S{ra!7)BAe>Ah0Jy6 zyEf=PE&sGwdxVREJ{^J}E%vDunSk2}2d48NDCwdr?>TI`bezwi{w@p*w(hTAIu zrLTf+U2H+ME%WAmQ?$37zxq|uZ->Rj#^SeY74_ITEF5gjLy*m?^mGIO^W*^L5g;!n zA0bhB+!ermfTO;C6!;S=9eRt9XK1Quq%z`W!6Rky_xQcXp| z4oUNMUY6$>KWn|vNvNNA0}`90yB0BPn?W=Kt!-lJSuLY4B!AC`(Aq+puhWV0n=`(p zl*?OgIXO9z75P$k7~YZk>xxd=)!`uc(64K+Zi9>IcX=_*W@8TYx4yAj^^`8M%v>KT z6=3@*fem_M-Azcp!XF8MjRpi1;^Ehyp#&-rqX{ zAx#Ddnxchc`SJ0Z0SqmjLSZ<-|C)lU%qCA}BFEGOzOr?s$w|QprGQ}z_#tg_Om9GR zlI`F~P6Jw7S&>oKV)KI`4mQg+VZpODUDI9J5q;Xb< z_vJ4kTpi@#$qCnn4@!pS_W{cH<&w%A*_n$->d~)Ts(d_$*%$2MZ#>luw5N;Az9Rx{ zusJ1`0+ozJwd`p3@XY1P#k&jWpJ!j#c)fl9yh?yKcro&1TYO>P(7V#ks#>cxP#uo{ zeL=NilYd$euOtjM8&vOWMn&bb@5+;yU6$d#{_He4YVeo9@`QIPg5lAC@~2_Zk>bk@ zJK~-FUG0{)wWjh*@2BsExgFbv1+ZuekF$Hrj*JMPfC@l-#(n2VZ<3Ej#je)cQ!cg81OsHG>h3^b^wb z`Mn~~-Ub-jeWydqM^Pg^P0X_~C@zSIPG%CZBfRr@78687k(u_+Ki4CV_F$7EI^#;N z(SlS(LrlNSj^u{Kk|!ZEeYkowDYa7H&P7`D(Vhwoe*p|>*e+enjWIvof1xWLAw^Ka zz?nd|@}|_)CCynl(o>kD!FHt52oYGqbHr@84MBBvjqDWAItPuDkotP3lyRbq!(R+1MDGw|<~? zm(@>P93f7b{`|?bfT!P%XZLM^t~DtIkdEAe^5u;CP+(il-mUn<1vzOE^*<+_qcf75 z*RhTX@WtuM*iptB$HCOo$KS1_>XXI$Q%sy|2r=+ct%c8L_3AK&TI&%g1gVgH1q1); z{QeGl)^E9MMCMST{s(50m8HXem@wtMDmYSDQboS`FwCOl>RA9>Q25>n-7ENmNHzq@ z@yt1D%wQlV0)OW0VbtNL-;9Ibc6vL961UrFjiVC2-8gr+N6PIvgkyKV0YnDYmcPVu zPFXPnLVmh|a6xYMfAwW>Z+;&_HJdA8Js}kIDc~g3eBwx7zHxoy8X~$pe{l8v_Pa3Y zfwN~sm@h?=>m_Ex$UxhZoGubnmc-)A$yY!aqqgUVQ`YCSh%i{CU`a!o>P@2h^<)M< zMD+ISFK9B27z!#D!b`Um+{J*u*`~zn9Jbu`1ts) z*Kg~B{NoMk+d?mUnMzE2dGxEoa#WL7Jf*zI?WUEru3ZAihR# zSsJ02uaAUGmVxR7UQ`VGoLVvLg`h zYZ@4&9@(uAWiPa)F`fln0EQ`im4ukse0#c1ZVvtP=g*G);^N{edo;JUmio%8`xZ(&E)i1QygA(LbBZ^xHPcYj<4~{013|uQQgt2^ zQe4SVGM=Z*ztX;w2nZRpE%|uiCLDX(UL2Z?-PpZ->0+I1WTA=4v{sV;XlFyswIO0i zjXYy6X&!6xI=nL%sQ0VvXr3S)t`Nn*8#(U)xXkQJ60g6XI?!UW;)V0>4>>H&K*tQz zxrj{4TJxB) z5j>lnfDO0|7dy4^>eXPG%?A%~1sxU;%=Ql+JP49qAUk|RD{`$F*U5kHN!eKqmups7 zv;ix%w0C1wm&piaZ+9H`tKa5d*a$@~S6&it1}tKLb1Fi&tmsLN8c)PmGHXufkQ?+gYrFP3id(D#=5>C7 z$o~1Z(5qf`rS}aC-#&kUhHc;aDkZ=7v7ms<6NI82Ight_%IOU&G#NK43@gGz;1A+6 zX0i1flO(A2omZWmou4QwQ-&vJVh0p|@~krvp|W1VtXV-?1xGpF%6;Qs@-A%uN-|Qz z!XkfScN(N@6A!y1C6Lke0w>`dX@pPjtxWUtc7ZJaYB*0dXM+ZdV&rw}ij~!6$K)rp zCCuomI1IJ?Khr@AG~4g>8$6!m)XJ2Fl4ojWE!#XVA`gR^XqrTsfSv6p+qd`feqU7Y z-RZYKq_3uSqc25FNU2>^ou*$UVRTuv&Mxfg`=?3os+S$SHKM%|oDB-dP^M#ENF6CJ zW^@XSV=#yy@9Eg>GvWj53p*Q3|} zE@+?Pg$w5!36!G+4<8?2S#*-k?x@*ig4{!~XV*-lDs@Ng;WILja3VFL=nW1wgW-)`4>KVj%f1)>Rcf;fEN{oAJRs{re{qk ztq!{)vV|hQZ@IrKrVhiH5+zA7V7`1iYivGs@my&+4_)C+RlI5F9*}9c;h@r`j4-6i zvGpEXG}tIE(*KCwZroSfn5;BYGCN~J-)QoCKUS=(Lc*Xc8#*f$JNB{oLs}CQDXCL+ zO6GB#%`%FCPo4HrqegbO3960)X!I)`8D1E8D)%x5H5kq)(x#u#Yw>br@3C3sEsZfg z`Yf~3At^mda37j2e&yLpC|vNa0H=LK0&jncn7q?UZ|2_K-kpUnc9=Y!9YfBHwV7C7 zC~|f%Tw1dLiK;rJMWB}G9-yjD0>oky*IW30f#_}Sg8)5tbIfdgjX-g|#A_QTOV&6eDGiyHBI~Way&2+jzj_t0hI?)DZc@4WtnPi1qgVy6mh1=6k2UEzllwZT?{n&? zt+AVV=fR}0=^~FMb@r2OV5(|C`6cVB&JtnN{fk2$I8Q3BE3YIB}) z;|0a}iTlj)wkP9^#LWAJMrY{rv9oB1G{Ni{iB|uGSnTPO~M&ccFc;%I7D24WO$> z)kWg>oYN6^vq#`U-YqPKuq8zW1%X8hw%R2l%c(Q)CXji(l{4EqI_U8@>Aq}p&kmBG;#;te`%8f^P) z$?zRFKB>$IW$1=@y66aYLs`k7(|-4 z8>D&?Fl)KXGTBDje`0jYj4odJ-5~rWr$b6iv7GMbE3VX-oc3eL>pa!ab8jH0f#_m^ zm1)i{Zn$4HA5ODBLw^5LmG9XhlN>XWGJ=#^LgQ%3&;|L(ETk*0-#{&5bpV1t;v+x( zF?w-i{6@2rE+O+a%;6@-kne{_7^MRaRD(kfHz-@6DHO(CnEV>(4MdY>J^%31Xz`;B zedk|r)z^hFlzPCv^`U|zG?nsc3-#XHubN@eNav+*a9{XUHU`Szzzzs8S!LZwTM+)c^vqTzz7r+?A*4zc$$ z%Tq34X2xjmZw3SG&T5UOw)Y#^-Ox*&FE~N2q2gn$Z=}qkcqadL0+mqs z7}c)wykLTe9~SXVsW8n-?`Vw@%ySn=vpH0z@wLk53wSAS40~``qiQ}p6qf&+v^sY;UIs*d9M|^@UhSbM12iAc~_Q{EsGJgTYQ$3msZQ9kv$&`|sVvkYU zn)-6%QLS3^({psShxqiU*$_dR)8=6_Z~Xkj=~z-!7Ivl|7J5j5HKgC(+?CGkqZJ;G zwa{$$Wva^;n@+<35ow}Fjw`vor;lZs%B5D*V3T4oUVhF*J@es3)j0T`I9YW+2%y;$LoX>NcE~jZ3h&!fIy_V?-P174($O<#N5E~w zEQYRO8;)>r2&OOJ0u0g+u1SZR+ke$z2T{s{gl$h@1J<=1JI}^7=z4#x-fz&_9U3Y!M@qlau*<$|;Dd%#r6x zhsuZuO=-bEPhoDof48prqB|G}H?ZB&v9g z_74x0+ey+@ldfRCWLZQ0O*y@+{YYP=c*R$oL=Dl4Z)U%j{W&-@;;=%uA>yromby%k zaScU5n!6A@z}|<8GSv_U2G$p{j>&7$(-;_QS5G6Km z%|4gZR(MyR9Sd@utZX@-d)&N5Tgw~igI%_mI$trlYv=uum)R;cShvU<+8} zNM4&+k-FPdM)!z<)!$PMl0wopoo6N!hMx-mL$MP*69=YWMa?mfe=y0a#F4D-pvSBn z`l%avAG49((wfI^V%1mCaL>AVi<31|A<~vce%~nm``rIc>Wo>Avzz3ZIaO>aNSz{C z*SZ7K7nUOjbGr^TcACdEqGn%lvg~URvKj>cz|d3Qr{7{6&Zm6ij5#K)&r@&4(!;{r zs8A!G1&L!jMXeM`5y+bn7Ih>1J`crS9IVmyK66x!_m|c4H2U~{Z~*@) z6_VmQpHw4u{tnH^D$R+0soV&+5G|gv$>?tQhvKH-^D)=38}xq3B~6VuDlch{#Z@!Y z41!b;hU1ksu+P=*GsW7v>LPe)VX%58B?6=l(&}yOhR~ZYPGQuxfpuJ=v*a6V%!~Y?uf1SMY zdkK~VxTsxFwfbc8SDAy_6#mo!K#Lzs2G}!#YL?jFcGVJb{wZM~ruqdP7F5{qFV|$> z=nh_D1#x`ZdE4LLuf~se`2yf4;RHLnNQEEo8rUXTXa~{t&{sHwS!AHv`Rgki3>TLk zEYgCV3Gqf5CyjJLzFbZmqn6p5D)-K1&8OXAc}`?4XReAn$_fh z!k2{rSx|gn6@bbhJOD4%{(U3CbXh-u{(W-xpC@jhVFZWp@)_I5?gp1dqxNf1uwV!T xACXJQ11b*x{isa`Z$=y&?q3gn|KGn8ng0AeE_+CF26+01ql{ETl-xHC{2zJ)A`Ack literal 0 HcmV?d00001 diff --git a/inspectit-ocelot-documentation/docs/assets/staging-workflow.png b/inspectit-ocelot-documentation/docs/assets/staging-workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..8941051f78e2cfa3e7bb4d80c7f10c69b5ab0b4e GIT binary patch literal 17102 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 J<;fVL{u@}+|AYVl literal 0 HcmV?d00001 diff --git a/inspectit-ocelot-documentation/docs/config-server/configuration-staging.md b/inspectit-ocelot-documentation/docs/config-server/configuration-staging.md new file mode 100644 index 0000000000..c8fe064637 --- /dev/null +++ b/inspectit-ocelot-documentation/docs/config-server/configuration-staging.md @@ -0,0 +1,167 @@ +--- +id: configuration-files-staging +title: Configuration Files Staging Using Remote Git +sidebar_label: Configuration Files Staging +--- + +:::tip +It is recommended to first familiarize yourself with [how the configuration server manages configuration](config-server/managing-configurations.md) files before reading this chapter. +::: + +Since version `1.11.0` the Configuration Server offers the possibility that external Git repositories can be connected. +This allows configuration files to be obtained from an external Git repository and also transferred to it. +This allows us to secure configuration files (e.g. for creating backups), initialize configuration servers with a specific set of configuration files or chain several configuration servers together. +The latter can be used, for example, to cover more complex scenarios, such as synchronizing configuration files across multiple system stages. + +:::important +All configuration server properties mentioned below refer to being set under the `inspectit-config-server.remote-configurations` key! +::: + +Note that this feature is **disabled by default**. +It can be enabled by setting the property `inspectit-config-server.remote-configurations.enabled` to `true`. + +## Synchronization Workflow + +The synchronization of configuration files can be divided into two areas: pulling and pushing configuration files. +These two options can be used together or separately. +For example, a configuration server can be set to only pull files from a remote Git repository, but not push any away. + +Using the following diagram, the process and the individual steps will be explained in more detail. + +![Configuration Files Staging Workflow](assets/staging-workflow.png) + +### Pulling Configuration Files + +The configuration server can be set to pull configuration files from a specific branch from a remote Git. +Depending on the configuration, this can be done when the **server is started** (disabled by default) or [**triggered by a webhook**](#triggering-file-pulling-using-webhooks). + +In order for this to work, a remote Git repository must be configured and the appropriate branch specified. +This can be configured using the `pull-repository` property. +Please refer to the [Repository Configuration section](#repository-configuration) for more information on how to configure a repository and its branch. + +![Configuration Files Staging Workflow](assets/staging-pull.png) + +When the synchronization process *(1)* is triggered, the configuration server obtains all files that have changed (added, modified, deleted) since the last synchronization and puts them into the local `WORKSPACE` Branch. +Please note that the **synchronized files overwrite the local files**! +Changes that were only made locally will be overwritten and lost. +Files that have been created or changed locally, but were **not included in the changes** made on the remote branch, remain unaffected. + +By default, the configuration server will not synchronize on startup. However, this can be set with the `pull-at-startup` option. + +#### Initial Synchronization + +:::warning +Note that this setting may lead to **overwriting existing configurations**. You should only activate this option if you know what you are doing. +::: + +When the configuration server performs a synchronization for the **very first time** (for example, because the server has been upgraded and this feature is now available), **no files are pulled** by default. +Only changes that happen from now on will also be synchronized. +This is done so that configuration files are not accidentally overwritten and lost. + +This behavior can be changed with the option `initial-configuration-sync`. +If this option is set to `true`, the configuration server pulls all files that are in the remote Git repository at the very first time. +Please note that only files are added or overwritten. +No files are deleted! + +This option is useful if, for example, a new instance of a configuration server should be populated with a set of configuration files. + +### Auto-Promotion of Configuration Files + +When the configuration server pulls configuration files, they will be put into the `WORKSPACE` branch. +By default, the server **automatically performs a promotion** of the pulled files after a successful pull, so that the `WORKSPACE` and the `LIVE` branch are up-to-date. +However, this function can be disabled with the `auto-promotion` property. +If this option is disabled, the server will not perform an automatic promotion and the `LIVE` branch will remain untouched. + +### Pushing Configuration Files + +The configuration server can be configured to send the `LIVE` branch respectively files that are promoted to it to a remote Git repository. +Depending on the configuration, this can be done when the **server is started** (disabled by default) or when a **configuration file promotion** is done. + +In order for this to work, a remote Git repository must be configured and the appropriate branch specified. +This can be configured using the `push-repository` property. +Please refer to the [Repository Configuration section](#repository-configuration) for more information on how to configure a repository and its branch. + +![Configuration Files Staging Workflow](assets/staging-push.png) + +If pushing of the configuration files is triggered *(2)*, the configuration server pushes the files to the configured remote Git repository. +It is important to note that the sending is **forced by default**, but this can be disabled with the `push-repository.use-force-push` option. +Even if this option is enabled, the server will always try an unforced push first. +Since this can cause a commit to be lost in the remote repository due to the forced push, it is recommended that only a single configuration server can push to the target branch. + +:::warning +Note that by default, pushing the branch is **forced**, which could inadvertently overwrite data. +::: + +This process can also be triggered by an automatic promotion due to pulling configuration files from a remote Git repository. + +## Triggering File Pulling Using Webhooks + +As already mentioned, pulling configuration files from a remote Git repository can be done at startup of the configuration server, or can be triggered by a webhook. +Triggering this process through a webhook can be handy if you want to trigger a synchronization whenever a change happens on the configured remote branch, for example. + +For this purpose, the configuration server provides the following endpoint, which can be triggered via an HTTP GET request: `/api/v1/hook/synchronize-workspace`. + +:::note +This endpoint will only work if pulling configuration files from a remote Git repository has been enabled and configured. +::: + +For security reasons, this endpoint can only be accessed with a predefined token, so that not any arbitrary user can trigger this process. +This token is included in the request via the query parameter `token`. + +The tokens can be set up using the following property: `inspectit-config-server.security.webhook-tokens`. +It is possible to define several tokens, which can be used if individual tokens have to be deactivated again. + +```yaml +inspectit-config-server: + security: + webhook-tokens: + - 'very_secure_token' + - 'another_very_secure_token' +``` + +#### Example + +Assuming the configuration server is started locally on the default port `8090` and a token `very_secure_token` has been set up for webhook access, this can be triggered with the following CURL command. + +```bash +$ curl http://localhost:8090/api/v1/hook/synchronize-workspace?token=very_secure_token +``` + +## Chaining Multiple Configuration Servers + +Using the feature that remote Git repositories can be connected to pull and push configuration files, it is now also possible to link multiple configuration servers together. +This can be used, if several configuration servers are in use, which receive the respective configuration files of the previous server. +This is very useful, if e.g. several system stages exist, which used separate configuration servers. + +![Configuration Server Chaining using remote Git repository](assets/staging-chain.png) + +In order to do this, the configured push and pull branch can be set to the same remote Git repository respectively branch. + +## Available Configuration Properties + +:::important +All configuration server properties mentioned below refer to being set under the **`inspectit-config-server.remote-configurations`** key! +::: + +| Property | Default | Note | +| --- | --- | --- | +| `enabled` | `false` | Whether this feature is enabled and remote Git repositories should be used for configuration management. | +| `push-at-startup` | `false` | Whether the current live branch should be pushed during startup. | +| `pull-at-startup` | `false` | Whether the remote source branch should be fetched and merged into the current workspace branch during startup. | +| `initial-configuration-sync` | `false` | Defines whether the configuration files of the configuration source repository should be pulled on the initial configuration synchronization. The initial synchronization is not related to the `pull-at-startup` property!
[Read the documentation](#initial-synchronization) for detailed information on this property! | +| `auto-promotion` | `true` | Whether synchronized files should be promoted automatically, after they have been fetched from the configuration remote. | +| `pull-repository` | `null` | The remote Git repository which will be used to fetch workspace-configurations from.
See [Repository Configuration](#repository-configuration). | +| `push-repository` | `null` | The remote Git repository which will be used to push live-configurations to.
See [Repository Configuration](#repository-configuration). | + +### Repository Configuration + +| Property | Default | Note | +| --- | --- | --- | +| `remote-name` | `[pull/push]-remote-configuration` | The name of the remote ref in the local Git repository. | +| `git-repository-uri` | `null` | The URI to the remote Git repository. Examples: `https://github.com/user/repo.git`, `git@github.com:user/repo.git` | +| `branch-name` | `remote-[workspace/live]` | The branch name on the remote Git repository. | +| `use-force-push` | `true` | Whether force push should used for pushing to this remote. This is only available for the `push-repository` property. | +| `authentication-type` | `NONE` | The type of authentication to use. Possible values: `NONE`, `PASSWORD`, `PPK`. | +| `username` | `null` | The username for accessing the remote repository. Only used in case of `PASSWORD` authentication. | +| `password` | `null` | The password for accessing the remote repository. Only used in case of `PASSWORD` authentication. | +| `private-key-file` | `null` | Additional private key to use for SSH authentication. The server will automatically load the known hosts and private keys from the default locations (identity, id_rsa and id_dsa) in the user’s `.ssh` directory. Only used in case of `PPK` authentication. | \ No newline at end of file diff --git a/inspectit-ocelot-documentation/docs/config-server/overview.md b/inspectit-ocelot-documentation/docs/config-server/overview.md index 7c39207271..d0b3582814 100644 --- a/inspectit-ocelot-documentation/docs/config-server/overview.md +++ b/inspectit-ocelot-documentation/docs/config-server/overview.md @@ -17,6 +17,6 @@ In addition, a Swagger UI is provided which contains a list including documentat ## Management of Configuration Files -Since version 1.4, the configuration server uses Git and a local repository to manage the working directory. If a working directory already exists that was created by a configuration server in version 1.3 or lower, it is automatically migrated to a working directory managed using a local Git repository. No manual adjustments are necessary. +Since version `1.4`, the configuration server uses Git and a local repository to manage the working directory. If a working directory already exists that was created by a configuration server in version `1.3` or lower, it is automatically migrated to a working directory managed using a local Git repository. No manual adjustments are necessary. Please see [Managing Configuration Files](config-server/managing-configurations.md) for more information on managing of the configuration files. \ No newline at end of file diff --git a/inspectit-ocelot-documentation/website/sidebars.json b/inspectit-ocelot-documentation/website/sidebars.json index 3ef515cbc4..838b84b03e 100644 --- a/inspectit-ocelot-documentation/website/sidebars.json +++ b/inspectit-ocelot-documentation/website/sidebars.json @@ -44,7 +44,8 @@ "Configuration Server": [ "config-server/overview", "config-server/cs-configuration", - "config-server/managing-configurations", + "config-server/managing-configurations", + "config-server/configuration-files-staging", "config-server/agent-mappings", "config-server/user-authentication", "config-server/log-config"