Der Einsatz eines PostgreSQL-Clusters auf OKD/OpenShift unter Verwendung des Zalando Postgres Operators ist eine leistungsstarke und skalierbare Lösung. Dieser Leitfaden bietet eine Schritt-für-Schritt-Anleitung für den Einsatz des Operators, die Konfiguration des Speichers mit StorageClass oder NFS und den effizienten Zugriff auf die PostgreSQL-Datenbank.
Voraussetzungen
Bevor Sie fortfahren, vergewissern Sie sich, dass Sie alles haben:
- Ein OKD/OpenShift-Cluster mit installiertem und konfiguriertem CLI (oc)
- Helm auf Ihrem lokalen System installiert
- Ein NFS-Server (wenn Sie NFS für die Speicherung verwenden)
Schritt-für-Schritt-Anleitung für den Einsatz
1. Klonen Sie das Zalando Postgres Operator Repository
git clone https://github.com/zalando/postgres-operator.git
2. Hinzufügen des Zalando Helm Repository
helm repo add postgres-operator-charts
https://opensource.zalando.com/postgres-operator/charts/postgres-operator
3. Installieren Sie den Postgres-Operator
- Erstellen Sie einen eigenen Namensraum:
oc create namespace zalando-operator
- Installieren Sie den Operator mit Helm:
helm install postgres-operator postgres-operator-charts/postgres-
operator -n zalando-operator
4. Gewährung von Sicherheitskontexteinschränkungen (SCC)
OpenShift erzwingt Sicherheitseinschränkungen über SCC. Gewähren Sie dem Standard-Servicekonto die anyuid-SCC:
oc adm policy add-scc-to-user anyuid -z default -n zalando-operator
5. Überprüfen Sie die Installation des Bedieners
Prüfen Sie, ob die Operator-Pods in Betrieb sind:
oc get pods -l app=postgres-operator -n zalando-operator
Bereitstellung des PostgreSQL-Clusters
Option 1: Verwendung einer StorageClass
Wenden Sie das minimale Manifest an, das im Zalando-Repository bereitgestellt wird:
oc apply -f manifests/minimal-postgres-manifest.yaml
Option 2: Verwendung von NFS
Schritt 1: Erstellen eines persistenten Volumes (PV)
Speichern Sie die folgende PV-Definition in zalando-persistent-volume.yaml:
kind: PersistentVolume
metadata:
name: database-storage
annotations:
kubernetes.io/pv-protection: "true"
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
volumeMode: Filesystem
nfs:
path: /VM/NFS/postgresql
server: 10.124.0.4
Wenden Sie die PV-Konfiguration an:
oc apply -f zalando-persistent-volume.yaml
Schritt 2: Erstellen eines Persistent Volume Claim (PVC)
Speichern Sie die folgende PVC-Definition in zalando-persistent-volume-claim.yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pgdata-acid-cluster-avitech-0
namespace: zalando-cluster
labels:
application: spilo
cluster-name: acid-cluster-avitech
team: acid
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
volumeName: database-storage
volumeMode: Filesystem
storageClassName: ""
Wenden Sie die PVC-Konfiguration an:
oc apply -f zalando-persistent-volume-claim.yaml
Schritt 3: Erteilen Sie SCC für den PostgreSQL-Namensraum
Gewähren Sie dem Standard-Servicekonto im zalando-cluster-Namensraum den privilegierten SCC:
oc adm policy add-scc-to-user privileged -z default -n zalando-cluster
Rollen und RoleBindings konfigurieren
Rollen-Konfiguration
Speichern Sie die folgende Rollendefinition in zalando-role.yaml:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: zalando-role
namespace: zalando-cluster
rules:
- apiGroups: [""]
resources:
- endpoints
- endpoints/restricted
verbs:
- get
- list
- watch
- create
- update
- delete
Die Rolle anwenden:
oc apply -f zalando-role.yaml
RoleBinding-Konfiguration
Speichern Sie die folgende RoleBinding-Definition in zalando-rolebinding.yaml:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: zalando-rolebinding
namespace: zalando-cluster
subjects:
- kind: ServiceAccount
name: postgres-pod
namespace: zalando-cluster
roleRef:
kind: Role
name: zalando-role
apiGroup: rbac.authorization.k8s.io
Wenden Sie die RoleBinding an:
oc apply -f zalando-rolebinding.yaml
Überprüfen der PostgreSQL-Cluster-Installation
Überprüfen Sie, ob Ihr PostgreSQL-Cluster läuft:
oc get pods -l application=spilo -n zalando-cluster
Zugriff auf den PostgreSQL-Cluster
Option 1: Verwendung von Umgebungsvariablen
1. rufen Sie die PostgreSQL-Zugangsdaten ab:
export PGPASSWORD=$(oc get secret postgres.acid-minimal-cluster.credentials.postgresql.acid.zalan.do -o 'jsonpath={.data.password}' | base64 -d)
export PGSSLMODE=require
2.Retrieve the cluster's service URL:
export HOST_PORT=$(oc get svc acid-minimal-cluster -o jsonpath='{.spec.clusterIP}:{.spec.ports[0].port}')
export PGHOST=$(echo $HOST_PORT | cut -d: -f 1)
export PGPORT=$(echo $HOST_PORT | cut -d: -f 2)
Connect using psql:
psql -U postgres
Option 2: Verwendung von Pod Exec
Greifen Sie direkt auf den PostgreSQL-Pod zu:
oc exec -it acid-cluster-avitech-0 -n zalando-cluster -- /bin/sh
Starten Sie psql innerhalb des Pods:
psql
Ändern Sie das Passwort, falls erforderlich:
ALTER USER postgres WITH PASSWORD 'ExampleStrongPassword'
Wichtiger Hinweis: JDBC Verbindung für Zalando PostgreSQL Cluster
Um sich mit dem Zalando PostgreSQL-Cluster über JDBC zu verbinden, stellen Sie sicher, dass Ihr Verbindungsstring korrekt konfiguriert ist. Nachfolgend finden Sie die entsprechenden Formate:
jdbc:postgresql://acid-cluster-avitech.zalando-cluster.svc.cluster.local:5432/postgres?postgres&ssl=true&sslmode=require
jdbc:postgresql://<svc-name>.<namespace>.svc.cluster.local:5432/postgres?postgres&ssl=true&sslmode=require
Wichtige Punkte:
- Ersetzen Sie durch den Namen des PostgreSQL-Dienstes
- Ersetzen Sie durch den Kubernetes-Namensraum, in dem der Cluster bereitgestellt wird
- Vergewissern Sie sich, dass SSL aktiviert ist (ssl=true) und der sslmode für sichere Verbindungen auf require gesetzt ist.
Schlussfolgerung
Die Bereitstellung eines PostgreSQL-Clusters auf OKD/OpenShift unter Verwendung des Zalando Postgres Operators ist einfach und hoch skalierbar. Wenn Sie diese Anleitung befolgen, können Sie Ihren Datenbank-Cluster nahtlos mit einer StorageClass oder NFS konfigurieren und so eine zuverlässige Speicherung und robuste Leistung sicherstellen.
Weitere Informationen finden Sie in der Zalando Postgres Operator Dokumentation.
Entdecken Sie die SRE-Services von ITGix und erfahren Sie mehr über unser Know-how.

