open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

Keycloak in Docker & Kubernetes – Skalierbare Authentifizierung für Cloud-Umgebungen

Autor
Keycloak in Docker & Kubernetes – Skalierbare Authentifizierung für Cloud-Umgebungen

In modernen Cloud-Architekturen zählt Identitätsmanagement zu den zentralen Bausteinen. Anwendungen laufen verteilt über Container, Microservices kommunizieren über APIs – und irgendwo muss sichergestellt werden, dass nur berechtigte Nutzer Zugriff haben. Genau hier kommt Keycloak ins Spiel: Eine Open-Source-Lösung für Authentifizierung, Autorisierung und Single Sign-On (SSO).

In diesem Artikel zeigen wir, wie man Keycloak in Docker und Kubernetes deployt – inklusive Load-Balancing, Persistenz und automatischen Updates.

Warum Keycloak in der Cloud?

Keycloak ist von Haus aus für Skalierung gemacht. In Kombination mit Docker und Kubernetes entsteht eine flexible, hochverfügbare Authentifizierungsplattform, die:

  • automatisch skaliert, wenn mehr Nutzer sich anmelden,
  • Ausfallsicherheit durch Replikation bietet,
  • CI/CD-kompatibel ist (z. B. mit ArgoCD, Flux oder GitOps),
  • und zentral administrierbar bleibt – selbst bei Dutzenden Apps.

Kurz: Cloud-native Authentifizierung ohne Lizenzkosten.

Voraussetzungen

Bevor du startest, solltest du Folgendes haben:

  • Linux- oder Windows-Server mit Docker (bzw. ein Kubernetes-Cluster)
  • Zugriff auf die Kommandozeile (kubectl, docker, helm)
  • Eine Domain, z. B. auth.example.de
  • Optional: TLS-Zertifikat (z. B. über Let’s Encrypt oder Traefik)

Teil 1: Keycloak mit Docker starten

Der schnellste Einstieg ist ein einzelner Keycloak-Container.

docker run -d \
  --name keycloak \
  -p 8080:8080 \
  -e KEYCLOAK_ADMIN=admin \
  -e KEYCLOAK_ADMIN_PASSWORD=MeinSicheresPasswort \
  quay.io/keycloak/keycloak:26.0.2 start-dev

Danach erreichbar unter: http://localhost:8080

Login mit den oben gesetzten Admin-Credentials.

Mit Persistenz (Docker Compose)

Damit Daten (z. B. Realms, Benutzer, Clients) erhalten bleiben, empfiehlt sich Docker Compose:

version: '3.8'
services:
  postgres:
    image: postgres:15
    environment:
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: keycloak
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
  keycloak:
    image: quay.io/keycloak/keycloak:26.0.2
    environment:
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: MeinSicheresPasswort
      KC_DB: postgres
      KC_DB_URL_HOST: postgres
      KC_DB_USERNAME: keycloak
      KC_DB_PASSWORD: secret
    command: ["start", "--hostname-strict=false"]
    ports:
      - 8080:8080
    depends_on:
      - postgres

Start:

docker compose up -d

Nun läuft Keycloak dauerhaft mit PostgreSQL-Datenbank.

Teil 2: Keycloak in Kubernetes deployen

In produktiven Umgebungen empfiehlt sich die Installation via Helm-Chart.

Repository hinzufügen

helm repo add codecentric https://codecentric.github.io/helm-charts
helm repo update

Namespace anlegen

kubectl create namespace keycloak

Installation starten

helm install keycloak codecentric/keycloak \
  --namespace keycloak \
  --set keycloak.username=admin \
  --set keycloak.password=MeinSicheresPasswort \
  --set replicas=2 \
  --set ingress.enabled=true \
  --set ingress.hostname=auth.example.de

Nach wenigen Minuten steht Keycloak als skalierte Anwendung bereit.

Load-Balancing und Skalierung

Kubernetes sorgt automatisch für:

  • Lastverteilung über alle Keycloak-Pods
  • Selbstheilung bei Ausfällen
  • Rolling Updates für neue Versionen

Manuelle Skalierung ist ebenfalls möglich:

kubectl scale deployment keycloak --replicas=3 -n keycloak

Mit einem Ingress-Controller (z. B. Traefik, NGINX) lässt sich Keycloak per HTTPS öffentlich bereitstellen.

Automatische Updates

Für automatische Updates kannst du:

  • Watchtower in Docker nutzen:

    docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
    
  • oder ArgoCD/FluxCD in Kubernetes konfigurieren, um Keycloak bei neuen Versionen automatisch zu aktualisieren.

So bleibt dein Auth-System immer aktuell – ohne manuelle Eingriffe.

Best Practices für produktive Umgebungen

  1. HTTPS erzwingen – SSL über Ingress oder Proxy
  2. Externe Datenbank verwenden (PostgreSQL oder MySQL)
  3. Backups automatisieren – regelmäßig Realms exportieren
  4. Keycloak-Cluster überwachen – z. B. mit Prometheus/Grafana
  5. Config as Code – Realms und Clients über JSON/YAML importieren

Keycloak lässt sich mit Docker in Minuten starten – und mit Kubernetes zu einem hochverfügbaren, skalierbaren Authentifizierungs-Cluster ausbauen. Durch standardisierte Protokolle wie OpenID Connect und SAML lässt sich Keycloak in nahezu jede App integrieren.

Wer digitale Identitäten sicher und souverän verwalten möchte, hat mit Keycloak in Docker & Kubernetes eine zukunftssichere, Cloud-native Lösung in der Hand.