Ien labserver, trije fertrouwensrollen, ien flaterdomein
In VPN-yngong, partikuliere tsjinsten en CI-taken nedigje sels op ien server aparte foech. Skied de rollen, isolearje de netwurken, hâld konsolwerstel.
Alles wurket oant de build-runner deselde host-socket nedich hat as de VPN-gast brûkt, en dan kin nimmen ferklearje wêrom't in taak de kaaiens fan 'e poarte lêze kin. Alles waard op ien masine ynstallearre om't it paste, en elke gast krige brede tagong om't dat de fluchste manier wie om it wurkje te litten. It resultaat is in host waans fertrouwensgrins de stroomkabel is. De rollen skiede is minder wurk as it klinkt, en it begjint mei harren te neamen.
Trije rollen dy't no alles diele
In VPN-yngong, in set partikuliere tsjinsten en in build-runner wolle ferskillende dingen. De earste hat in iepenbiere poarte en in smel netwurk oan 'e partikuliere kant nedich. De twadde hat duorsume opslach en applikaasjegeheimen nedich. De tredde fiert koade út dy't immen oars skreaun hat.
It is krekt it jaan fan deselde tagong oan alle trije dat it symptoom betiizjend makket, want dan kin elk fan harren de oaren beynfloedzje. In build-taak dy't de hypervisor-socket berikke kin, is in taak dy't de VPN stopje kin. In tsjinstgast mei in rûte nei it behear-netwurk kin de konfiguraasje fan 'e switch feroarje. De foegen binne it probleem, en de prosesslist is allinnich it plak dêr't it bliuwt. De rollen earst neame jout elk foech in plak om te wenjen.
De skets hjirûnder is in begjinpunt foar dy skieding, net in belofte fan hege beskikberens. Behanje it as in hypoteze om te ferifiearjen, net as it foltôge ûntwerp.
Skied trije rollen, net trije prosessen
Trije gasten op ien host jouwe trije foechsets en trije netwurkposysjes. Se jouwe gjin trije flaterdomeinen, en it ûntwerp soe dat lûd sizze moatte.
De skieding helpt allinnich as in kompromis yn ien gast de oaren net automatysk foech jout, en dat is in ynstelling fan 'e hypervisor, net in nammekonvinsje. In VM in poarte neame stopet in oare gast net om de host te berikken. Lês de konfiguraasje fan 'e firtuele switch ynstee fan de hostnamme, en befêstigje dan dat elke gast sit dêr't jo tinke.
host
├─ vpn-gw 10.60.10.2/24 public 51820/udp only
├─ services 10.60.0.10/24 no route to the management network
└─ ci-runner 10.60.20.2/24 outbound only, no host socket
Skriuw de topology op en ferifiearje dy dan mei de ark dy't him besitte. In gast dy't op 'e ferkearde brêge ferskynt, is in fynst en gjin detail. Korrigearje it netwurk foardat jo hokker tsjinstkonfiguraasje dan ek feroarje.
Lit de VPN-gast allinnich de doarren iepenje dy't er besit
Publisearje de tunnelpoarte op 'e router en neat oars. Behearspoarten foar gasten hearre by in behearspaad, net by it ynternet, en de eigen ynterface fan 'e hypervisor heart dêr ek by.
It netwurk oan 'e partikuliere kant moat de tsjinsten berikke dy't ôfstâne brûkers nedich hawwe en dêr stopje. Applikaasje-autentikaasje bliuwt oan, want in tunnel is ferfier en gjin oanmelding. Hâld de rûtetabel fan 'e VPN-gast lyts genôch om yn ien sin te beskriuwen. As jo it net sa ienfâldich beskriuwe kinne, is de grins al ferroage.
virsh net-list --all
virsh net-dumpxml lab-private
sudo nft list ruleset | grep -n -E '51820|10.60'
Alles wat op 'e host harket en net foar behear nedich is, soe hielendal net harkje moatte. Dat omfettet de API fan 'e hypervisor, dy't maklik iepen op in iepenbiere ynterface litten wurdt.
Build-taken nedigje in oar soarte grins
In CI-taak fiert opdrachten út dy't it bewarplak kontrolearret, dus it fertrouwen hinget ôf fan wa't koade pushe kin. In shell-útfierder rint dy opdrachten as de brûker fan 'e runner op 'e host, en dat is de breedste grins dy't beskikber is.
Kontener-útfierders binne smeller, en in befoarrjochte kontener is net ien fan 'e smelle. Hâld de runner yn syn eigen gast mei syn eigen netwurkberik, en jou him allinnich de tagong ta artefakten en útrôljen dy't de taken nedich hawwe. Ienmalige wurkers ferminderje de bewarre steat; se ferminderje de berikberens of bleatstelling fan geheimen net. Beide hawwe noch eksplisite grinzen nedich.
De tsjinstgast besit de gegevens, dus syn backupplan is dejinge dy't wurkje moat. Hâld bewarplakken, opladen en de databank yn itselde skema. Test in werstel ynstee fan de taakstatus te lêzen.
Plan foar de flater dy't alle trije diele
Ien host is ien flaterdomein. In werstart hellet de tunnel en elke partikuliere tsjinst op itselde momint fuort, en krekt dan jildt in wei nei binnen it measte.
Hâld konsoltagong dy't net fan 'e VPN-gast ôfhinget, oft it no in fysike konsol is, in bûtendielich behearynterface of in konsol fan 'e leveransier. In momintopname dy't op deselde skiif bewarre wurdt, is gjin ûnôfhinklike kopy, en in backup dy't yn 'e gast rint dy't er beskermet ek net. Test dan kâld starten as in searje en net as in checklist: host, firtuele netwurken, tunnelpaad en ien neamd applikaasje ûnder in gewoan akkount.
virsh list --all
systemctl is-active libvirtd
curl -sS -m 5 -o /dev/null -w '%{http_code}\n' https://10.60.0.10/
ss -ltnp | grep -E ':51820|:443'
De folchoarder fan prosesstarts bewiist neat oer rûtes en DNS, dus test it paad ynstee fan 'e ienheidssteaten. It paad is wat in ôfstâne brûker echt nedich hat.