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.envarchivo:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
y un test.envarchivo:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
Por lo tanto, podemos simplemente usar el archivo prod.envo test.enval 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?
SecretoConfigMapporque esto es solo temporal y se usa para pruebas. Tengo permisos limitados en el clúster k8s. Tal vez pueda crear unSecretrecurso, pero no podré eliminarlo una vez que ya esté creado.