Kubernetes: diferentes configuraciones por entorno
Tenemos una aplicación que se ejecuta en GKE Kubernetes y que espera que se pase una URL de autenticación (a la que se redireccionará al usuario a través de su navegador) como variable de entorno.
Estamos usando diferentes espacios de nombres por entorno
Entonces, nuestra configuración actual de pod se parece a esto:
env:
- name: ENV
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: AUTH_URL
value: https://auth.$(ENV).example.org
Y todo funciona de manera sorprendente, podemos tener tantos entornos dinámicos como queramos, solo aplicamos -f config.yaml y funciona perfectamente sin cambiar un solo archivo de configuración y sin ningún script de terceros.
Ahora, para la producción, queremos usar diferentes dominios, por lo que el patrón generalhttps://auth.$(ENV).example.org
ya no funciona
¿Qué opciones tenemos?
Como las configuraciones están en el repositorio de git, cree una rama separada paraprod
ambienteTenga un ConfigMap predeterminado y uno específico para el entorno de producción, y ejecútelo a través de algún script (si existe)prod-config.yaml
luego usa eso, de lo contrario usaconfig.yaml
) - pero con este enfoque ya no podemos usar kubectl directamenteMueva esta configuración al nivel de aplicación y tenga un archivo de configuración separado paraprod
env - pero esto va en contra de la aplicación 12factor?Otro...?