Dynamische Config-Datei Generation kann Erstellung von
Config-Dateistruktur umfassen:
Die Konfigurationsdateien für zB redis.yaml können für Entwicklungs-, Staging- und Produktionsumgebungen verwendet werden. zB:
Inszenierung
${ENVIRONMENT}:
host: ${REDIS_HOST}
namespace: ${REDIS_NAMESPACE}
port: 6379
Produktion:
${ENVIRONMENT}:
host: ${REDIS_HOST}
namespace: ${REDIS_NAMESPACE}
port: 6379
connect_timeout: ${REDIS_CONNECT_TIMEOUT}
timeout: {REDIS_TIMEOUT}
Config-Datei Inhalt:
Der Inhalt der Konfigurationsdateien wieder dynamisch aufgefüllt werden können.
konnten wir config-templates
oder config-file-structure
mit Helm erzeugen und montieren sie an der gewünschten Stelle (zB config/redis.yaml) innerhalb der pod.Then diese config-Vorlagen können in die richtige Datei konvertiert/wiedergegeben werden unter Verwendung von Dienstprogrammen auf Laufzeit des Containers.
Die dynamische Erstellung von Konfigurationsdateien basierend auf den environment/environment_variables konnte folgendermaßen erreicht werden.
Die Bash Way (mit eval
und cat
):
eine Datei inator
mit dem folgenden Inhalt erstellen
#!/bin/bash
eval "cat <<EOF
$(<$1)
EOF
" | tee $1 >/dev/null
inator als ausführbar machen und es im Inneren des Docker platzieren Bild und führen Sie es als ENTRYPOINT Skript
Unter Berücksichtigung der env Zugriffe auf Variablen sind avilable in der Schote/Behälter
zB:
$ env
ENVIRONMENT=staging
REDIS_HOST=abc.com
REDIS_NAMESPACE=inator
$ cat config/redis.yaml
${ENVIRONMENT}:
host: ${REDIS_HOST}
namespace: ${REDIS_NAMESPACE}
port: 6379
$ ./inator config/redis.yaml
$ cat config/redis.yaml
staging:
host: abc.com
namespace: inator
port: 6379
Produktion
$ env
ENVIRONMENT=production
REDIS_HOST=redis.prod.com
REDIS_NAMESPACE=prod
REDIS_CONNECT_TIMEOUT=5
TIMEOUT=10
$ cat config/redis.yaml
${ENVIRONMENT}:
host: ${REDIS_HOST}
namespace: ${REDIS_NAMESPACE}
port: 6379
connect_timeout: ${REDIS_CONNECT_TIMEOUT}
timeout: {REDIS_TIMEOUT}
$ ./inator config/redis.yaml
$ cat config/redis.yaml
production:
host: redis.prod.com
namespace: prod
port: 6379
connect_timeout: 5
timeout: 10
Vorteile Inszenierung: kein zusätzliches Paket erforderlich.
Die dockerize Weise:
dockerize ist ein Dienstprogramm laufende Anwendungen in Andockfensters Behältern zu vereinfachen. Es verwendet intern go-Vorlagen, um Konfigurationsdateien aus Umgebungsvariablen zu füllen.
Weitere Informationen finden Sie in diesem Blogpost Environment Variable Templates.
Danke !. Anstatt die Werte zur Laufzeit anzugeben, können die Werte von Vault abgerufen werden, sodass sie automatisch ausgefüllt werden. –
@DanielSagayaraj Du meinst, deine Kapseln ziehen beim Start direkt Geheimnisse aus dem Tresor? In diesem Fall könnten Sie consul-template mit [exec-mode] (https://github.com/hashicorp/consul- template#exec-mode) integrieren, das speziell für Container entwickelt wurde. Sie können die Consul-Template-Datei in eine Config-Map einfügen, sie in den Container einhängen und die Consul-Template beim Start des Containers mit Vault verzaubern lassen. – fishi