En VPN-konfiguration overlever kun genskabelse af containeren, hvis du monterer den
En fil, der redigeres i en kørende container, bor i et lag, der forsvinder. Sammenlign bind mounts, volumes og secrets, og genskab derefter og verificer fire ting.
Du redigerer WireGuard-konfigurationen inde i en kørende container, det virker, og den næste image-opdatering sletter den. Intet var konfigureret forkert. Filen boede i containerens skrivbare lag, som kun findes for den containerinstans. Den sammenligning, der betyder noget, er ikke, hvilket værktøj du bruger, men hvilke input din udrulning erklærer. Alt, du har redigeret i hånden, er et input, som udrulningen ikke kender.
To slags tilstand, den ene er engangs
En container har et skrivbart lag til ændringer foretaget ved kørsel, og det lag kasseres, når containeren erstattes. Det er ikke et konfigurationslager, og det er ikke en sikkerhedskopi. Imageet plus de erklærede input er den fulde definition af, hvad der kører.
Spørg, hvilke af dine VPN-filer der er erklærede input, og hvilke der er tilfældigheder:
docker diff wg-vpn
docker inspect --format '{{json .Mounts}}' wg-vpnDiff viser, hvad der er ændret i det skrivbare lag, og det er netop de ting, der vil forsvinde. Mount-oversigten viser, hvad der overlever. At sammenligne de to besvarer spørgsmålet, før du mister noget.
Bind mount, navngivet volume eller secret: hvad hver beskytter
Alle tre kan rumme en VPN-profil, og de adskiller sig i, hvem der kan læse den, og hvad der sker ved udskiftning.
| 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 |
Et bind mount mapper en værtssti, så filen er lige så beskyttet, som den sti er, og lige så synlig, som værtens rettigheder tillader. Et navngivet volume styres af runtime og overlever fjernelse af containeren, hvilket gør det til det sikrere standardvalg for tilstand, som udrulningen ejer. En secret-mekanisme er til materiale, du ikke vil have i et image eller en miljøvariabel.
Behandl ikke hver miljøvariabel og hver værtsfil som tilsvarende beskyttelse, for det er de ikke.
At redigere inde i containeren er fælden
Fælden er ikke værktøjet, men retningen af redigeringen. En ændring foretaget inde i en kørende container er usynlig for udrulningen, så den næste genskabelse ruller den stille tilbage, og symptomet ser ud som en regression i imageet. Hvis du må ændre noget der for at diagnosticere, så kopier det ud med det samme og læg det i det erklærede input. Genskab derefter for at bevise, at udrulningen gengiver det.
En profil kan indeholde private nøgler og kontomateriale, hvilket gør en sikkerhedskopi af den fil til en opgave med håndtering af hemmeligheder i stedet for en filkopi. Hold ejerskab og læseadgang begrænset til containerens faktiske proces i stedet for at åbne en værtsmappe for at få en tilladelsesfejl til at forsvinde.
Den åbning er, hvordan en bekvemmelighed i containeren bliver en eksponering af værten.
Genskab med vilje, og verificer derefter fire ting
Noter imageversionen, den krævede enhed og de krævede evner, netværkstilkoblingen og de vedvarende input. Listen over enheder og evner er særligt vigtig for en VPN-container, fordi tunnelen har brug for netværksenheden og privilegiet til at konfigurere den.
Bekræft, hvilken genereret kørselstilstand der skal genopbygges i stedet for gemmes. Nøgler, som tunnelen genererede ved første start, er tilstand, og om du beholder dem eller genererer dem igen, er en beslutning med konsekvenser for hver peer, der kender den gamle offentlige nøgle.
Efter en kontrolleret genskabelse skal du verificere identitet, routing, DNS og den krævede fejlblokering. En proces, der starter uden fejl, beviser ingen af de fire ting. Kontroller det, mens tunnelen er oppe, og igen efter du har stoppet den, fordi fejlblokeringen først viser sig, når tunnelen forsvinder.
Hold en gendannelseskopi uden for containeren
Hold en gendannelseskopi, der lever uafhængigt af containeren, og test at gendanne den via den dokumenterede proces. En utestet sikkerhedskopi af en VPN-profil er et håb, især når gendannelsesvejen involverer tilladelser, som containerprocessen har brug for.
Hvis en container, der ejer en VPN, erstattes, skal du koordinere de applikationer, der deler dens netværksstak, inden for runtimeens understøttede livscyklus.
Den koordinering er forskellen mellem en genstart og et afbrud. Udrulningen bør beskrive, hvor konfigurationen kommer fra, og volume-dokumentationen er stedet at kontrollere, hvad runtime faktisk bevarer.