离线环境下OpenShift集群升级自动化的REST API相关技术问询
离线环境下OpenShift集群升级自动化的REST API相关技术问询
嗨,刚好我之前在离线环境折腾过OpenShift集群的升级自动化,来给你唠唠对应的REST API和可行的替代方案~
一、oc adm upgrade对应的REST API
你用的那条oc adm upgrade命令,本质上是在操作OpenShift的ClusterVersion API资源。这个资源是OpenShift用来管理集群版本的核心对象,对应的API端点是:/apis/config.openshift.io/v1/clusterversions/version
(注:OpenShift集群里通常只有一个ClusterVersion实例,名称固定为version)
你可以通过PATCH请求来修改这个资源的spec字段,实现和CLI命令完全一致的效果。举个具体的请求示例(用curl模拟):
首先获取集群认证令牌:
oc whoami -t
然后发送PATCH请求:
curl -k -X PATCH \ -H "Authorization: Bearer <你的认证令牌>" \ -H "Content-Type: application/merge-patch+json" \ https://<集群API地址>/apis/config.openshift.io/v1/clusterversions/version \ -d '{ "spec": { "desiredUpdate": { "image": "<registry_hostname>:<port>/ocp4.12.26/openshift@sha256:xxx", "force": true }, "allowExplicitUpgrade": true, "allowUpgradeWithWarnings": true } }'
这里的字段完全对应你CLI命令里的参数:
allowExplicitUpgrade对应--allow-explicit-upgrade=truedesiredUpdate.image对应--to-image的值allowUpgradeWithWarnings对应--allow-upgrade-with-warnings=truedesiredUpdate.force对应--force=true
二、找不到文档时的小技巧
如果官方文档没找到相关细节,你可以用oc adm upgrade的调试参数来反向推导API请求:
oc adm upgrade --allow-explicit-upgrade=true --to-image=<你的镜像地址> --allow-upgrade-with-warnings=true --force=true --dry-run -o json
这个命令会输出CLI要发送的API请求内容,能帮你快速确认字段和格式。
三、离线环境的额外注意事项
因为是离线环境,你得确保:
- 升级镜像已经同步到内部私有镜像仓库,且集群节点能访问该仓库
- 集群的镜像拉取secret配置正确,能正常拉取私有仓库的镜像
这些和你用CLI升级的前置条件完全一致,自动化前一定要确认好。
四、其他自动化替代方案
如果觉得直接写REST API请求太繁琐,还可以用这些工具来简化自动化:
- Ansible:用
openshift.kubernetes模块来操作ClusterVersion资源,适合编写批量升级的 playbook - Terraform:用OpenShift Provider的
openshift_cluster_version资源来定义升级配置,适合基础设施即代码的场景
备注:内容来源于stack exchange,提问作者kaiilim
相关产品推荐
相关产品推荐

