You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

离线环境下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=true
  • desiredUpdate.image对应--to-image的值
  • allowUpgradeWithWarnings对应--allow-upgrade-with-warnings=true
  • desiredUpdate.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:08:13