Abrufen von Anmeldeinformationen pro Instanz in Docker-Instanzen

Abrufen von Anmeldeinformationen pro Instanz in Docker-Instanzen

Ich arbeite daran, ein verteiltes Tasksystem auf Docker-Basis zum Laufen zu bringen. Der größte Knackpunkt dabei ist, wie ich die Anmeldeinformationen für jede Docker-VM bekomme.

Grundsätzlich muss jede Instanz einen eindeutigen Namen und entweder ein Passwort/SSL-Zertifikat haben. Beim Start stellt sie dann eine Verbindung zur Startseite her und beginnt mit der Verarbeitung von Aufgaben.

Das Erstellen der Instanz ist relativ unkompliziert, aber was ist ein guter Ansatz, um die Anmeldeinformationen in jede Instanz einzufügen? Der allgemeine Konsens scheint zu sein, „Umgebungsvariablen zu verwenden“, aber die Verwendung einer Umgebungsvariablen mit mehr als 500 Zeichen (z. B. das gesamte SSL-Zertifikat) scheint grob.

Im Moment verwendet die Anwendung, die ich zu packen versuche, eine einfache JSON-Datei zur Konfiguration. Gibt es eine Möglichkeit, zur Laufzeit Dateien zu einer Docker-Instanz hinzuzufügen oder etwas Ähnliches? Vielleicht einen letzten Build-Schritt, der eine parametrisch definierte Datei verwendet?

Antwort1

Sie können ein Docker-Volume hinzufügen und es für jeden Container auf einen Ordner auf dem Host verweisen, der das gewünschte SSL-Zertifikat enthält. Sie können sogar ein „Einzeldatei“-Volume erstellen.

docker run -d \
    --name=worker0 \
    -v "/etc/ssl/worker0.crt":/etc/ssl/private/container.crt \
    -v "/etc/ssl/worker0.key":/etc/ssl/private/container.key \
    myworkerimage

docker run -d \
    --name=worker1 \
    -v "/etc/ssl/worker1.crt":/etc/ssl/private/container.crt \
    -v "/etc/ssl/worker1.key":/etc/ssl/private/container.key \
    myworkerimage

Was auch immer Sie dann zum Starten der Worker verwenden, ein Bash-Skript, Ansible usw., kann das richtige Zertifikat auf dem Host auswählen, aber innerhalb jedes gestarteten Containers ist die Situation identisch (das Zertifikat befindet sich immer im gleichen Pfad).

Möglicherweise möchten Sie diese „Datei-Volumes“ zu schreibgeschützten Volumes machen, um :rodeutlich zu machen, dass es sich um eine statische Konfiguration handelt und nicht um etwas, das der Container voraussichtlich ändern wird oder können sollte.

verwandte Informationen