
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该镜像是一个Kubernetes控制器,用于通过Kubernetes资源(如自定义资源定义CRD)管理Keycloak的客户端和领域。它实现声明式配置管理,允许用户通过Kubernetes API定义Keycloak的客户端和领域配置,并自动同步到Keycloak服务器,实现配置的自动化、版本化和可审计。
1. 安装自定义资源定义(CRD)
创建KeycloakRealm和KeycloakClient的CRD:
bashkubectl apply -f https://raw.githubusercontent.com/example/keycloak-controller/main/config/crd/bases/keycloak.example.com_keycloakrealms.yaml kubectl apply -f https://raw.githubusercontent.com/example/keycloak-controller/main/config/crd/bases/keycloak.example.com_keycloakclients.yaml
2. 创建Keycloak管理员凭证Secret
创建存储Keycloak管理员用户名和密码的Secret:
yamlapiVersion: v1 kind: Secret metadata: name: keycloak-credentials namespace: keycloak type: Opaque data: username: YWRtaW4= # base64编码的管理员用户名 password: cGFzc3dvcmQ= # base64编码的管理员密码
应用Secret:
bashkubectl apply -f keycloak-credentials.yaml -n keycloak
3. 部署控制器
部署控制器Deployment:
yamlapiVersion: apps/v1 kind: Deployment metadata: name: keycloak-controller namespace: keycloak spec: replicas: 1 selector: matchLabels: app: keycloak-controller template: metadata: labels: app: keycloak-controller spec: containers: - name: keycloak-controller image: docker.xuanyuan.run/example/keycloak-controller:latest env: - name: KEYCLOAK_URL value: "http://keycloak-service:8080" # Keycloak服务器地址 - name: KEYCLOAK_CREDENTIALS_SECRET value: "keycloak-credentials" # 存储管理员凭证的Secret名称 - name: NAMESPACE value: "keycloak" # 控制器监听的命名空间(留空表示所有命名空间)
应用Deployment:
bashkubectl apply -f keycloak-controller-deployment.yaml -n keycloak
创建Keycloak领域
创建KeycloakRealm自定义资源:
yamlapiVersion: keycloak.example.com/v1alpha1 kind: KeycloakRealm metadata: name: my-realm namespace: keycloak spec: realm: id: my-realm realm: my-realm displayName: "My Realm" enabled: true sslRequired: "external"
应用领域配置:
bashkubectl apply -f my-realm.yaml -n keycloak
创建Keycloak客户端
创建KeycloakClient自定义资源:
yamlapiVersion: keycloak.example.com/v1alpha1 kind: KeycloakClient metadata: name: my-client namespace: keycloak spec: realm: my-realm # 关联的领域名称 client: clientId: my-client name: "My Client" enabled: true clientAuthenticatorType: "client-secret" redirectUris: ["https://my-app.example.com/*"] webOrigins: ["https://my-app.example.com"]
应用客户端配置:
bashkubectl apply -f my-client.yaml -n keycloak
| 环境变量 | 描述 | 可选/必选 | 默认值 |
|---|---|---|---|
| KEYCLOAK_URL | Keycloak服务器的基础URL(如[***] | 必选 | - |
| KEYCLOAK_CREDENTIALS_SECRET | 存储Keycloak管理员凭证的Secret名称 | 必选 | - |
| NAMESPACE | 控制器监听的命名空间(留空表示所有命名空间) | 可选 | "" |
| LOG_LEVEL | 日志级别(debug/info/warn/error) | 可选 | "info" |
| SYNC_INTERVAL | 配置同步间隔(秒) | 可选 | 30 |
bashdocker run -d \ --name keycloak-controller \ -e KEYCLOAK_URL="http://keycloak:8080" \ -e KEYCLOAK_CREDENTIALS_SECRET="keycloak-credentials" \ -e NAMESPACE="default" \ -v $HOME/.kube/config:/root/.kube/config \ # 挂载Kubernetes配置 example/keycloak-controller:latest
yamlversion: '3' services: keycloak-controller: image: example/keycloak-controller:latest environment: - KEYCLOAK_URL=[***] - KEYCLOAK_CREDENTIALS_SECRET=keycloak-credentials - NAMESPACE=default - LOG_LEVEL=info volumes: - ~/.kube/config:/root/.kube/config depends_on: - keycloak keycloak: image: quay.io/keycloak/keycloak:22.0.1 environment: - KEYCLOAK_ADMIN=admin - KEYCLOAK_ADMIN_PASSWORD=password ports: - "8080:8080" command: start-dev
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务