Kubernetes PostgreSQL – Streaming, Ablage und Import
Technische Referenz & Betriebsdokumentation
1. Ziel dieser Dokumentation
Dieses Dokument beschreibt:
- Zugriff auf PostgreSQL-Pods in Kubernetes
- Ablage großer SQL-Dateien im Persistent Volume (PV)
- Streaming von Git-Repositories ohne lokale Speicherung
- Sicheren und kontrollierten SQL-Import
- Umgang mit Kubernetes Secrets
- Risiken und empfohlene Vorgehensweisen
2. Platzhalter-Konvention
In allen Beispielen werden folgende Platzhalter verwendet:
<namespace>
<pod>
<secret>
<database>
<user>
<repo-url>
<commit>
<ordner>
<datei>
<key>
Diese sind projektspezifisch zu ersetzen.
3. Architekturüberblick
PostgreSQL speichert Daten im Persistent Volume unter:
/bitnami/postgresql
Wichtige Unterscheidung
| Pfad | Bedeutung |
|---|---|
/opt/bitnami | Container-Software |
/bitnami/postgresql | Daten (Persistent Volume) |
/tmp | Temporär, nicht persistent |
Ablage-Ordner für Import-Dateien:
/bitnami/postgresql/<ordner>
4. Kubernetes – Grundbefehle
Alle Pods anzeigen
kubectl get pods -A
Pods in einem Namespace anzeigen
kubectl get pods -n <namespace>
Befehl in Pod ausführen
kubectl exec -n <namespace> <pod> -- <command>
Interaktive Shell starten
kubectl exec -it -n <namespace> <pod> -- sh
5. Persistent Volume prüfen
Speicherplatz prüfen
kubectl exec -n <namespace> <pod> -- df -h /bitnami/postgresql
Ordnerinhalt anzeigen
kubectl exec -n <namespace> <pod> -- ls -lh /bitnami/postgresql/<ordner>
Anzahl Dateien zählen
kubectl exec -n <namespace> <pod> -- \
sh -lc 'ls -1 /bitnami/postgresql/<ordner> | wc -l'
6. Streaming – Einzelne Datei ins PV speichern (ohne Ausführung)
curl -L "<raw-file-url>" \
| kubectl exec -i -n <namespace> <pod> -- \
sh -lc 'cat > /bitnami/postgresql/<ordner>/<datei>.sql'
Eigenschaften:
- Kein lokales Speichern
- Kein Ausführen
- Reine Dateiablage im PV
7. Komplettes Repository direkt ins PV streamen
Repository als tar.gz streamen und entpacken
curl -L "<repo-url>/-/archive/<commit>/<project>-<commit>.tar.gz" \
| kubectl exec -i -n <namespace> <pod> -- \
sh -lc 'mkdir -p /bitnami/postgresql/<ordner> && \
cd /bitnami/postgresql/<ordner> && \
tar xz --strip-components=1'
Erklärung
curllädt Archiv- Stream wird direkt an Pod weitergereicht
tar xzentpackt im PV--strip-components=1entfernt obersten Archiv-Ordner
Vorteile
- Kein Speicherverbrauch auf Managementserver
- Reproduzierbarer Stand durch Commit
- Kein temporäres Ablegen
8. Kubernetes Secrets – Passwort abrufen
Secrets anzeigen
kubectl get secret -n <namespace>
Passwort dekodieren
kubectl get secret -n <namespace> <secret> \
-o jsonpath="{.data.<key>}" | base64 -d; echo
Typische Keys:
postgres-passwordpassword
9. SQL-Import – Einzeldatei
kubectl exec -i -n <namespace> <pod> -- \
psql -U <user> -d <database> \
-f /bitnami/postgresql/<ordner>/<datei>.sql
Wichtig:
- Datei wird ausgeführt
- Änderungen sind persistent
- Autocommit ist Standard
10. Batch-Import – Kontrollierte Ausführung
kubectl exec -it -n <namespace> <pod> -- sh -lc '
for f in /bitnami/postgresql/<ordner>/*.sql; do
echo "RUN $f"
psql -U <user> -d <database> \
-v ON_ERROR_STOP=1 \
-f "$f" || exit 1
done'
Eigenschaften:
- Klare Reihenfolge
- Stoppt bei Fehler
- Keine stille Fehlerfortsetzung
11. Wichtige Shell-Operatoren
| Operator | Bedeutung |
|---|---|
; | Immer nächsten Befehl ausführen |
&& | Nur bei Erfolg fortfahren |
> | Datei überschreiben |
>> | Datei anhängen |
$() | Befehl ausführen und Ergebnis einsetzen |
sh -lc | Mehrere Befehle im Pod ausführen |
12. Risiken & Sicherheitsaspekte
Autocommit-Verhalten
Wenn SQL-Dateien kein BEGIN; ... COMMIT; enthalten,
werden INSERT, DROP, TRUNCATE sofort wirksam.
Destruktive Befehle erkennen
Vor Ausführung prüfen:
grep -RInE "^\s*(DROP|TRUNCATE)\b" <ordner>
Empfohlene Reihenfolge
- Struktur-Dateien
- Daten-Dateien
- Views / Indizes / Constraints
Empfehlung
Vor großen Imports:
- Backup erstellen
- Import in Testumgebung prüfen
- Mit
ON_ERROR_STOP=1arbeiten
13. Best Practices
- Commit-Hash statt Branch verwenden
- Import-Ordner datiert benennen
- Dateien erst speichern, dann ausführen
- Speicherplatz vorab prüfen
- Große Datenmengen niemals über Managementserver speichern
- Batch-Import niemals ohne Fehlerstopp
14. Betriebszustand nach erfolgreichem Streaming
Erfolgsmerkmale
- Dateien liegen vollständig im PV
df -hzeigt erwartete Belegung- Keine laufenden
tar-Prozesse - Keine Fehlermeldungen beim Entpacken
15. Fazit
Das beschriebene Verfahren ermöglicht:
- Reproduzierbare Datenübernahme
- Speicherneutrales Streaming
- Saubere Trennung zwischen Ablage und Ausführung
- Sicheren produktiven Betrieb
zur 4. Gewalt: Neutral oder Sprachrohr der >50% ?
Für das Übertreten humanistischer Grundsätze, für die Verletzung der Würde und der körperlichen Unversehrtheit gibt es zu keiner Zeit der Welt eine Rechtfertigung, auch wenn die Mehrheit ein solches Verhalten toleriert oder gar fordert.
