pgAdmin
UI de administración de PostgreSQL (bases de datos del cluster).
Resumen
pgAdmin 4 conectado a los clusters CloudNativePG. Las conexiones se cargan
automáticamente desde servers.json (Git); al añadir un cluster nuevo, Reloader
reinicia el pod y pgAdmin lo importa solo.
Estado
| Campo |
Valor |
| Estado |
Operativo |
| Argo CD Application |
pgadmin |
| Namespace |
pgadmin |
Despliegue
| Campo |
Valor |
| Método |
manifests planos (imagen oficial) |
| Imagen |
dpage/pgadmin4:9.17 |
| App |
clusters/luka/apps/pgadmin/application.yaml |
| Config |
clusters/luka/config/pgadmin/ |
Red
Acceso y usuarios
- Login único
admin (PGADMIN_DEFAULT_EMAIL + password en SealedSecret
pgadmin-admin; valores en .env local).
- Los servers se conectan como superuser
postgres (password en .pgpass,
SealedSecret pgadmin-pgpass).
Configuración
PGADMIN_REPLACE_SERVERS_ON_STARTUP=True (servers declarativos desde Git).
- Credenciales de conexión vía
.pgpass: un init container copia el Secret a
/var/lib/pgadmin/storage/<email>/.pgpass con chmod 600 + owner 5050 (libpq
exige 0600); el server lo referencia con ConnectionParameters.passfile:
".pgpass" (pgAdmin resuelve contra el storage dir).
securityContext.fsGroup: 5050 (el contenedor corre como UID 5050; sin él no
puede escribir en el PVC).
strategy: Recreate (upgrade seguro de pgAdmin; su SQLite migra no reversible).
- Reloader anotado en el Deployment (metadata): reinicio al cambiar
pgadmin-servers o pgadmin-pgpass.
Almacenamiento
- PVC
pgadmin-data (Longhorn, 1Gi) para /var/lib/pgadmin (config DB,
sesiones, preferencias). Los servers viven en Git.
Dependencias
- Depende de: k3s, Longhorn, Reloader, Sealed Secrets, Traefik, cert-manager.
- Usado por: administración de CloudNativePG.
Backup y recuperación
- Re-desplegable desde Git. El estado útil (servers) está en
servers.json.
Monitorización
- No expone métricas Prometheus nativas.
Referencias
- https://www.pgadmin.org/
- Container: https://hub.docker.com/r/dpage/pgadmin4
Notas / TODO
- Proteger con Authentik.
- Añadir n8n y Shlink al
servers.json cuando existan en el cluster.