23.2. 为更新的配置确定更新策略
要确定是否可以滚动更新:
- 运行 update 兼容性命令,以使用旧配置生成所需的元数据。
- 使用新配置检查元数据以确定更新策略。
如果您没有使用 优化 性,则 update 命令可能会隐式创建或更新优化的构建 - 如果您从与服务器实例相同的机器运行该命令,这可能会影响服务器下次启动。
这些命令的使用者不应依赖于内部行为或元数据文件的结构。相反,它们应该只依赖 check 命令的退出代码,以便以后对内部逻辑的改进中受益,以确定何时能够进行滚动更新。
23.2.1. 生成元数据 复制链接链接已复制到粘贴板!
要生成元数据,请使用相同的红帽构建的 Keycloak 版本和配置选项执行以下命令:
从当前部署生成并保存元数据。
bin/kc.[sh|bat] update-compatibility metadata --file=/path/to/file.json
bin/kc.[sh|bat] update-compatibility metadata --file=/path/to/file.json
此命令接受 start 命令使用的所有选项。命令在控制台中以 JSON 格式显示元数据,用于调试目的。--file 参数允许您将元数据保存到文件中。将此文件与后续的 check 命令一起使用。
在运行上述命令时,请确保包括所有配置选项(无论是通过环境变量或 CLI 参数设置)。
省略任何配置选项会导致元数据不完整,并可能导致下一步报告的结果。
23.2.2. 检查元数据 复制链接链接已复制到粘贴板!
这个命令检查上一命令生成的元数据,并将其与当前配置和红帽构建的 Keycloak 版本进行比较。如果您要更新到一个新的红帽构建的 Keycloak 版本,则必须使用新版本执行这个命令。
检查之前部署的元数据。
bin/kc.[sh|bat] update-compatibility check --file=/path/to/file.json
bin/kc.[sh|bat] update-compatibility check --file=/path/to/file.json
- 在运行此命令时,请确保包含通过环境变量或 CLI 参数设置的所有配置选项。
- 验证是否使用正确的红帽构建的 Keycloak 版本。
无法满足这些要求会导致结果不正确。
命令将结果输出到控制台。例如,如果可能滚动更新,它会显示:
滚动更新可能消息
[OK] Rolling Update is available.
[OK] Rolling Update is available.
如果没有进行滚动更新,命令会提供有关不兼容的详细信息:
滚动更新不可能的消息
[keycloak] Rolling Update is not available. 'keycloak.version' is incompatible: 26.2.0 -> 26.2.1
[keycloak] Rolling Update is not available. 'keycloak.version' is incompatible: 26.2.0 -> 26.2.1
- 1
- 在本例中,Keycloak 版本
26.2.0与版本26.2.1不兼容,且无法进行滚动更新。
在这个功能的下一次迭代中,也可以在升级到红帽构建的 Keycloak 的以下补丁版本时,也可以使用滚动更新策略。详情请参考 第 23.4 节 “补丁发行版本的滚动更新” 部分。
命令退出代码
使用命令的退出代码决定自动化管道中的更新类型:
| 退出代码 | 描述 |
|---|---|
|
| 可以滚动更新。 |
|
| 发生意外错误(如元数据文件缺失或损坏)。 |
|
| 无效的 CLI 选项。 |
|
| 无法进行滚动更新。在应用新配置前,必须关闭部署。 |
|
|
无法进行滚动更新。禁用 |