5.7.9. 路由主机名
为了在外部公开服务,OpenShift Container Platform 路由允许您将服务与外部可访问的主机名相关联。然后,可以使用这个边缘主机名将流量路由到该服务。
当来自不同命名空间的多个路由声明同一主机时,最旧的路由会胜出并声明命名空间。如果同一命名空间中定义了具有不同路径字段的其他路由,则会添加这些路径。如果使用相同路径的多个路由,则最旧的采用优先级。
造成这个问题的一个后果是,如果您主机名有两个路由:较早的路由以及较新的名称。如果其他人有指向您在创建其他两个路由时创建的同一主机名的路由,那么当您删除旧的路由时,您的声明将不再有效。现在,其他命名空间会声明主机名,并且您的声明会丢失。
具有指定主机的路由:
apiVersion: v1
kind: Route
metadata:
name: host-route
spec:
host: www.example.com 1
to:
kind: Service
name: service-name
- 1
- 指定用于公开服务的外部可访问主机名。
没有主机的路由:
apiVersion: v1 kind: Route metadata: name: no-route-hostname spec: to: kind: Service name: service-name
如果没有提供主机名作为路由定义的一部分,OpenShift Container Platform 会自动为您生成主机名。生成的主机名的格式如下:
<route-name>[-<namespace>].<suffix>
以下示例显示了 OpenShift Container Platform 生成的主机名,用于上述路由配置的主机名,而无需将主机添加到命名空间 mynamespace 中:
生成的主机名
no-route-hostname-mynamespace.router.default.svc.cluster.local 1
- 1
- 生成的主机名后缀是默认路由子域 router.default.svc.cluster.local。
集群管理员也可以 自定义用作其环境的默认路由子域的后缀。