Du bearbeitest die WireGuard-Konfiguration in einem laufenden Container, es funktioniert, und das nächste Image-Update löscht sie. Nichts war falsch konfiguriert. Die Datei lag in der beschreibbaren Schicht des Containers, die nur für diese eine Container-Instanz existiert. Der entscheidende Vergleich ist nicht, welches Werkzeug du nimmst, sondern welche Eingaben deine Bereitstellung deklariert. Alles, was du von Hand bearbeitet hast, ist eine Eingabe, von der die Bereitstellung nichts weiß.

Zwei Arten von Zustand, eine davon ist entbehrlich

Ein Container hat eine beschreibbare Schicht für Änderungen zur Laufzeit, und diese Schicht wird verworfen, wenn der Container ersetzt wird. Sie ist kein Konfigurationsspeicher und keine Sicherung. Das Image plus die deklarierten Eingaben sind die vollständige Definition dessen, was läuft.

Frag dich, welche deiner VPN-Dateien deklarierte Eingaben sind und welche Zufall:

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

Der Diff listet, was sich in der beschreibbaren Schicht geändert hat, also genau die Menge der Dinge, die verschwinden werden. Die Mount-Auflistung zeigt, was bleibt. Der Vergleich beider beantwortet die Frage, bevor du etwas verlierst.

Bind-Mount, benanntes Volume oder Secret: was jedes schützt

Alle drei können ein VPN-Profil halten, und sie unterscheiden sich darin, wer es lesen kann und was beim Ersetzen passiert.

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

Ein Bind-Mount bildet einen Host-Pfad ab, also ist die Datei so geschützt wie dieser Pfad und so sichtbar, wie es die Berechtigungen des Hosts erlauben. Ein benanntes Volume wird von der Laufzeit verwaltet und übersteht das Entfernen des Containers, was es zur sichereren Voreinstellung für Zustand macht, den die Bereitstellung besitzt. Ein Secret-Mechanismus ist für Material gedacht, das du nicht in einem Image oder einer Umgebungsvariablen willst.

Behandle nicht jede Umgebungsvariable und jede Host-Datei als gleichwertigen Schutz, denn das sind sie nicht.

Im Container zu bearbeiten ist die Falle

Die Falle ist nicht das Werkzeug, sondern die Richtung der Änderung. Eine Änderung in einem laufenden Container ist für die Bereitstellung unsichtbar, also macht das nächste Neuerstellen sie stillschweigend rückgängig, und das Symptom sieht wie eine Regression im Image aus. Wenn du dort zur Diagnose etwas ändern musst, kopiere es sofort heraus und lege es in die deklarierte Eingabe. Erstelle dann neu, um zu beweisen, dass die Bereitstellung es reproduziert.

Ein Profil kann private Schlüssel und Kontomaterial enthalten, wodurch eine Sicherung dieser Datei zu einer Aufgabe für den Umgang mit Geheimnissen wird statt zu einem Dateikopieren. Halte Eigentümerschaft und Lesezugriff auf den tatsächlichen Prozess des Containers begrenzt, statt ein Host-Verzeichnis zu öffnen, damit ein Berechtigungsfehler verschwindet.

Diese Öffnung ist der Weg, auf dem aus einer Bequemlichkeit im Container eine Bloßstellung des Hosts wird.

Bewusst neu erstellen, dann vier Dinge prüfen

Notiere die Image-Version, das benötigte Gerät und die Fähigkeiten, die Netzwerkanbindung und die persistenten Eingaben. Die Liste von Gerät und Fähigkeiten ist für einen VPN-Container besonders wichtig, weil der Tunnel das Netzwerkgerät und die Berechtigung braucht, es zu konfigurieren.

Bestätige, welcher erzeugte Laufzeitzustand neu aufgebaut statt gespeichert werden sollte. Schlüssel, die der Tunnel beim ersten Start erzeugt hat, sind Zustand, und ob du sie behältst oder neu erzeugst, ist eine Entscheidung mit Folgen für jeden Peer, der den alten öffentlichen Schlüssel kennt.

Prüfe nach einem kontrollierten Neuerstellen Identität, Routing, DNS und die erforderliche Fehlersperre. Ein Prozess, der ohne Fehler startet, beweist keines dieser vier Dinge. Prüfe es, während der Tunnel läuft, und erneut, nachdem du ihn gestoppt hast, denn die Fehlersperre zeigt sich erst, wenn der Tunnel verschwindet.

Eine Wiederherstellungskopie außerhalb des Containers halten

Halte eine Wiederherstellungskopie, die unabhängig vom Container lebt, und teste das Zurückspielen über den dokumentierten Ablauf. Eine ungetestete Sicherung eines VPN-Profils ist eine Hoffnung, besonders wenn der Wiederherstellungsweg Berechtigungen braucht, die der Containerprozess benötigt.

Wenn ein Container, der das VPN besitzt, ersetzt wird, stimme die Anwendungen, die seinen Netzwerk-Stack teilen, im unterstützten Lebenszyklus der Laufzeit ab.

Diese Abstimmung ist der Unterschied zwischen einem Neustart und einem Ausfall. Die Bereitstellung sollte beschreiben, woher die Konfiguration kommt, und die Volume-Dokumentation ist der Ort, an dem du prüfst, was die Laufzeit tatsächlich persistiert.

Ähnliche Artikel