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
