Background:kubernetes equivalente di ENV-file in Docker
Attualmente stiamo usando Docker Docker e Compose per i nostri servizi. Abbiamo esternalizzato la configurazione per diversi ambienti in file che definiscono le variabili di ambiente lette dall'applicazione. Per esempio un file prod.env
:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
e un file test.env
:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
Così si possono semplicemente utilizzare il file prod.env
o test.env
quando si avvia il contenitore:
docker run --env-file prod.env <image>
La nostra applicazione poi riprende la sua configurazione in base alle variabili di ambiente definite in prod.env
.
Domande:
- C'è un modo per fornire le variabili di ambiente da un file a kubernetes (ad esempio quando si definisce un baccello) invece di hardcoding in questo modo:
apiVersion: v1 kind: Pod metadata: labels: context: docker-k8s-lab name: mysql-pod name: mysql-pod spec: containers: - env: - name: MYSQL_USER value: mysql - name: MYSQL_PASSWORD value: mysql - name: MYSQL_DATABASE value: sample - name: MYSQL_ROOT_PASSWORD value: supersecret image: "mysql:latest" name: mysql ports: - containerPort: 3306
- Se ciò non è possibile, qual è l'approccio suggerito?
Questo è il mio approccio attuale, tuttavia ho 3 diversi pod che usano lo stesso elenco di segreti esposti come EnvVars. È possibile definirli una volta e esporli ai 3 pod? –
Non che io sappia. –
che sarebbe così bello ... sembra assegnare il boilerplate per ottenere i vv env in container. @PixelElephant – AndrewMcLagan