Keycloak头盔表
Keycloak Helm chart与CloudNativePG(CNPG)PostgreSQL数据库和Kubernetes的MCP服务器集成。
特性
- 钥匙锁 -现代身份和访问管理解决方案
- CloudNativePG数据库 -使用CNPG运算符管理PostgreSQL
- MCP服务器侧车 -Keycloak MCP服务器,用于AI/LLM集成
- 高可用性 -支持集群的StatefulSet
- 入口 -使用证书管理器启用TLS的入口
- 普罗米修斯指标 -Prometheus操作员服务监视器
- 安全 -非根容器、安全上下文和机密管理
先决条件
- 库贝内特斯1.19+
- 头盔3.8+
- 已安装CloudNativePG操作员
- NGINX入口控制器
- 证书管理器(可选,用于TLS)
- Prometheus运算符(可选,用于度量)
安装
快速开始
# Install with default values
helm install keycloak oci://ghcr.io/robotinfra/keycloak
# Install with custom values
helm install keycloak oci://ghcr.io/robotinfra/keycloak \
--set ingress.hosts[0].host=keycloak.example.com \
--set ingress.tls[0].hosts[0]=keycloak.example.com配置
关键配置选项:
# Admin credentials
admin:
username: admin
password: "" # Auto-generated if empty
# Database configuration
database:
enabled: true
cnpg:
instances: 3
storage:
size: 10Gi
storageClass: longhorn
# MCP Server sidecar
mcpServer:
enabled: true
port: 8081
# Ingress
ingress:
enabled: true
className: nginx
hosts:
- host: keycloak.example.com
paths:
- path: /
pathType: Prefix
# Prometheus metrics
monitoring:
enabled: true
serviceMonitor:
enabled: true
interval: 30s看 values.yaml 对于所有配置选项。
组件
钥匙锁
该图表将Keycloak部署为StatefulSet,其中包含:
- 通过JGroups实现高可用性集群
- 健康、准备和启动探测
- 可配置的资源限制
- PostgreSQL数据库后端
CloudNativePG数据库
使用CNPG运算符来配置PostgreSQL集群:
- 多实例实现高可用性
- 自动故障转移
- 备份支持(可配置)
- Keycloak专用数据库和用户
MCP服务器侧车
可选的sidecar容器提供MCP(模型上下文协议)服务器:
- 通过MCP展示密钥斗篷管理员API
- 预配置为连接到本地Keycloak
- 默认情况下可在端口8081上访问
- 基于https://github.com/sshaaf/keycloak-mcp-server
普罗米修斯监控
启用后,为Prometheus操作员创建ServiceMonitor:
- 刮擦
/metrics端点 - 可配置的刮擦间隔
- Keycloak公开了各种JVM和应用程序指标
访问Keycloak
安装后:
- 获取管理员密码:
kubectl get secret keycloak-admin -o jsonpath='{.data.password}' | base64 -d- 通过入口进入:
https://keycloak.example.com- 访问MCP服务器(如果启用):
kubectl port-forward svc/keycloak 8081:8081
# MCP server available at http://localhost:8081数据库管理
该图表创建了一个引用PostgreSQL集群的CNPG数据库资源,该集群名为 postgresql 在 database 命名空间。确保此群集存在:
# Check CNPG cluster
kubectl get cluster -n database postgresql
# Check database status
kubectl get database keycloak-db监控
访问Keycloak指标:
# Port-forward to access metrics
kubectl port-forward svc/keycloak 8080:8080
# View metrics
curl http://localhost:8080/metrics如果启用ServiceMonitor,Prometheus会自动抓取指标。
升级
helm upgrade keycloak oci://ghcr.io/bclermont/keycloak-chart \
--reuse-values \
--set image.tag=26.0.5卸载
helm uninstall keycloak注: CNPG数据库将保持不变。要删除:
kubectl delete database keycloak-db参数
| 参数 | 说明 | 默认值 |
|---|---|---|
replicaCount | Keycloak副本数量 | 2 |
image.repository | Keycloak图像存储库 | quay.io/keycloak/keycloak |
image.tag | Keycloak图像标签 | 26.0.5 |
admin.username | 管理员用户名 | admin |
admin.password | 管理员密码(如果为空,则自动生成) | "" |
database.enabled | 启用CNPG数据库 | true |
database.cnpg.instances | PostgreSQL实例数 | 3 |
database.cnpg.storage.size | 数据库存储大小 | 10Gi |
mcpServer.enabled | 启用MCP服务器sidecar | true |
mcpServer.port | MCP服务器端口 | 8081 |
ingress.enabled | 启用入口 | true |
ingress.className | 入口类名 | nginx |
monitoring.serviceMonitor.enabled | 启用Prometheus ServiceMonitor | true |
看 values.yaml 查看完整的参数列表。
建筑
┌─────────────────────────────────────┐
│ Ingress (TLS) │
│ keycloak.example.com │
└─────────────┬───────────────────────┘
│
┌─────────────▼───────────────────────┐
│ Keycloak Service │
│ (ClusterIP) │
└─────────────┬───────────────────────┘
│
┌─────────────▼───────────────────────┐
│ Keycloak StatefulSet │
│ ┌───────────────────────────────┐ │
│ │ Keycloak Container │ │
│ │ - Port 8080 (HTTP) │ │
│ │ - Port 9000 (Health) │ │
│ │ - Metrics enabled │ │
│ └───────────────────────────────┘ │
│ ┌───────────────────────────────┐ │
│ │ MCP Server Container │ │
│ │ - Port 8081 │ │
│ │ - Connects to localhost:8080 │ │
│ └───────────────────────────────┘ │
└─────────────┬───────────────────────┘
│
┌─────────────▼───────────────────────┐
│ CloudNativePG PostgreSQL │
│ - 3 instances (HA) │
│ - Auto-failover │
│ - Dedicated database: keycloak │
└─────────────────────────────────────┘故障排除
数据库连接问题
检查数据库状态:
kubectl get database keycloak-db
kubectl logs statefulset/keycloak -c keycloak集群未形成
验证无头服务:
kubectl get svc keycloak-headless
kubectl exec keycloak-0 -- nslookup keycloak-headlessMCP服务器没有响应
检查sidecar日志:
kubectl logs statefulset/keycloak -c mcp-server许可证
此图表按原样提供。Keycloak根据Apache License 2.0获得许可。
