Konfigurácia VPN prežije opätovné vytvorenie kontajnera len vtedy, ak ju pripojíte
Súbor upravený v bežiacom kontajneri žije vo vrstve, ktorá zmizne. Porovnajte bind mounty, zväzky a tajomstvá, potom znova vytvorte a overte štyri veci.
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-vpnDiff 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í.
| Mechanism | Survives recreation | Who can read it |
|---|---|---|
| Writable layer | No | Anyone with container access, until it is gone |
| Bind mount | Yes, while the host path exists | Whatever the host permissions allow |
| Named volume | Yes, until the volume is removed | Managed by the runtime |
| Secret | Yes, as a declared input | The 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.