Hintergrund:
Derzeit verwenden wir Docker und Docker Compose für unsere Dienste. Wir haben die Konfiguration für verschiedene Umgebungen in Dateien ausgelagert, die Umgebungsvariablen definieren, die von der Anwendung gelesen werden. Zum Beispiel eine prod.env
Datei:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
und eine test.env
Datei:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
Daher können wir beim Starten des Containers einfach die Datei prod.env
oder test.env
verwenden:
docker run --env-file prod.env <image>
Unsere Anwendung übernimmt dann ihre Konfiguration basierend auf den in definierten Umgebungsvariablen prod.env
.
Fragen:
- Gibt es eine Möglichkeit, Umgebungsvariablen aus einer Datei in Kubernetes bereitzustellen (z. B. beim Definieren eines Pods), anstatt sie wie folgt fest zu codieren:
apiVersion: v1 Art: Pod Metadaten: Etiketten: Kontext: Docker-K8s-Labor Name: MySQL-Pod Name: MySQL-Pod spec: Behälter: - - env: - - Name: MYSQL_USER Wert: MySQL - - Name: MYSQL_PASSWORD Wert: MySQL - - Name: MYSQL_DATABASE Wert: Probe - - Name: MYSQL_ROOT_PASSWORD Wert: Supersekret Bild: "MySQL: Neueste" Name: MySQL Häfen: - - containerPort: 3306
- Wenn dies nicht möglich ist, welcher Ansatz wird vorgeschlagen?
Secret
oder keineConfigMap
Ressource erstellen, da dies nur vorübergehend ist und zum Testen verwendet wird. Ich habe eingeschränkte Berechtigungen im k8s-Cluster. Ich kann möglicherweise eineSecret
Ressource erstellen , aber ich kann sie nicht löschen, sobald sie bereits erstellt wurde.