Keycloak从18.0.2升级至22.0.5时提示目录未找到,求助排查
Keycloak 18.0.2升级至22.0.5启动报错:directory not found排查
问题背景
通过Helm Charts部署的Keycloak(18.0.2版本)及配套PostgreSQL,计划升级至22.0.5版本。替换对应版本的Helm Charts部署后,出现启动错误:
2024-01-17 11:25:52,636 ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) ERROR: Failed to start server in (development) mode
2024-01-17 11:25:52,637 ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) ERROR: directory not found
已确认PostgreSQL(14.4版本)运行正常,连接无异常。在StatefulSet中添加环境变量:
- name: KC_LOG_LEVEL value: "DEBUG"
后,未输出更多错误信息。进入启动中的Pod对比18.0.2版本的目录结构,未发现差异。
可能缺失的目录方向
- Quarkus临时目录:Keycloak基于Quarkus重构后,22.0.5版本可能对临时目录的路径或权限要求更严格。检查是否配置了
KC_TEMP_DIR环境变量,对应目录是否存在、Pod是否有读写权限。 - 主题资源目录:若自定义了主题,升级后Helm Chart可能调整了主题挂载路径,检查
KC_THEMES_DIR对应的目录是否存在,或自定义主题的挂载卷配置是否正确。 - 数据持久化目录:确认Keycloak的持久化卷(如
/opt/keycloak/data)是否正确挂载,目录权限是否为默认的keycloak用户(UID:1000)所有。 - 配置文件目录:检查是否有自定义配置挂载到
/opt/keycloak/conf目录,该目录是否存在且包含必要配置文件。 - Helm Chart新增必填目录:对比两个版本的Helm Chart values.yaml,查看是否新增了需挂载的目录配置,比如日志目录、扩展插件目录等。
额外排查操作
- 在Pod内手动执行启动命令
/opt/keycloak/bin/kc.sh start,观察是否有更详细的错误输出。 - 检查Pod的
securityContext配置,确认用户权限足够创建或访问所需目录。 - 查阅Keycloak 22.0.5官方升级文档,确认是否存在目录结构或配置路径的变更。
内容的提问来源于stack exchange,提问作者Dragos Cazangiu
相关产品推荐
相关产品推荐

