VPN għal runner CI: it-tunnel jgħix aktar mill-bini?
Runner CI kondiviż iżomm rotot u proċessi bejn ix-xogħlijiet. Ippjana l-istati tal-VPN qabel ix-xogħol, waqt u wara, u naddaf biss il-konnessjoni li x-xogħol jippossjedi.
Xogħol ta' deploy jgħaqqad, jikkopja l-artefatt tiegħu u jirrapporta suċċess. It-tunnel li fetaħ jista' jkun għadu ħaj meta jibda x-xogħol li jmiss, u r-rotta li bidel tappartjeni lill-host kollu. Riżultat ta' build jiddeskrivi l-kmand, mhux l-istat li ħalla warajh. Ittratta l-VPN bħala riżors b'ħajja, mhux bħala linja waħda fil-bidu ta' stadju.
X'ieħor jaħdem fuq dan il-host
Node Jenkins jista' jħaddem bosta eżekuturi fl-istess ħin, u xogħol li jbiddel rotot tal-host, is-settings tar-resolver jew konnessjoni madwar is-sistema jbiddilhom għal kulħadd. Jekk xogħol ieħor jinnotahx jiddependi mill-politika tar-rotot u l-iffiltrar, mhux minn regola ġenerali dwar VPNs. L-aċċess għall-repożitorju, l-aċċess għall-artefatti u l-kanal ta' kontroll huma rekwiżiti separati li r-runner għad għandu bżonn. Żidhom mal-lista tad-destinazzjonijiet tad-deploy qabel ma tagħżel tunnel sħiħ.
Jekk il-kanal ta' kontroll għandu jaqsam it-tunnel, id-disinn irid jgħid dan b'ħsieb. Li tiskoprih waqt rollback mhix pjan. Ikteb iż-żewġ listi: x'irid jilħaq ix-xogħol b'mod privat, u x'irid jilħaq ir-runner tkun kif tkun.
Dan ix-xogħol għandu bżonn aċċess privat xejn?
Staqsi qabel ma żżid it-tunnel jekk l-istadju tal-build għandux bżonnu. Aġent tad-deploy privat jista' jġib artefatt approvat u jagħmel id-deploy, li jżomm l-istadju ġenerali tal-build barra min-netwerk privat. Dak l-iffissar huwa normalment irħas milli tgħallem kull pass tal-build jimxi minn tunnel.
Agħżel il-fruntiera mill-fluss tax-xogħol, mhux mid-drawwa. Jekk it-tweġiba hija le, il-bqija ta' din il-paġna hija bla bżonn, u dan huwa l-aħjar riżultat disponibbli.
L-istat li jiret ix-xogħol li jmiss
Iddeskrivi x'għandu jkun minnu qabel ix-xogħol, waqt li jkollu aċċess privat u wara li jispiċċa, inkluż it-tħassir. L-istat finali huwa dak li l-aktar spiss jibqa' impliċitu, u huwa dak li jiret ix-xogħol li jmiss. Iktbu ħdejn il-pipeline minflok ma tħallih fil-memorja ta' xi ħadd.
| Moment | What proves it | What leaks if it is skipped |
|---|---|---|
| Job start: pre-flight route check | The route table shows no tunnel from an earlier job, and the profile list is empty | A stale route sends deployment traffic into a dead tunnel |
| Job end: disconnect and shred | The profile is down and the temporary key file is gone | The next job inherits an open tunnel and a usable credential |
| Cancelled job: reboot or disposal | The host is replaced or rebooted before the next job starts | A killed process leaves the tunnel up with no owner |
Aġent iddedikat jew li jintrema darba jagħmel dawk il-fruntieri aktar faċli biex jiġu infurzati. Container jew namespace jgħin biss jekk it-tħejjija tan-netwerk u tal-privileġġi tiegħu tabilħaqq tiżola l-bidla.
Waqqaf il-konnessjoni, mhux il-programm
Uża l-moggħodija tal-finalizzazzjoni tal-pipeline biex tagħlaq il-konnessjoni li dan ix-xogħol beda u tneħħi l-kredenzjali temporanji tiegħu. Tqabbelx proċessi bl-isem tal-programm fuq host li jużawh xogħlijiet oħra; waqqaf il-konnessjoni speċifika minflok. Iż-żewġ kmandi hawn taħt huma t-tindif kollu, u ħadd minnhom ma jiddependi milli jsib proċess.
vpn-cli disconnect --profile "$PROFILE"
rm -f "$RUNNER_TEMP/client.key"
Il-finalizzazzjoni mhix iżolament: runner li jmut iżomm it-tunnel li fetaħ, u proċess li jitwaqqaf bilfors jaqbeż il-blokka għal kollox. Għalhekk il-kmand tat-tindif waħdu ma jistax ikun id-disinn kollu. Hawn kif ifalli fil-prattika: xogħol ta' deploy jitħassar fil-pass tal-kopja, il-blokka tal-finalizzazzjoni qatt ma taħdem, u x-xogħol li jmiss fuq l-istess host jibda b'tunnel ħaj u rotta li tindika lejn netwerk li ma jistax jilħaq. Il-falliment jidher bħala problema tad-'DNS' fil-build li jmiss, sigħat wara li xogħol li kkaġunah jispiċċa.
Irreġistra l-isem tal-profil u l-mogħdija tal-kredenzjali fl-output tax-xogħol. Kmand ta' skonnessjoni nieqes minn identifikatur huwa diffiċli biex jiġi awditjat wara. Il-linja tal-log hija wkoll dik li tipprova li l-blokka ħadmet meta investigazzjoni aktar tard tistaqsiha.
Agħti lix-xogħol host li ħadd ieħor ma juża
Infrastruttura li tintrema telimina l-problema tal-wirt minflok ma timmaniġġjaha. Aġent ġdid għal kull xogħol jibda mingħajr rotta, mingħajr profil u mingħajr kredenzjali ta' ħadd ieħor, u l-qerda tiegħu tnaddaf dak li ħalla x-xogħol. Dan jiswa aktar għal kull build, u huwa l-prezz onest ta' fruntiera li ma tiddependix mill-kodiċi tat-tindif. Għal xogħlijiet li jmissu netwerks tal-produzzjoni, normalment huwa l-għażla irħas ladarba l-inċidenti jingħaddu.
Fejn runner kondiviż irid jibqa', ipprova l-falliment u t-tħassir bl-istess attenzjoni bħall-kopja li tirnexxi. L-ittestjar għandu juri x'kien jara x-xogħol li jmiss li dan kien jitħassar fin-nofs. Xogħol ikun lest meta l-aċċess u l-istat temporanju tiegħu jkunu spiċċaw, mhux meta l-kmand tal-kopja jirritorna żero.