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
相关产品推荐
相关产品推荐

