Docker: dawwar kontenitur wieħed permezz ta' VPN u żomm ieħor dirett
Agħti lit-tunnel il-kontenitur tiegħu stess, ħalli biss is-servizzi li jeħtiġuh jaqsmu dak l-ispazju tal-ismijiet, imbagħad qis dak li jiġi wara s-sid: portijiet, localhost, DNS.
Wieħed host, żewġ tagħbijiet tax-xogħol u rekwiżit li jifridhom: klijent tat-tniżżil li jrid joħroġ minn VPN kummerċjali, u interface tal-amministrazzjoni li jrid ikompli juża l-konnessjoni tal-host. L-installazzjoni tal-klijent VPN fuq il-host tonqos mill-ewwel għar-rekwiżit, għax imbagħad iż-żewġ tagħbijiet jaqsmu ħruġ wieħed. Il-mudell li tassew jaħdem huwa li t-tunnel jitmexxa fil-kontenitur tiegħu stess u jitħalla biss dawk it-tagħbijiet li jeħtiġuh jingħaqdu mal-ispazju tal-ismijiet tan-netwerk ta' dak il-kontenitur. Kull ħaġa oħra żżomm it-triq ordinarja ta' Docker, u d-dettalji li jsegwu huma konsegwenzi ta' min għandu l-ispazju tal-ismijiet.
Għaliex spazju tal-ismijiet maqsum ibiddel ir-regoli
Kontenitur li jingħaqad mal-ispazju tal-ismijiet ta' ieħor ma jiksibx il-munzell tan-netwerk tiegħu stess. Jara l-istess interfaces, l-istess tabella tal-instradar u l-istess loopback bħall-kontenitur li miegħu ngħaqad, u għalhekk il-mudell huwa utli: it-tagħbija issolvi u tikkonnettja b'mod normali, u t-tunnel taħt jarresta t-traffiku mingħajr ma l-applikazzjoni tkun taf. L-ispiża hija li kull setting tan-netwerk issa għandu sid wieħed, u l-kontenitur li jingħaqad mhuwiex dak is-sid.
Din ir-regola tas-sjieda twieġeb il-biċċa l-kbira tal-mistoqsijiet tal-konfigurazzjoni qabel ma jiġu mistoqsija. Jekk setting tgħix fil-munzell tan-netwerk, hija tal-kontenitur tal-ġenb. Jekk tiddeskrivi l-proċess, tibqa' mat-tagħbija.
Il-loopback huwa l-parti li tissorprendi n-nies. Ġewwa l-kontenitur li jingħaqad, localhost jiġi solvut għal-loopback tal-kontenitur tal-ġenb, mhux għal wieħed privat tiegħu stess, għalhekk servizz li jintrabat ma' 127.0.0.1 u jistenna iżolament issa jaqsam dak l-indirizz mal-kontenitur tat-tunnel.
Ippubblika l-portijiet fuq il-kontenitur li għandu l-ispazju tal-ismijiet
Il-mapping tal-portijiet hija tas-sid tal-ispazju tal-ismijiet anki meta l-proċess li jisma' jaħdem fil-kontenitur l-ieħor. Iddikjara l-mapping fuq il-kontenitur tal-ġenb, u ħalli t-tagħbija żżomm il-konfigurazzjoni tal-proċess tagħha stess bla mittiefsa. Mapping fuq is-servizz li jingħaqad ma jistax jidħol fis-seħħ, kemm jekk il-magna tirrifjutah u kemm jekk tinjorah bil-kwiet skont kif jinbeda l-kontenitur, u għalhekk interface li kienet aċċessibbli mument ilu tisparixxi hekk kif jiġi applikat il-mudell.
services:
gluetun:
image: qmcgaw/gluetun
cap_add: [NET_ADMIN]
ports: ["8080:8080"]
client-vpn:
image: example/client
network_mode: "service:gluetun"
client-direct:
image: example/client
ports: ["8081:8080"]Aqra dan il-blokk bħala tliet deċiżjonijiet mhux tliet servizzi. Il-kontenitur tal-ġenb għandu t-tunnel u l-port ippubblikat; il-klijent li jingħaqad ma jiddikjarax netwerk xejn; il-klijent dirett iżomm mapping tiegħu stess fuq in-netwerk default. Il-kapaċità NET_ADMIN hija dik li tħalli lill-kontenitur tal-ġenb joħloq interfaces u jbiddel rotot, u huwa għalhekk li dan il-kontenitur jeħtieġ aktar privileġġi mit-tagħbijiet li jaqdi.
Is-servizz li jibqa' dirett iżomm in-netwerk tiegħu stess
It-tagħbija li ma tridx tgħaddi mit-tunnel iżżomm il-pont default jew netwerk definit mill-utent tagħha stess, bil-port ippubblikat u l-ħruġ tagħha stess. Huwa tentattiv li tqabbadha man-netwerk tal-kontenitur tal-ġenb sabiex iż-żewġ kontenituri jkunu jistgħu jitkellmu bl-isem, iżda dak il-pass wieħed iċaqlaq it-traffiku tagħha bil-kwiet fit-tunnel. Jekk jeħtiġilhom jilħqu lil xulxin, ibni netwerk separat definit mill-utent, qabbad it-tnejn miegħu, u ħalli l-kontenitur tal-ġenb bħala l-unika triq 'il barra.
Żomm iż-żewġ mistoqsijiet separati: liema kontenituri jistgħu jilħqu lil xulxin, u liema joħroġ minn fejn. Li tgħaqqadhom hija l-aktar mod komuni kif dan id-disinn jerġa' jsir VPN għall-host kollu.
Matriċi tal-fallimenti għall-ewwel siegħa
Il-biċċa l-kbira tal-ewwel tentattivi jfallu b'waħda minn erba' modi, u kull waħda għandha kawża differenti. Iċċekkjahom f'dan l-ordni, għax l-ewwel tnejn jispjegaw kważi kull rapport.
| Symptom | Likely cause |
|---|---|
| Web UI unreachable after the change | Port mapping declared on the joining container instead of the sidecar |
| Both containers show the provider's exit address | The direct service was attached to the sidecar network |
| Internal names stop resolving | Resolver settings live on the host, not in the shared namespace |
| Health check fails but the app works | The check probes localhost, which now means the sidecar |
Ir-raba' ringiela hija dik li n-nies jiġġudikaw b'mod żbaljat bħala bug tal-applikazzjoni. Prova miktuba kontra l-loopback tat-tagħbija stess issa qed tittestja l-kontenitur tat-tunnel, għalhekk jew tfalli jew tirrapporta servizz kompletament żbaljat.
Meta isem wieħed tal-host jeħtieġ it-tunnel
Xi drabi tunnel sħiħ huwa wisq: isem intern wieħed irid jgħaddi minn VPN korporattiv waqt li socket lokali jew konnessjoni tal-wiri tibqa' taħdem. Tunnel sħiħ fil-kontenitur ikisser dik it-triq u kull ma hu indirizzat lill-host, għalhekk instrada biss il-prefiss li jeħtiġha. Wrapper tal-instradar maqsum madwar il-klijent jagħmel dan, jibgħat il-host imsemmi mit-tunnel u jħalli r-rotta preċedenti bla mittiefsa għal kull ħaġa oħra.
Agħżel dan meta jeħtieġlek tilħaq servizz wieħed biss u m'intix qed tipprova ċċaqlaq it-traffiku kollu tal-kontenitur. Għodda differenti mill-kontenitur tal-ġenb u twieġeb mistoqsija differenti.
Ivverifika, imbagħad agħmel biex jiflaħ restart
Staqsi lil kull kontenitur minn liema indirizz jidher li ġej. Dak fit-tunnel għandu jipprintja l-indirizz tal-fornitur u dak dirett il-ħruġ tal-host. Tweġibiet identiċi jfissru li s-servizz dirett wiret l-ispazju tal-ismijiet żbaljat jew li VPN fil-livell tal-host għadu jaqbad kollox, u dawk iż-żewġ tiswijiet huma differenti. Erġa' ġġenera l-verifika wara kull modifika fil-compose, għax blokk tas-servizz ikkupjat wieħed huwa biżżejjed biex jerġa' jdaħħal il-problema.
Tliet affarijiet għandhom tendenza jinkisru aktar tard. DNS isegwi lis-sid tal-ispazju tal-ismijiet, għalhekk is-settings tas-solvatur u d-dominju tat-tiftix huma tal-kontenitur tal-ġenb mhux tal-host. VPN b'port forwarding ibiddel il-port tas-smigħ tiegħu meta jerġa' jikkonnettja, għalhekk il-port mibgħut mill-fornitur u l-port tas-smigħ fuq in-naħa tal-kontenitur iridu jinkitbu lura fil-konfigurazzjoni tal-klijent jew fil-mapping tal-portijiet, normalment minn aġġornatur żgħir li jaqra l-API tal-fornitur. U kull prova miktuba kontra localhost issa tistaqsi lill-kontenitur tat-tunnel mhux lit-tagħbija.
Ikteb il-mudell, inkluż liema kontenitur għandu l-ispazju tal-ismijiet u liema portijiet huma tiegħu. Il-persuna li jmiss se żżid servizz, tikkupja l-blokk żbaljat u tirriproduċi l-ewwel falliment f'dan l-artiklu.