Upravíte konfiguráciu WireGuardu v bežiacom kontajneri, funguje to, a ďalšia aktualizácia image ju zmaže. Nič nebolo zle nakonfigurované. Súbor žil v zapisovateľnej vrstve kontajnera, ktorá existuje len pre túto inštanciu kontajnera. Dôležité porovnanie nie je, ktorý nástroj použiť, ale ktoré vstupy vaše nasadenie deklaruje. Čokoľvek ste upravili ručne, je vstup, o ktorom nasadenie nevie.

Dva druhy stavu, jeden je na vyhodenie

Kontajner má zapisovateľnú vrstvu pre zmeny vykonané za behu a táto vrstva sa zahodí, keď sa kontajner nahradí. Nie je to úložisko konfigurácie a nie je to záloha. Image plus deklarované vstupy je celá definícia toho, čo beží.

Pýtajte sa, ktoré z vašich súborov VPN sú deklarované vstupy a ktoré sú náhody:

docker diff wg-vpn
docker inspect --format '{{json .Mounts}}' wg-vpn

Diff vypisuje, čo sa zmenilo v zapisovateľnej vrstve, a to je presne množina vecí, ktoré zmiznú. Výpis pripojení ukazuje, čo prežije. Porovnanie oboch odpovedá na otázku, skôr než o niečo prídete.

Bind mount, pomenovaný zväzok alebo tajomstvo: čo každé chráni

Všetky tri môžu držať profil VPN a líšia sa v tom, kto ho môže čítať a čo sa stane pri nahradení.

MechanismSurvives recreationWho can read it
Writable layerNoAnyone with container access, until it is gone
Bind mountYes, while the host path existsWhatever the host permissions allow
Named volumeYes, until the volume is removedManaged by the runtime
SecretYes, as a declared inputThe container process, by design

Bind mount mapuje cestu hostiteľa, takže súbor je chránený tak, ako je chránená tá cesta, a viditeľný tak, ako to dovoľujú oprávnenia hostiteľa. Pomenovaný zväzok spravuje runtime a prežije odstránenie kontajnera, čo z neho robí bezpečnejšiu predvolenú voľbu pre stav, ktorý nasadenie vlastní. Mechanizmus tajomstva je pre materiál, ktorý nechcete v image ani v premennej prostredia.

Nepovažujte každú premennú prostredia a každý súbor hostiteľa za rovnocennú ochranu, pretože nie sú.

Úpravy vnútri kontajnera sú pasca

Pasca nie je nástroj, ale smer úpravy. Zmena vykonaná v bežiacom kontajneri je pre nasadenie neviditeľná, takže ju ďalšie opätovné vytvorenie potichu vráti a príznak vyzerá ako regresia v image. Ak tam musíte niečo zmeniť kvôli diagnostike, hneď to skopírujte von a vložte do deklarovaného vstupu. Potom znova vytvorte, aby ste dokázali, že to nasadenie reprodukuje.

Profil môže niesť súkromné kľúče a materiál účtu, čo zo zálohy toho súboru robí úlohu správy tajomstiev, nie kopírovanie súboru. Držte vlastníctvo a prístup na čítanie obmedzené na skutočný proces kontajnera, namiesto rozširovania adresára hostiteľa, aby zmizla chyba oprávnení.

Práve toto rozšírenie mení pohodlie v kontajneri na vystavenie hostiteľa.

Zámerne znova vytvorte a potom overte štyri veci

Zapíšte verziu image, požadované zariadenie a schopnosti, sieťové pripojenie a trvalé vstupy. Zoznam zariadení a schopností je obzvlášť dôležitý pre kontajner VPN, pretože tunel potrebuje sieťové zariadenie a oprávnenie na jeho konfiguráciu.

Potvrďte, ktorý generovaný stav za behu sa má znova zostaviť a nie uložiť. Kľúče, ktoré tunel vygeneroval pri prvom štarte, sú stav, a rozhodnutie ponechať ich alebo vygenerovať znova má dôsledky pre každého peera, ktorý pozná starý verejný kľúč.

Po riadenom opätovnom vytvorení overte identitu, smerovanie, DNS a požadované blokovanie pri zlyhaní. Proces, ktorý sa spustí bez chýb, nedokazuje ani jednu z tých štyroch vecí. Skontrolujte to, kým tunel beží, a znova po jeho zastavení, pretože blokovanie pri zlyhaní sa ukáže len vtedy, keď tunel zmizne.

Držte kópiu na obnovu mimo kontajnera

Držte kópiu na obnovu, ktorá žije nezávisle od kontajnera, a otestujte jej obnovenie podľa dokumentovaného postupu. Netestovaná záloha profilu VPN je nádej, najmä keď cesta obnovy zahŕňa oprávnenia, ktoré proces kontajnera potrebuje.

Ak sa kontajner, ktorý vlastní VPN, nahradí, zosúlaďte aplikácie, ktoré zdieľajú jeho sieťový stack, v rámci podporovaného životného cyklu runtime.

Táto koordinácia je rozdiel medzi reštartom a výpadkom. Nasadenie by malo opísať, odkiaľ konfigurácia pochádza, a dokumentácia zväzkov je miesto, kde skontrolujete, čo runtime skutočne uchováva.

Súvisiace články