23.2. 为更新的配置确定更新策略
要确定是否可以滚动更新,请运行 update 兼容性命令:
- 使用旧配置生成所需的元数据。
- 使用新配置检查元数据以确定更新策略。
此命令目前仅提供有限的功能。目前,只考虑红帽构建的 Keycloak 版本和嵌入式 Infinispan,以确定是否可以进行滚动更新。如果这些不动,则报告有可能进行滚动更新。
当前版本还没有验证配置更改,并假定所有配置更改都有资格进行滚动更新。这同样适用于自定义扩展及其更改。
使用此选项时的良好用例是,当您希望在更改红帽构建的 Keycloak 主题或自定义扩展时进行滚动更新,且仅在红帽构建的 Keycloak 版本更改时进行重新创建,它还不允许滚动更新。
虽然这些命令的用户应该知道目前存在的限制,但它们不应依赖于元数据文件的内部行为或结构。相反,它们应该只依赖 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
不兼容,且无法进行滚动更新。
命令退出代码
使用命令的退出代码决定自动化管道中的更新类型:
退出代码 | 描述 |
---|---|
| 可以滚动更新。 |
| 发生意外错误(如元数据文件缺失或损坏)。 |
| 无效的 CLI 选项。 |
| 无法进行滚动更新。在应用新配置前,必须关闭部署。 |
|
无法进行滚动更新。禁用 |