Instalación y configuración de EDB Postgres for Kubernetes en OpenShift 4.16
Instalación y configuración de EDB Postgres for Kubernetes en OpenShift 4.16
En esta entrada comparto mi experiencia instalando y configurando EDB Postgres for Kubernetes sobre un clúster de OpenShift 4.16. El objetivo es desplegar un clúster de PostgreSQL altamente disponible, validar la replicación y simular un failover automático.
1. Preparación del entorno
Antes de iniciar, debemos contar con un proyecto (namespace) en OpenShift donde desplegaremos el clúster. En mi caso, utilicé el namespace proj-dev.

2. Definición del clúster de PostgreSQL
Creamos el manifiesto Cluster con tres réplicas, almacenamiento para datos y WAL, y una estrategia de actualización automática:
apiVersion: postgresql.k8s.enterprisedb.io/v1
kind: Cluster
metadata:
name: cluster-sample
namespace: proj-dev
spec:
instances: 3
logLevel: info
primaryUpdateStrategy: unsupervised
storage:
size: 1Gi
walStorage:
size: 1Gi

3. Habilitar accesos de superusuario
Por defecto, el acceso de superusuario está deshabilitado. Para habilitarlo, editamos el objeto Cluster y añadimos:
superuserSecret:
name: ha-cluster-superuser
enableSuperuserAccess: true
Esto generará un secret llamado cluster-sample-superuser con credenciales aleatorias para conectarnos como postgres.

4. Exponer PostgreSQL al exterior
Si necesitamos acceso externo, podemos crear un Service de tipo NodePort:
apiVersion: v1
kind: Service
metadata:
name: cluster-sample-rw-nodeport
namespace: proj-dev
spec:
type: NodePort
selector:
k8s.enterprisedb.io/cluster: cluster-sample
ports:
- name: postgres
port: 5432
targetPort: 5432
protocol: TCP
nodePort: 30032

5. Conexión desde un cliente externo
En un servidor Rocky Linux 9 utilicé Podman para ejecutar un contenedor con psql:
podman run -it --rm quay.io/sclorg/postgresql-15-c9s:latest bash
Conectamos a la base de datos usando el NodePort:
psql -h 192.168.100.31 -p 30032 -U postgres

6. Creación de base de datos y prueba de replicación
Creamos una base de datos de prueba y algunos registros:
CREATE DATABASE testdb;
\c testdb
CREATE TABLE empleados (
id SERIAL PRIMARY KEY,
nombre TEXT,
departamento TEXT
);
INSERT INTO empleados (nombre, departamento)
VALUES
('Ana', 'TI'),
('Luis', 'Finanzas'),
('Carla', 'Recursos Humanos');
Al consultar desde los pods secundarios, validamos que la replicación está funcionando correctamente:
SELECT * FROM empleados;

7. Prueba de failover automático
Identificamos cuál es el pod primario:
oc get pods -n proj-dev -l k8s.enterprisedb.io/cluster=cluster-sample,role=primary
Eliminamos el pod primario:
oc delete pod cluster-sample-1 -n proj-dev
Posteriormente verificamos que otro pod asume el rol de primario y que la base de datos sigue disponible.

Conclusión
La instalación de EDB Postgres for Kubernetes en OpenShift 4.16 permite desplegar un clúster de PostgreSQL altamente disponible de manera sencilla.
Con este enfoque logramos:
- Alta disponibilidad mediante múltiples réplicas.
- Replicación funcional para proteger los datos.
- Failover automático, asegurando continuidad del servicio.
Este laboratorio sirve como base para entornos productivos que requieran resiliencia y escalabilidad en la gestión de bases de datos PostgreSQL.