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.envfile:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
e un test.envfile:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
Quindi possiamo semplicemente usare il file prod.envo test.envall'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?
SecretoConfigMapperché è solo temporanea e viene utilizzata per il test. Ho autorizzazioni limitate nel cluster k8s. Forse potrò creare unaSecretrisorsa ma non potrò eliminarla una volta che è già stata creata.