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.envDatei:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
und eine test.envDatei:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
Daher können wir beim Starten des Containers einfach die Datei prod.envoder test.envverwenden:
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?
Secretoder keineConfigMapRessource erstellen, da dies nur vorübergehend ist und zum Testen verwendet wird. Ich habe eingeschränkte Berechtigungen im k8s-Cluster. Ich kann möglicherweise eineSecretRessource erstellen , aber ich kann sie nicht löschen, sobald sie bereits erstellt wurde.