Secrets für MariaDB – Pod verwenden (Kubernetes HowTo)

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 & kubectl mit 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/secrettest

2. 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 yaml

Ergebnis: 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-secret

Anwenden:

kubectl apply -f .

4. Funktion prüfen (Umgebungsvariablen im Pod)

kubectl exec deployment/mariadb-deployment -- env
# entspricht ungefähr:
# kubectl exec <pod-name> -- env

Du 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 apply auf 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.