Nach Pods, Deployments und Services widmen wir uns nun den Konzepten für Konfiguration, Sicherheit und Datenpersistenz in Kubernetes. Mit ConfigMaps, Secrets und Storage-Ressourcen lassen sich Anwendungen flexibel, sicher und dauerhaft betreiben.
ConfigMaps – Konfigurationsdaten verwalten
ConfigMaps ermöglichen es, Konfigurationsdaten außerhalb des Anwendungscodes zu speichern.
- Trennung von Code und Konfiguration
- Einfache Aktualisierung, ohne Container neu zu bauen
- Nutzung in Umgebungsvariablen oder als Konfigurationsdateien
Beispiel:
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_MODE: production
APP_PORT: "8080"
Pods können diese Werte dann über Umgebungsvariablen oder Volumes nutzen.
Secrets – Sensible Daten schützen
Secrets speichern sensible Informationen wie Passwörter, Tokens oder Zertifikate.
- Daten werden Base64-codiert in etcd abgelegt
- Mit aktiviertem etcd-Encryption werden sie verschlüsselt gespeichert
- Zugriff über RBAC (Role-Based Access Control) steuerbar
Beispiel:
apiVersion: v1
kind: Secret
metadata:
name: db-secret
type: Opaque
data:
username: YWRtaW4=
password: c2VjdXJlUGFzcw==
Pods können diese Secrets sicher als Umgebungsvariablen oder Dateien einbinden.
Storage in Kubernetes
Container sind grundsätzlich zustandslos. Für persistente Daten gibt es in Kubernetes:
- Persistent Volumes (PV): Stellt Speicher bereit, z. B. NFS, iSCSI oder Cloud-Volumes.
- Persistent Volume Claims (PVC): Von Pods angeforderter Speicherplatz.
- Storage Classes: Ermöglichen dynamische Bereitstellung von Speicher durch den Administrator oder Cloud-Provider.
Beispiel für eine PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: app-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
StatefulSets für zustandsbehaftete Anwendungen
- StatefulSets sorgen für stabile Netzwerknamen und persistente Speicherzuordnung.
- Ideal für Datenbanken oder andere zustandsbehaftete Dienste.
- Unterstützen Rolling Updates und Skalierung mit Datenpersistenz.
Zusammenspiel in der Praxis
- ConfigMaps: Konfigurationsdaten zentral verwalten.
- Secrets: Sensible Daten sicher integrieren.
- Storage: Daten dauerhaft speichern und verfügbar halten.
Damit können auch komplexe Anwendungen in Kubernetes konfigurierbar, sicher und persistent betrieben werden.
Schreibe einen Kommentar