Sfondo:
Attualmente stiamo utilizzando Docker e Docker Compose per i nostri servizi. Abbiamo esternalizzato la configurazione per diversi ambienti in file che definiscono le variabili di ambiente lette dall'applicazione. Ad esempio un prod.env
file:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
e un test.env
file:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
Quindi possiamo semplicemente usare il file prod.env
o test.env
all'avvio del contenitore:
docker run --env-file prod.env <image>
La nostra applicazione quindi prende la sua configurazione in base alle variabili d'ambiente definite in prod.env
.
Domande:
- C'è un modo per fornire variabili di ambiente da un file in Kubernetes (ad esempio quando si definisce un pod) invece di codificarle come segue:
apiVersion: v1 tipo: Pod metadati: etichette: contesto: docker-k8s-lab nome: mysql-pod nome: mysql-pod spec: contenitori: - env: - nome: MYSQL_USER valore: mysql - nome: MYSQL_PASSWORD valore: mysql - nome: MYSQL_DATABASE valore: campione - nome: MYSQL_ROOT_PASSWORD valore: supersecret immagine: "mysql: latest" nome: mysql porti: - containerPort: 3306
- Se ciò non è possibile, qual è l'approccio suggerito?
Secret
oConfigMap
perché è solo temporanea e viene utilizzata per il test. Ho autorizzazioni limitate nel cluster k8s. Forse potrò creare unaSecret
risorsa ma non potrò eliminarla una volta che è già stata creata.