第 16 章 Route [route.openshift.io/v1]


描述

通过路由,开发人员可以通过 HTTP (S)了解负载平衡和代理层通过公共 DNS 条目公开服务。路由可以进一步指定 TLS 选项和证书,或者指定路由器也应该接受 HTTP 和 HTTPS 流量的公共 CNAME。管理员通常将其路由器配置为在集群防火墙外可见,还可在服务内容上添加额外的安全性、缓存或流量控制。路由器通常直接与服务端点通信。

创建路由后,可能不会更改 host 字段。通常,路由器在解析冲突时使用带有给定主机的最旧的路由。

路由器受到额外的自定义,可以通过 annotations 字段支持其他控制。

由于管理员可以配置多个路由器,因此路由状态字段用于向客户端返回每个路由器下路由的名称和状态的信息。如果客户端选择重复的名称,例如,则使用路由状态条件来指示无法选择路由。

要在路由上启用 HTTP/2 ALPN,它需要自定义(非通配符)证书。这可防止客户端的连接并发,特别是 Web 浏览器。由于连接重新使用的风险,我们不支持使用默认证书的 HTTP/2 ALPN。没有其自身自定义证书的路由在前端或后端上都不会是启用了 HTTP/2 ALPN 的路由。

兼容性级别 1:在主发行版本中至少提供 12 个月或 3 个次版本(以更长的时间为准)。

类型
object
必填
  • spec

16.1. 规格

属性类型描述

apiVersion

字符串

APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

metadata

ObjectMeta

 

spec

对象

RouteSpec 描述了路由公开的主机名或路径、任何安全信息,以及到路由指向的四个后端(服务)。根据分配给每个后端的权重在后端间分布请求。当使用 roundrobin 调度进入每个后端的请求部分时,后端权重会除以所有后端权重的总和。当后端有多个端点时,后端结束的请求会在端点之间循环分布。权重介于 0 到 256 之间,默认为 100。权重 0 会导致请求到后端。如果所有权重都为零,则路由将被视为没有后端并返回标准 503 响应。

tls 字段是可选的,允许路由的特定证书或行为。路由器通常在通配符域中配置默认证书,以在没有显式证书的情况下终止路由,但自定义主机名通常必须选择 passthrough (通过 TLS Server-Name- Indication 字段向后端发送流量)或提供证书。

status

对象

RouteStatus 提供有关路由状态的相关信息,包括确认哪个路由器。

16.1.1. .spec

描述

RouteSpec 描述了路由公开的主机名或路径、任何安全信息,以及到路由指向的四个后端(服务)。根据分配给每个后端的权重在后端间分布请求。当使用 roundrobin 调度进入每个后端的请求部分时,后端权重会除以所有后端权重的总和。当后端有多个端点时,后端结束的请求会在端点之间循环分布。权重介于 0 到 256 之间,默认为 100。权重 0 会导致请求到后端。如果所有权重都为零,则路由将被视为没有后端并返回标准 503 响应。

tls 字段是可选的,允许路由的特定证书或行为。路由器通常在通配符域中配置默认证书,以在没有显式证书的情况下终止路由,但自定义主机名通常必须选择 passthrough (通过 TLS Server-Name- Indication 字段向后端发送流量)或提供证书。

类型
object
必填
属性类型描述

alternateBackends

array

alternateBackends 允许最多 3 个额外的后端分配给路由。只允许 Service kind,它将默认为 Service。使用 RouteTargetReference 对象中的 weight 字段指定相对的首选项。

alternateBackends[]

对象

RouteTargetReference 指定解析为端点的目标。只允许 'Service' kind。使用"weight"字段加重其他字段。

主机

字符串

主机是一个指向该服务的别名/DNS。可选。如果没有指定路由名称,则通常会自动选择。必须遵循 DNS952 子域惯例。

path

字符串

路由器监视的路径,将流量路由到该服务的流量。选填

port

对象

RoutePort 定义从路由器到服务端点中的端点的端口映射。

subdomain

字符串

子域是在入口控制器的域(作为子域)中请求的 DNS 子域。如果设置 host,则忽略此字段。入口控制器可能会选择忽略这个建议的名称,在这种情况下,控制器会在 status.ingress 数组中报告分配的名称,或拒绝接受该路由。如果设置了这个值,且服务器不支持此字段,主机则会自动填充。否则主机将留空。该字段可能有多个以点分开的部分,但并非所有入口控制器都遵守请求。创建后无法更改此字段,但具有更新路由/自定义主机权限的用户除外。

示例:子域 frontend 会自动接收路由器子域 apps.mycluster.com,以获得完整的主机名 frontend.apps.mycluster.com

tls

对象

TLSConfig 定义用于保护路由并提供终止的配置

对象

RouteTargetReference 指定解析为端点的目标。只允许 'Service' kind。使用"weight"字段加重其他字段。

wildcardPolicy

字符串

用于路由的通配符策略。目前只允许 'Subdomain' 或 'None'。

16.1.2. .spec.alternateBackends

描述
alternateBackends 允许最多 3 个额外的后端分配给路由。只允许 Service kind,它将默认为 Service。使用 RouteTargetReference 对象中的 weight 字段指定相对的首选项。
类型
array

16.1.3. .spec.alternateBackends[]

描述
RouteTargetReference 指定解析为端点的目标。只允许 'Service' kind。使用"weight"字段加重其他字段。
类型
object
必填
  • kind
  • name
属性类型描述

kind

字符串

路由引用的目标种类。目前,只允许 'Service'

name

字符串

要引用的服务/目标的名称,如服务的名称

weight

整数

weight 作为 0 到 256 之间的整数,默认 100 指定针对其他目标引用对象的目标相对权重。0 会阻止请求进入此后端。

16.1.4. .spec.port

描述
RoutePort 定义从路由器到服务端点中的端点的端口映射。
类型
object
必填
  • targetPort
属性类型描述

targetPort

IntOrString

此路由所指向的服务选择的 pod 上的目标端口。如果这是字符串,它会在目标端点端口列表中作为命名的端口进行查找。必填

16.1.5. .spec.tls

描述
TLSConfig 定义用于保护路由并提供终止的配置
类型
object
必填
  • termination
属性类型描述

caCertificate

字符串

caCertificate 提供证书颁发机构证书内容

certificate

字符串

证书提供证书内容。这应该是单一服务证书,而不是证书链。不要包括 CA 证书。

destinationCACertificate

字符串

destinationCACertificate 提供最终目的地的 ca 证书的内容。使用重新加密终止时,应提供此文件,以便让路由器将它用于安全连接上的健康检查。如果没有指定此字段,路由器可能会提供自己的目标 CA,并使用短服务名称(service.namespace.svc)执行主机名验证,它允许基础架构生成的证书自动验证。

insecureEdgeTerminationPolicy

字符串

insecureEdgeTerminationPolicy 表示路由不安全连接所需的行为。虽然每个路由器可能会对要公开的端口做出自己的决定,但通常这是端口 80。

* Allow - 流量发送到不安全端口(默认)上的服务器,在不安全的端口上不允许禁用 - 不允许流量。* Redirect - 客户端被重定向到安全端口。

key

字符串

密钥提供密钥文件内容

termination

字符串

termination 表示终止类型。

* edge - TLS 终止由路由器完成,http 用于与后端通信(默认)= 透传 - 在不提供 TLS 终止的路由器时直接发送到目的地,TLS 终止由路由器完成,https 用于与后端通信

16.1.6. .spec.to

描述
RouteTargetReference 指定解析为端点的目标。只允许 'Service' kind。使用"weight"字段加重其他字段。
类型
object
必填
  • kind
  • name
属性类型描述

kind

字符串

路由引用的目标种类。目前,只允许 'Service'

name

字符串

要引用的服务/目标的名称,如服务的名称

weight

整数

weight 作为 0 到 256 之间的整数,默认 100 指定针对其他目标引用对象的目标相对权重。0 会阻止请求进入此后端。

16.1.7. .status

描述
RouteStatus 提供有关路由状态的相关信息,包括确认哪个路由器。
类型
object
属性类型描述

ingress

array

Ingress 描述了可公开路由的位置。ingress 点列表可能包含重复的主机或 RouterName 值。路由在就绪后被视为 Ready

ingress[]

对象

RouteIngress 包含有关公开路由的位置的信息。

16.1.8. .status.ingress

描述
Ingress 描述了可公开路由的位置。ingress 点列表可能包含重复的主机或 RouterName 值。路由在就绪后被视为 Ready
类型
array

16.1.9. .status.ingress[]

描述
RouteIngress 包含有关公开路由的位置的信息。
类型
object
属性类型描述

conditions

array

条件是路由的状态,可能为空。

conditions[]

对象

RouteIngressCondition 包含特定路由器上此路由的当前条件的详情。

主机

字符串

host 是公开路由的主机字符串;需要这个值

routerCanonicalHostname

字符串

CanonicalHostname 是路由器的外部主机名,可用作为此路由请求的主机的 CNAME。这个值是可选的,可能不会在所有情况下设置。

routerName

字符串

名称是路由器选择以标识自身的名称;需要这个值

wildcardPolicy

字符串

通配符策略是允许公开此路由的通配符策略。

16.1.10. .status.ingress[].conditions

描述
条件是路由的状态,可能为空。
类型
array

16.1.11. .status.ingress[].conditions[]

描述
RouteIngressCondition 包含特定路由器上此路由的当前条件的详情。
类型
object
必填
  • type
  • status
属性类型描述

lastTransitionTime

时间

当条件最后转换时的 RFC 3339 日期和时间

message

字符串

人类可读的消息,指示最后一次转换的详细信息。

reason

字符串

(简洁) 条件最后一次转换的原因,通常是机器和人类可读的常量。

status

字符串

status 是条件的状态。可以是 True, False, Unknown。

type

字符串

type 是条件的类型。目前只有 Admited。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.