Error de conexión a Postgres en KubernetesError de conexión a Postgres en Kubernetes

Error de conexión a Postgres en Kubernetes

Tags
Kubernetes
Postgres
Published
Published September 16, 2021
URL
  1. Te confundiste con el user/pass de la BD en los manifests de k8s y tu app te tira un error de conexión.
  1. Volves a definir en los .yaml el POSTGRES_USER o POSTGRES_PASSWORD y aplicas.
  1. 🔥🔥🔥

Problema

El error persiste a pesar de que los cambios de los manifests se aplicaron correctamente.

Causa

Cuando se despliega una BD postgres en k8s se crea un volume para la misma.
Cuando hacemos un cambio y se reinicia un pod, éstos se fijan si ya existe un volume para reutilizarlo. Si no existe lo crean.
En nuestro caso, como el volume no se eliminó, postgres decidió reutilizarlo, con la consecuencia de que las variables que cambiamos no se aplicaron a la BD.
PostgreSQL Database directory appears to contain a database; Skipping initialization 2022-08-02 20:41:16.783 UTC [1] LOG: starting PostgreSQL 13.1 (Debian 13.1-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit 2022-08-02 20:41:16.784 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
Según la documentación:
Warning: the Docker specific variables will only have an effect if you start the container with a data directory that is empty; any pre-existing database will be left untouched on container startup.

Solución

  • Borrar el volumen
  • Aplicar los cambios en los manifests .yaml
  • El pod de postgres creará un nuevo volumen con los nuevos cambios