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

OpenShift中如何为API配置多主机名路由?

OpenShift配置多主机名路由的正确方法

你的问题出在多资源YAML文件未使用分隔符:在同一个YAML文件中定义多个Kubernetes/OpenShift资源时,必须用---分隔每个资源块,否则OpenShift会将整个文件解析为单个资源,后定义的内容会覆盖前面的,导致只有最后一个路由生效。

正确配置方式

方法1:单文件多资源(用---分隔)

修改你的route.yaml,在每个Route资源之间添加---分隔符,示例如下:

apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: releasename-route
spec:
  host: host1.mycompany.com
  port:
    targetPort: http
  to:
    kind: Service
    name: releasename-service
    weight: 100
  wildcardPolicy: none
---
apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: releasename-altroute-1
spec:
  host: host2.mycompany.com
  port:
    targetPort: http
  to:
    kind: Service
    name: releasename-service
    weight: 100
  wildcardPolicy: none
---
apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: releasename-altroute-2
spec:
  host: host3.mycompany.com
  port:
    targetPort: http
  to:
    kind: Service
    name: releasename-service
    weight: 100
  wildcardPolicy: none

执行创建命令:

oc apply -f route.yaml

方法2:单个资源单独文件

将每个Route分别保存为独立的YAML文件(比如route-host1.yaml、route-host2.yaml、route-host3.yaml),然后逐个执行:

oc apply -f route-host1.yaml
oc apply -f route-host2.yaml
oc apply -f route-host3.yaml

方法3:命令行直接创建

无需编写YAML文件,直接用oc create route命令逐个创建路由:

# 创建host1的路由
oc create route edge releasename-route --service=releasename-service --host=host1.mycompany.com
# 创建host2的路由
oc create route edge releasename-altroute-1 --service=releasename-service --host=host2.mycompany.com
# 创建host3的路由
oc create route edge releasename-altroute-2 --service=releasename-service --host=host3.mycompany.com

注:根据你的实际路由类型(edge/passthrough/reencrypt)调整命令中的edge参数。

验证配置

执行以下命令查看所有路由状态:

oc get routes

正常情况下会显示三个路由条目,每个对应不同的HOST/PORT值,且STATUS为Ready。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:00:11