Antecedentes:
Actualmente usamos Docker y Docker Compose para nuestros servicios. Hemos externalizado la configuración para diferentes entornos en archivos que definen las variables de entorno leídas por la aplicación. Por ejemplo, un prod.env
archivo:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
y un test.env
archivo:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
Por lo tanto, podemos simplemente usar el archivo prod.env
o test.env
al iniciar el contenedor:
docker run --env-file prod.env <image>
Luego, nuestra aplicación toma su configuración en función de las variables de entorno definidas en prod.env
.
Preguntas:
- ¿Hay alguna forma de proporcionar variables de entorno desde un archivo en Kubernetes (por ejemplo, al definir un pod) en lugar de codificarlas de esta manera?
apiVersion: v1 tipo: Pod metadatos: etiquetas: contexto: docker-k8s-lab nombre: mysql-pod nombre: mysql-pod Especificaciones: contenedores: - env: - nombre: MYSQL_USER valor: mysql - nombre: MYSQL_PASSWORD valor: mysql - nombre: MYSQL_DATABASE valor: muestra - nombre: MYSQL_ROOT_PASSWORD valor: supersecreto imagen: "mysql: último" nombre: mysql puertos: - containerPort: 3306
- Si esto no es posible, ¿cuál es el enfoque sugerido?
Secret
oConfigMap
porque esto es solo temporal y se usa para pruebas. Tengo permisos limitados en el clúster k8s. Tal vez pueda crear unSecret
recurso, pero no podré eliminarlo una vez que ya esté creado.