You need to enable JavaScript to run this app. 如何在OpenShift中同时部署同一微服务的两个不同版本?
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenShift中同时部署同一微服务的两个不同版本?

多版本应用部署操作指南

可以明确:你需要使用两份不同的Deployment(或OpenShift原生的DeploymentConfig)配置文件完成两个版本的部署,具体操作步骤如下:

1. 构建不同版本的应用镜像

和教程中的镜像构建逻辑一致,为你的TEST应用分别构建两个版本的镜像:

  • 切换到v1版本代码目录,执行构建命令:docker build -t example/test:v1 .
  • 切换到修改后的v2版本代码目录,执行构建命令:docker build -t example/test:v2 .
    如果使用OpenShift内置的BuildConfig进行构建,只需在BuildConfig配置中分别指定不同的输出镜像tag即可。

2. 编写两份独立的部署配置文件

两份部署配置核心需要区分以下字段,避免资源冲突:

  • 元数据名称metadata.name:分别命名为test-v1、test-v2
  • Pod模板标签spec.template.metadata.labels:新增版本标识标签,分别设置为version: v1、version: v2,后续Istio做流量拆分时可通过该标签识别不同版本
  • 容器镜像地址spec.containers.image:分别对应之前构建的example/test:v1、example/test:v2
  • 标签选择器spec.selector:需要匹配对应版本的Pod标签,不要和另一个版本的选择器重叠

若需要两个版本共用同一个集群内Service,只需将Service的selector设置为两个版本Deployment共有的标签(例如app: test),不要添加version维度的标签,即可让Service同时转发流量到两个版本的Pod。

3. 执行部署

分别应用两份部署配置文件即可完成双版本同时运行:

  • 部署v1版本:oc apply -f deployment-test-v1.yaml
  • 部署v2版本:oc apply -f deployment-test-v2.yaml
    部署完成后可执行oc get pods -l app=test查看两个版本的Pod运行状态。

4. Istio流量配置补充(可选)

如果需要按比例分配流量到两个版本,只需新增Istio的VirtualService和DestinationRule资源,在DestinationRule中定义对应version标签的v1、v2两个subset,即可实现灰度发布、流量切分等能力。


内容的提问来源于stack exchange,提问作者shurohige

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 03:18:04