Keycloak deployen
Zuletzt aktualisiert: 8. April 2026
Keycloak ist eine quelloffene Identity- und Access-Management-Lösung. Mit dem lowcloud Helm Release deployst du Keycloak in deinem Kubernetes-Cluster – inklusive eingebetteter PostgreSQL-Datenbank, Ingress-Unterstützung und optionalem Realm-Import.
Chart-Registry: oci://registry-1.docker.io/cloudpirates/keycloak
Das Helm Release wird von den Cloud Pirates bereitgestellt und gepflegt.
Voraussetzungen
- Ein lowcloud-Account mit aktivem Cluster
- Zugriff auf das lowcloud Dashboard
Quick Start
Minimale Konfiguration, um Keycloak schnell zum Laufen zu bringen:
keycloak:
adminUser: admin
adminPassword: your-secure-password
hostname: https://auth.example.com
proxyHeaders: xforwarded
postgres:
enabled: true
auth:
database: keycloak
username: keycloak
password: your-db-password
keycloak.proxyHeaders: xforwarded, wenn Keycloak hinter einem nginx-Ingress oder einem anderen Reverse Proxy betrieben wird. Ohne diesen Parameter funktionieren Redirects und Token-Validierungen nicht korrekt.Konfiguration
Die wichtigsten Konfigurationsoptionen im Überblick:
| Parameter | Beschreibung | Default |
|---|---|---|
image.tag | Keycloak Image-Version | 26.5.6 |
keycloak.adminUser | Benutzername des Keycloak-Admins | admin |
keycloak.adminPassword | Passwort des Admins (oder existingSecret nutzen) | — |
keycloak.hostname | Öffentliche URL der Keycloak-Instanz | — |
keycloak.proxyHeaders | Proxy-Header-Modus (xforwarded oder forwarded) | xforwarded |
keycloak.production | Produktionsmodus (start) oder Dev-Modus | true |
database.type | Datenbanktyp | postgres |
postgres.enabled | Eingebettete PostgreSQL aktivieren | true |
postgres.auth.database | Datenbankname der eingebetteten PostgreSQL | keycloak |
postgres.auth.username | Benutzername der eingebetteten PostgreSQL | keycloak |
postgres.auth.password | Passwort der eingebetteten PostgreSQL | — |
resources.requests.cpu | CPU-Request | 250m |
resources.requests.memory | Memory-Request | 512Mi |
resources.limits.cpu | CPU-Limit | 1000m |
resources.limits.memory | Memory-Limit | 1024Mi |
ingress.enabled | Ingress aktivieren | false |
ingress.className | Ingress-Klasse (z.B. nginx) | — |
cache.stack | Cache-Modus (local oder ispn für Multi-Replica) | local |
Schritt-für-Schritt Anleitung
1. Service hinzufügen
Navigiere im lowcloud Dashboard zu Add Service und wähle Helm Release aus. Suche im Popup nach der Keycloak-Registry:
oci://registry-1.docker.io/cloudpirates/keycloak
Wähle anschließend die gewünschte Version aus. Die Option "latest" ist in den meisten Fällen eine gute Wahl.
2. Values konfigurieren
Gib dem Service einen aussagekräftigen Namen (z.B. keycloak). Passe dann die Values an:
keycloak:
adminUser: admin
adminPassword: your-secure-password
hostname: https://auth.example.com
proxyHeaders: xforwarded
postgres:
enabled: true
auth:
database: keycloak
username: keycloak
password: your-db-password
ingress:
enabled: true
className: nginx
hosts:
- host: auth.example.com
paths:
- path: /
pathType: Prefix
3. Deployment starten
Öffne den erstellten Service und klicke auf Deploy. Warte, bis das Label im Dashboard auf "Deployed" wechselt. Keycloak ist anschließend über die konfigurierte Hostname-URL erreichbar.
Erweiterte Values
Für den produktiven Einsatz empfiehlt sich eine vollständige Konfiguration mit Persistence, Resource Limits und TLS:
image:
tag: "26.5.6"
keycloak:
adminUser: admin
adminPassword: your-secure-password
hostname: https://auth.example.com
proxyHeaders: xforwarded
production: true
database:
type: postgres
postgres:
enabled: true
auth:
database: keycloak
username: keycloak
password: your-db-password
ingress:
enabled: true
className: nginx
hosts:
- host: auth.example.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: auth-tls
hosts:
- auth.example.com
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 1000m
memory: 1024Mi
Realm-Import
Du kannst beim Start automatisch einen Realm importieren. Hinterlege deine Realm-Konfiguration als Kubernetes Secret und referenziere sie:
realm:
import: true
existingSecret: my-realm-secret
Das Secret muss einen Key realm.json mit dem Realm-JSON-Inhalt enthalten.
Externe Datenbank
Falls du eine bereits vorhandene PostgreSQL-Instanz nutzen möchtest, deaktiviere die eingebettete Datenbank und konfiguriere die externe Verbindung:
postgres:
enabled: false
database:
type: postgres
host: my-postgres-service
port: '5432'
name: keycloak
username: keycloak
password: your-db-password