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
      }
    }
Click to expand and view more
BASH
# Imperativ erstellen
kubectl create configmap app-config --from-literal=APP_ENV=production

# Aus Datei erstellen
kubectl create configmap nginx-config --from-file=nginx.conf
Click to expand and view more

ConfigMap 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_ENV
Click to expand and view more

Secrets

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 encoded
Click to expand and view more
BASH
# Imperativ erstellen
kubectl create secret generic db-credentials \
  --from-literal=username=admin \
  --from-literal=password=secretpass

# Base64 kodieren
echo -n 'admin' | base64
Click to expand and view more

Secret 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-credentials
Click to expand and view more

Best Practices

  1. Secrets nicht in Git committen - Nutze externe Secret-Manager
  2. RBAC für Secrets - Zugriff einschränken
  3. Secrets verschlüsseln - Encryption at rest aktivieren
  4. Rotation planen - Regelmäßig Secrets erneuern

Praktische Übung

  1. Erstelle eine ConfigMap mit Anwendungseinstellungen
  2. Erstelle ein Secret mit Datenbank-Credentials
  3. Erstelle einen Pod, der beides verwendet
  4. Verifiziere, dass die Werte im Container verfügbar sind

Nächste Lektion: Troubleshooting Basics

Start searching

Enter keywords to search articles

↑↓
ESC
⌘K Shortcut