本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

Keycloak Kubernetes Operator 是一个专为简化 Keycloak 在 Kubernetes 集群中部署、配置及全生命周期管理而设计的操作器(Operator)。Keycloak 本身是一款开源的身份与访问管理(IAM)工具,提供用户认证、授权、单点登录(SSO)等核心能力。该 Operator 基于 Kubernetes 自定义资源(CRD)和控制器模式,将 Keycloak 的管理流程自动化,减少手动操作成本,适用于企业级 Kubernetes 环境中的 IAM 服务部署。
spec.instances)自动调整 Pod 数量,支持手动或 HPA 触发的弹性伸缩。# 克隆官方仓库 git clone [***] cd keycloak-operator # 安装 CRD(自定义资源定义) kubectl apply -f config/crd/bases/keycloak.org_keycloaks.yaml kubectl apply -f config/crd/bases/keycloak.org_keycloakrealms.yaml # 安装 Operator(默认命名空间:keycloak-operator) kubectl create namespace keycloak-operator kubectl apply -k config/default -n keycloak-operator
# 添加 Helm 仓库 helm repo add keycloak-operator [***] helm repo update # 安装 Operator(指定命名空间) helm install keycloak-operator keycloak-operator/keycloak-operator \ --namespace keycloak-operator \ --create-namespace
通过定义 Keycloak 类型的 CR 配置实例参数,示例如下(生产环境配置):
# keycloak-instance.yaml apiVersion: keycloak.org/v2alpha1 kind: Keycloak metadata: name: keycloak-prod namespace: keycloak spec: # 实例配置 instances: 3 # 3副本高可用部署 image: quay.io/keycloak/keycloak:23.0.6 # 指定 Keycloak 版本 resources: # 资源限制 requests: cpu: 500m memory: 1Gi limits: cpu: 1000m memory: 2Gi # 数据库配置(生产环境使用外部 PostgreSQL) db: vendor: postgres url: jdbc:postgresql://postgres-service.keycloak.svc.cluster.local:5432/keycloak # 数据库服务地址 usernameSecret: name: keycloak-db-creds # 存储数据库用户名的 Secret 名称 key: username passwordSecret: name: keycloak-db-creds # 存储数据库密码的 Secret 名称 key: password # 网络与访问配置 http: tlsSecret: keycloak-tls # 包含 TLS 证书和密钥的 Secret 名称(需提前创建) ingress: enabled: true hostname: keycloak.example.com # Ingress 访问域名 annotations: # 可选:Ingress 控制器注解(如 NGINX 配置) nginx.ingress.kubernetes.io/ssl-redirect: "true" # 环境变量注入(如管理员账号) env: - name: KEYCLOAK_ADMIN valueFrom: secretKeyRef: name: keycloak-admin-creds key: username - name: KEYCLOAK_ADMIN_PASSWORD valueFrom: secretKeyRef: name: keycloak-admin-creds key: password
创建命名空间:
kubectl create namespace keycloak
创建依赖 Secret(数据库 credentials、管理员账号、TLS 证书):
# 数据库 credentials Secret kubectl create secret generic keycloak-db-creds -n keycloak \ --from-literal=username=keycloak \ --from-literal=password=StrongDBPassword123! # 管理员账号 Secret kubectl create secret generic keycloak-admin-creds -n keycloak \ --from-literal=username=admin \ --from-literal=password=StrongAdminPassword456! # TLS 证书 Secret(示例:使用自签证书,生产环境需替换为 CA 签发证书) openssl req -x509 -newkey rsa:4096 -keyout tls.key -out tls.crt -days 365 -nodes -subj "/CN=keycloak.example.com" kubectl create secret tls keycloak-tls -n keycloak --cert=tls.crt --key=tls.key
应用 CR 配置:
kubectl apply -f keycloak-instance.yaml -n keycloak
| 参数路径 | 类型 | 描述 | 默认值 |
|---|---|---|---|
spec.instances | int | Keycloak 实例副本数,用于高可用部署 | 1 |
spec.image | string | Keycloak 镜像地址及版本(格式:仓库地址/镜像名:版本) | quay.io/keycloak/keycloak:latest |
spec.resources | object | Pod 资源限制与请求(如 requests.cpu、limits.memory) | 无(根据集群自动分配) |
spec.db.vendor | string | 数据库类型,可选值:h2(内置,测试用)、postgres、mysql | h2 |
spec.db.url | string | 外部数据库连接 URL(db.vendor 为 postgres/mysql 时必填) | - |
spec.db.usernameSecret | object | 数据库用户名 Secret 引用(name: Secret 名称, key: 密钥名) | - |
spec.db.passwordSecret | object | 数据库密码 Secret 引用(name: Secret 名称, key: 密钥名) | - |
spec.http.tlsSecret | string | 包含 TLS 证书和密钥的 Secret 名称(启用 HTTPS 时必填) | - |
spec.ingress.enabled | bool | 是否启用 Ingress 资源(用于外部访问) | false |
spec.ingress.hostname | string | Ingress 规则的访问域名(ingress.enabled: true 时必填) | - |
spec.env | []Env | 注入 Keycloak 容器的环境变量(如 KEYCLOAK_ADMIN、PROXY_ADDRESS_FORWARDING=true) | 无 |
# 查看 Keycloak CR 状态 kubectl get keycloak -n keycloak # 查看详细事件与配置 kubectl describe keycloak keycloak-prod -n keycloak
修改 CR 的 spec.image 字段为目标版本,Operator 将自动执行滚动升级:
kubectl patch keycloak keycloak-prod -n keycloak --type=merge \ -p '{"spec":{"image":"quay.io/keycloak/keycloak:24.0.0"}}'
pg_dump 用于 PostgreSQL)定期备份数据。spec.instances 和 resources,建议生产环境最低配置:2 副本 + 每实例 2 CPU 核心/4GB 内存。免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429