-
-
Notifications
You must be signed in to change notification settings - Fork 0
pgAdmin4
Alexander Diemand edited this page Aug 2, 2025
·
2 revisions
access to the UI: http://localhost:4444/
(adapted from: https://www.enterprisedb.com/blog/how-deploy-pgadmin-kubernetes)
- create namespace
export NAMESPACE=pgadmin4
kubectl create namespace ${NAMESPACE}- set secret for pgadmin4
echo -n "dev@company.com" | base64
echo -n "my-very-strong-secret" | base64
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: pgadmin
data:
pgadmin-username:
pgadmin-password: bXktdmVyeS1zdHJvbmctc2VjcmV0kubectl apply -n ${NAMESPACE} -f secret.yaml
- create configmap which contains list of servers in servers.json
apiVersion: v1
kind: ConfigMap
metadata:
name: pgadmin-config
data:
servers.json: |
{
"Servers": {
"1": {
"Name": "PostgreSQL DB",
"Group": "Servers",
"Port": 5432,
"Username": "postgres",
"Host": "pgmain.company.com",
"SSLMode": "prefer",
"MaintenanceDB": "postgres"
}
}
}kubectl apply -n ${NAMESPACE} -f configmap.yaml
- create service
apiVersion: v1
kind: Service
metadata:
name: pgadmin-service
spec:
ports:
- protocol: TCP
port: 80
targetPort: http
selector:
app: pgadmin
type: NodePortkubectl apply -n ${NAMESPACE} -f service.yaml
- deploy StatefulSet
in the following set the version to a value found on https://hub.docker.com/r/dpage/pgadmin4/tags
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: pgadmin
spec:
serviceName: pgadmin-service
podManagementPolicy: Parallel
replicas: 1
updateStrategy:
type: RollingUpdate
selector:
matchLabels:
app: pgadmin
template:
metadata:
labels:
app: pgadmin
spec:
terminationGracePeriodSeconds: 10
containers:
- name: pgadmin
image: dpage/pgadmin4:<<version>>
imagePullPolicy: Always
env:
- name: PGADMIN_DEFAULT_EMAIL
valueFrom:
secretKeyRef:
name: pgadmin
key: pgadmin-username
- name: PGADMIN_DEFAULT_PASSWORD
valueFrom:
secretKeyRef:
name: pgadmin
key: pgadmin-password
ports:
- name: http
containerPort: 80
protocol: TCP
volumeMounts:
- name: pgadmin-config
mountPath: /pgadmin4/servers.json
subPath: servers.json
readOnly: true
- name: pgadmin-data
mountPath: /var/lib/pgadmin
volumes:
- name: pgadmin-config
configMap:
name: pgadmin-config
volumeClaimTemplates:
- metadata:
name: pgadmin-data
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "nfs-data-storage"
resources:
requests:
storage: 3Gikubectl apply -n ${NAMESPACE} -f statefulset.yaml
- port forward
kubectl port-forward -n ${NAMESPACE} service/pgadmin-service 4444:80access the UI on: http://localhost:4444/