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

PfadBedeutung
/opt/bitnamiContainer-Software
/bitnami/postgresqlDaten (Persistent Volume)
/tmpTemporä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

  • curl lädt Archiv
  • Stream wird direkt an Pod weitergereicht
  • tar xz entpackt im PV
  • --strip-components=1 entfernt 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-password
  • password

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

OperatorBedeutung
;Immer nächsten Befehl ausführen
&&Nur bei Erfolg fortfahren
>Datei überschreiben
>>Datei anhängen
$()Befehl ausführen und Ergebnis einsetzen
sh -lcMehrere 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

  1. Struktur-Dateien
  2. Daten-Dateien
  3. Views / Indizes / Constraints

Empfehlung

Vor großen Imports:

  • Backup erstellen
  • Import in Testumgebung prüfen
  • Mit ON_ERROR_STOP=1 arbeiten

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 -h zeigt 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

Fasten-Brokkolicremesuppe

Portionen: 2 oder 3 kleine
Zubereitungszeit: ca. 40–45 Minuten
Kalorien: ca. 110–115 kcal pro Portion


Zutaten

  • 1 Brokkoli (ca. 500 g)
  • 1 kleine Möhre
  • 40 g Sellerie
  • untere weiße Hälfte einer Lauchstange
  • 1 Zwiebel
  • 2 Knoblauchzehen
  • 1 Stängel Petersilie
  • 1 Lorbeerblatt
  • ca. 750 ml Wasser
  • 10 g Butter
  • 1 Prise Salz
  • etwas schwarzer Pfeffer
  • 1 Limette
  • optional: 1 Prise Muskat

Zubereitung

  1. Brokkoli in Röschen teilen. Den Strunk schälen, grob würfeln und beiseitelegen.
  2. Zwiebel, Möhre und Sellerie in daumengroße Stücke schneiden und in der Butter bei mittlerer Hitze leicht anschwitzen.
  3. Brokkolistrunk und den längs halbierten, gründlich gewaschenen Lauch zugeben. Mit Wasser aufgießen, bis alles bedeckt ist.
  4. Eine Knoblauchzehe in Scheiben schneiden und zusammen mit Petersilie und Lorbeerblatt in den Topf geben. Leicht salzen und pfeffern.
  5. Die Brühe etwa 25 Minuten sanft köcheln lassen.
  6. Brühe durch ein Sieb gießen und das Lorbeerblatt entfernen.
  7. Brokkoliröschen sowie die zweite fein gehackte Knoblauchzehe in die Brühe geben.
  8. Aus dem Sieb etwa die Hälfte der Möhrenstücke sowie etwas Lauch, Sellerie und Strunk zurück in die Brühe geben.
  9. Weitere 12–15 Minuten sanft garen.
  10. Alles mindestens 1 Minute sehr fein pürieren, bis eine cremige Konsistenz entsteht.
  11. Mit Limettensaft, Pfeffer und optional Muskat abschmecken. Mit fein gehackter Petersilie bestreuen und servieren.

Tipp

  • Je weniger Flüssigkeit am Ende im Topf ist, desto cremiger wird die Suppe.
  • Ein Limettenviertel auf dem Teller unterstreicht die frische, leichte Note.
  • Wird die Suppe zu dick, esslöffelweise heißes Wasser zugeben.

## Fastentomatenchremesuppe

* Portion: 2
* Zeit: 60-70 Minuten
* Kalorien je Portion: ca. 210j

## Zutaten

* [ ] 2 Möhren
* [ ] 75 g Sellerie
* [ ] 3 größere Tomaten
* [ ] die obere Hälfte einer Lauchstange
* [ ] 1 Zwiebel
* [ ] 2 Knoblauchzehen
* [ ] 1 Stengel Petersilie
* [ ] ca. 500ml Wasser
* [ ] Oregano, Thymian, Basilikum
* [ ] eine Prise Salz, etwas Pfeffer
* [ ] Limette, evtl. etwas Honig

## Kochen

* Zwiebeln und eine Knoblauchzehe in Scheiben Schneiden und in 15ml Olivenöl leicht rösten
* Lauch zerkleinern, waschen und hinzugebn, mit Wasser vorsichtig aufgießen bis alles bedeckt ist
* Salz, Pfeffer, Thymian und Oregano dazugeben
* Die Schale der Tomaten anritzen und über der kochenden Brühe in einem Sieb mitdünsten.
* Die Brühe nach 30 min durch ein Sieb gießen
* eine Knoblauchzehe klein schneiden, Tomaten schälen und zur Brühe geben
* Mit dem Basilikum noch 15 Minuten leicht köcheln
* 1 min Pürieren
* servieren

## Tipp

Suppe je nach Geschmack mit Limette und Honig abschmecken

Blumenkohlcremesuppe

Zubereitungszeit: ca. 20 Minuten
Portionen: 2 á  ≈ 110 kcal pro Portion


Zutaten

  • 400 g Blumenkohl (frisch in Röschen oder TK)
  • 2 Möhren
  • 1 halbe Lauchstange (heller bis weißer Teil)
  • 50g Sellerie
  • 1 Hand voll Petersilie
  • 10 Gramm Butter
  • 500–600 ml Wasser
  • Salz (sparsam)
  • Schwarzer Pfeffer
  • 1 Prise Muskat
  • 1–2 TL Zitronensaft

Zubereitung

  1. Frischen Blumenkohl zerkleinern; Tiefkühlblumenkohl gefroren bereitstellen
  2. Schneide Möhren und Sellerie in daumengroße Stücke, halbiere den Lauch, längs und quer und köchle (bei mir Herdstufe 2) es mit drei Viertel leicht zerkleinerter Petersilie, wenig Pfeffer und Muskat eine viertel Stunde lang
  3. Entnehme das Gemüse aus dem Sud und gib von den Möhren ungefähr die Hälfte wieder hinzu, vom Rest je ein Viertel
  4. Stelle den Herd wieder auf Maximum und gib den Blumenkohl dazu, gieße Wasser hinzu, bis der Kohl knapp bedeckt ist. Lass es aufkochen.
  5. Lass es aufkochen und dann alles noch einmal 12 Minuten sanft (nicht sprudelnd, bei mir Stufe 1,5) köcheln.
  6. Dann gib die Butter hinzu und püriere alles sehr fein (mind. 1 Minute für cremige Konsistenz).
  7. Mit Salz, Pfeffer, Muskat und Limettensaft abschmecken.
  8. Anrichten und mit Petersilie bestreuen.

Tipps für perfekte Konsistenz

  • Wenig Flüssigkeit = mehr Cremigkeit.
  • Längeres Pürieren verbessert die Bindung deutlich.
  • Wird sie zu dick: esslöffelweise heißes Wasser zugeben.

Man sagt: TK-Blumenkohl soll die Suppe etwas weicher im Geschmack machen, frischer Blumenkohl wirkt aromatischer und leicht nussig.