Izvietošanas darbs pieslēdzas, nokopē savu artefaktu un ziņo par panākumiem. Tā atvērtais tunelis var joprojām būt aktīvs, kad sākas nākamais darbs, un mainītais maršruts pieder visam hostam. Būvējuma rezultāts apraksta komandu, nevis stāvokli, ko tas atstāja. Uztveriet VPN kā resursu ar dzīves ciklu, nevis kā vienu rindu posma sākumā.

Kas vēl darbojas šajā hostā

Jenkins mezgls var vienlaikus darbināt vairākus izpildītājus, un darbs, kas maina hosta maršrutus, resolvera iestatījumus vai sistēmas līmeņa savienojumu, maina tos visiem. Vai cits darbs to pamanīs, ir atkarīgs no maršrutu un filtrēšanas politikas, nevis no vispārīga noteikuma par VPN. Piekļuve repozitorijam, piekļuve artefaktiem un vadības kanāls ir atsevišķas prasības, kas runneram joprojām vajadzīgas. Pievienojiet tās izvietošanas mērķu sarakstam pirms pilna tuneļa izvēles.

Ja vadības kanālam būtu jāšķērso tunelis, dizainam tas apzināti jāsaka. Atklāt to atritināšanas laikā nav plāns. Pierakstiet abus sarakstus: kas darbam jāsasniedz privāti un kas runneram jāsasniedz jebkurā gadījumā.

Vai šim darbam vispār vajadzīga privāta piekļuve?

Pajautājiet pirms tuneļa pievienošanas, vai būvējuma posmam tas vajadzīgs. Privāts izvietošanas aģents var paņemt apstiprinātu artefaktu un veikt izvietošanu, kas vispārējo būvējuma posmu tur ārpus privātā tīkla. Šāds dalījums parasti ir lētāks nekā mācīt katram būvējuma solim maršrutēt caur tuneli.

Izvēlieties robežu no darbplūsmas, nevis no ieraduma. Ja atbilde ir nē, pārējā šīs lapas daļa nav vajadzīga, un tas ir labākais pieejamais iznākums.

Stāvoklis, ko manto nākamais darbs

Aprakstiet, kas jābūt patiesam pirms darba, kamēr tam ir privāta piekļuve, un pēc tam, kad tas beidzas, tostarp atcelšanas gadījumā. Gala stāvoklis ir tas, kas visbiežāk paliek neizteikts, un tas ir tas, ko manto nākamais darbs. Pierakstiet to blakus pipeline, nevis atstājiet kāda atmiņā.

MomentWhat proves itWhat leaks if it is skipped
Job start: pre-flight route checkThe route table shows no tunnel from an earlier job, and the profile list is emptyA stale route sends deployment traffic into a dead tunnel
Job end: disconnect and shredThe profile is down and the temporary key file is goneThe next job inherits an open tunnel and a usable credential
Cancelled job: reboot or disposalThe host is replaced or rebooted before the next job startsA killed process leaves the tunnel up with no owner

Īpašs vai vienreizējs aģents atvieglo šo robežu ieviešanu. Konteiners vai nosaukumvieta palīdz tikai tad, ja tās tīkla un privilēģiju izkārtojums tiešām izolē izmaiņas.

Apturiet savienojumu, nevis programmu

Izmantojiet pipeline pabeigšanas ceļu, lai aizvērtu savienojumu, ko sāka šis darbs, un noņemtu tā pagaidu akreditācijas datus. Nesaskaņojiet procesus pēc programmas nosaukuma hostā, ko izmanto citi darbi; apturiet konkrēto savienojumu. Divas komandas zemāk ir visa tīrīšana, un neviena nav atkarīga no procesa atrašanas.

vpn-cli disconnect --profile "$PROFILE"
rm -f "$RUNNER_TEMP/client.key"

Pabeigšana nav izolācija: miršanas brīdī runners patur atvērto tuneli, un ar varu apturēts process pilnībā izlaiž bloku. Tāpēc tikai tīrīšanas komanda nevar būt viss dizains. Lūk, kā tas neizdodas praksē: izvietošanas darbs tiek atcelts kopēšanas solī, pabeigšanas bloks nekad neizpildās, un nākamais darbs tajā pašā hostā sākas ar dzīvu tuneli un maršrutu, kas norāda uz tīklu, kuru tas nevar sasniegt. Bojājums izskatās kā 'DNS' problēma nākamajā būvējumā, stundas pēc tam, kad beidzās to izraisījušais darbs.

Ierakstiet profila nosaukumu un akreditācijas datu ceļu darba izvadē. Atvienošanas komanda bez identifikatora vēlāk ir grūti auditējama. Žurnāla rinda ir arī tas, kas pierāda, ka bloks darbojās, kad vēlāka izmeklēšana to jautā.

Dodiet darbam hostu, ko neviens cits neizmanto

Vienreizēja infrastruktūra novērš mantojuma problēmu, nevis to pārvalda. Jauns aģents katram darbam sākas bez maršruta, bez profila un bez citu akreditācijas datiem, un tā iznīcināšana satīra visu, ko darbs atstāja. Tas izmaksā vairāk uz būvējumu, un tā ir godīgā cena par robežu, kas nav atkarīga no tīrīšanas koda. Darbiem, kas skar ražošanas tīklus, tas parasti ir lētākais variants, kad incidenti tiek saskaitīti.

Kur kopīgam runneram jāpaliek, pārbaudiet neveiksmi un atcelšanu tikpat rūpīgi kā veiksmīgo kopēšanu. Testam jāparāda, ko nākamais darbs redzētu, ja šis tiktu atcelts pusceļā. Darbs ir pabeigts, kad tā piekļuve un pagaidu stāvoklis ir beigušies, nevis kad kopēšanas komanda atgriež nulli.

Saistītie raksti