Lektion 7: ConfigMaps und Secrets
Konfiguration und sensible Daten sicher verwalten
25 min
Konfiguration in Kubernetes
Kubernetes trennt Konfiguration von Container-Images. Das ermöglicht die Wiederverwendung von Images in verschiedenen Umgebungen.
ConfigMaps
ConfigMaps speichern nicht-sensible Konfigurationsdaten als Key-Value-Paare.
ConfigMap erstellen
YAML
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_ENV: "production"
LOG_LEVEL: "info"
DATABASE_HOST: "db.example.com"
config.json: |
{
"feature_flags": {
"new_ui": true,
"beta_features": false
}
}BASH
# Imperativ erstellen
kubectl create configmap app-config --from-literal=APP_ENV=production
# Aus Datei erstellen
kubectl create configmap nginx-config --from-file=nginx.confConfigMap verwenden
YAML
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
containers:
- name: app
image: myapp:latest
envFrom:
- configMapRef:
name: app-config
# Oder einzelne Keys:
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: app-config
key: APP_ENVSecrets
Secrets speichern sensible Daten wie Passwörter, Tokens oder Zertifikate.
Secret erstellen
YAML
apiVersion: v1
kind: Secret
metadata:
name: db-credentials
type: Opaque
data:
username: YWRtaW4= # base64 encoded
password: cGFzc3dvcmQ= # base64 encodedBASH
# Imperativ erstellen
kubectl create secret generic db-credentials \
--from-literal=username=admin \
--from-literal=password=secretpass
# Base64 kodieren
echo -n 'admin' | base64Secret verwenden
YAML
apiVersion: v1
kind: Pod
metadata:
name: app-with-secrets
spec:
containers:
- name: app
image: myapp:latest
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
volumeMounts:
- name: secret-volume
mountPath: /etc/secrets
readOnly: true
volumes:
- name: secret-volume
secret:
secretName: db-credentialsBest Practices
- Secrets nicht in Git committen - Nutze externe Secret-Manager
- RBAC für Secrets - Zugriff einschränken
- Secrets verschlüsseln - Encryption at rest aktivieren
- Rotation planen - Regelmäßig Secrets erneuern
Praktische Übung
- Erstelle eine ConfigMap mit Anwendungseinstellungen
- Erstelle ein Secret mit Datenbank-Credentials
- Erstelle einen Pod, der beides verwendet
- Verifiziere, dass die Werte im Container verfügbar sind
Nächste Lektion: Troubleshooting Basics