Secrets für MariaDB – Pod verwenden (Kubernetes HowTo)
Passwörter sicher ins Deployment bringen – ohne YAML-Spaghetti und ohne Bauchweh
Problem
Wie bringst du das MariaDB-Root-Passwort sicher in den Pod, ohne es im Klartext in dein Deployment zu kippen?
Kurzantwort
Erzeuge ein Secret per kubectl create secret generic mariadb-secret ... und binde es im Deployment via envFrom.secretRef ein. Danach siehst du die Variablen im Pod-Environment – das Passwort liegt nicht im Deployment-YAML.
Anwendungssituation
Dein Team will schnell eine MariaDB hochziehen. Das Passwort soll nicht ins Repo. Also: Secret anlegen, Deployment dranflanschen, testen – fertig. Genau das machen wir jetzt, Schritt für Schritt.
Voraussetzungen
- Kubernetes-Cluster &
kubectlmit Kontext - Schreibrechte im Ziel-Namespace (Standard:
default) - Terminal/Editor (z. B.
nano) - Grundkenntnisse:
kubectl apply, Deployments, Pods
Schritt-für-Schritt-Anleitung
1. Verzeichnis anlegen (optional, für Ordnung)
cd
mkdir -p manifests/secrettest
cd manifests/secrettest2. Secret erzeugen (MariaDB-Root-Passwort)
kubectl create secret generic mariadb-secret \
--from-literal=MARIADB_ROOT_PASSWORD=11abc432 \
--dry-run=client -o yaml > 01-secrets.yml
kubectl apply -f .
kubectl get secrets
kubectl get secret mariadb-secret -o yamlErgebnis: Ein Secret namens mariadb-secret, Key MARIADB_ROOT_PASSWORD.
3. Deployment schreiben (MariaDB nutzt Secret als Env)
Datei 02-deploy.yml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mariadb-deployment
spec:
selector:
matchLabels:
app: mariadb
replicas: 1
template:
metadata:
labels:
app: mariadb
spec:
containers:
- name: mariadb-cont
image: mariadb:latest
envFrom:
- secretRef:
name: mariadb-secretAnwenden:
kubectl apply -f .4. Funktion prüfen (Umgebungsvariablen im Pod)
kubectl exec deployment/mariadb-deployment -- env
# entspricht ungefähr:
# kubectl exec <pod-name> -- envDu solltest MARIADB_ROOT_PASSWORD im Output sehen (Wert nicht im Klartext im YAML).
Häufige Fehler & Lösungen
Secret-Name passt nicht Fehler:
secret "mariadb-secret" not found. Fix: Secret-Name im Deployment (secretRef.name) exakt wie erstellt.Namespace-Mismatch Fehler: Secret existiert, Pod findet es nicht. Fix: Secret und Deployment müssen im gleichen Namespace liegen.
Änderungen greifen nicht automatisch Hinweis: Ein reines
kubectl applyauf dein Deployment triggert ohne weiteres keinen neuen Rollout. Tools wie stakater/Reloader können helfen, Rollouts bei Config-/Secret-Änderungen anzustoßen.
Was jetzt? (Next Steps)
- Daten-Persistenz nachrüsten (PVC/StorageClass) und MariaDB sauber stateful betreiben.
- Readiness/Healthchecks für MariaDB ergänzen (z. B.
tcpSocket). - Optional: Secret-Rotation mit einem externen Tool planen (Automatisierung/Policy).
FAQ
Kann ich mehrere Werte im selben Secret speichern?
Ja, als weitere --from-literal Flags beim Erzeugen (z. B. User, DB-Name).
Wo sehe ich den Secret-Wert?
Nicht im Deployment-YAML. Im Pod als Env, oder kubectl get secret ... -o jsonpath=... (Achtung: base64/Terminal-History).
Warum envFrom statt Volume-Mount?
Für Env-Variablen ist es am einfachsten. (Konfigs als Files → Volume-Mount.)
Schalte den Turbo ein…
Ganz ehrlich: Wenn du das in Produktion stabil willst, bauen wir das zusammen sauber auf – mit Live-Cluster, 85 % Praxis und Q&A-Support. Blaumann an, let’s go!
👉 Du willst mehr über Secret, ConfigMaps und Deployment lernen – das kleine 1x1 von Kubernetes? Dann komm in mein Kubernetes Einführung Training und schalte den Lernturbo ein.