第 16 章 Ingress [config.openshift.io/v1]
- 描述
-
Ingress 包含有关 ingress 的集群范围信息,包括用于路由的默认入口域。规范名称
为集群
。兼容性级别 1:在主发行版本中至少提供 12 个月或 3 个次版本(以更长的时间为准)。 - 类型
-
object
- 必填
-
spec
-
16.1. 规格
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| spec 包含用于配置的用户可设置值 |
|
| status 包含从集群中观察到的值。它们可能无法被覆盖。 |
16.1.1. .spec
- 描述
- spec 包含用于配置的用户可设置值
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 当创建 Route 时,appsDomain 是使用的可选域,而不是在 domain 字段中指定的域,而不指定显式主机。如果 appsDomain 是非空的,则使用这个值为 Route 生成默认主机值。与 domain 不同,appsDomain 可以在安装后进行修改。这假设已使用通配符证书设置一个新的 ingresscontroller。 |
|
| componentRoutes 是由 cluster-admin 配置主机名和提供证书的 OpenShift 组件管理的可选路由列表。此列表中每个路由的命名空间和名称应与 status.componentRoutes 列表中的现有条目匹配。要确定可配置的 Routes 集合,请查看 .status.componentRoutes 列表中的条目和名称,其中参与 Operator 写入可配置路由的状态。 |
|
| ComponentRouteSpec 允许配置路由的主机名和服务证书。 |
|
| domain 用于在路由的主机名为空时为路由生成默认主机名。生成的主机名将遵循以下模式:"<route-name>.<route-namespace>.<domain>"。它还用作 ingress 的默认通配符域后缀。默认 ingresscontroller 域将遵循以下模式:"*.<domain>"。设置后,目前不支持更改域。 |
|
| LoadBalancer 包含负载均衡器详情,它们不仅特定于当前集群的底层基础架构供应商,并且 Ingress Controller 在 OpenShift 中工作需要。 |
|
| requiredHSTSPolicies 指定在与策略中指定的 domainPattern/s 和 namespaceSelector/s 匹配的新创建或更新路由上所需的 HSTS 策略。每个 requiredHSTSPolicy 必须至少具有 domainPattern 和 maxAge,才能验证路由 HSTS 策略路由注解,并影响路由准入。具有 HSTS 策略的 HSTS 策略,则会检查 candidate 路由: "haproxy.router.openshift.io/hsts_header" E.g. haproxy.router.openshift.io/hsts_header: max-age=31536000;preload;includeSubDomains - 对于每个 candidate 路由,如果与 requiredHSTSPolicy domainPattern 和可选的 namespaceSelector 匹配,则必须接受它。否则,路由将被拒绝。- 第一个匹配,由 domainPattern 和 optional namespaceSelector 在 RequiredHSTSPolicies 的顺序中,决定路由的准入状态。- 如果 candidate 路由不匹配任何 requiredHSTSPolicy domainPattern 和 optional namespaceSelector,然后使用任何 HSTS 策略注解。HSTS 策略配置可能会在路由创建后更改。如果更新的路由不符合更新的 HSTS 策略配置,则对之前接受的路由的更新可能会失败。但是,更改 HSTS 策略配置不会导致已经接受的路由停止工作。请注意,如果没有 RequiredHSTSPolicies,则路由上的任何 HSTS 策略注解都有效。 |
|
|
16.1.2. .spec.componentRoutes
- 描述
- componentRoutes 是由 cluster-admin 配置主机名和提供证书的 OpenShift 组件管理的可选路由列表。此列表中每个路由的命名空间和名称应与 status.componentRoutes 列表中的现有条目匹配。要确定可配置的 Routes 集合,请查看 .status.componentRoutes 列表中的条目和名称,其中参与 Operator 写入可配置路由的状态。
- 类型
-
array
16.1.3. .spec.componentRoutes[]
- 描述
- ComponentRouteSpec 允许配置路由的主机名和服务证书。
- 类型
-
object
- 必填
-
主机名
-
name
-
namespace
-
属性 | 类型 | 描述 |
---|---|---|
|
| hostname 是路由应使用的主机名。 |
|
| name 是要自定义的路由的逻辑名称。如果要自定义路由,则此组件的命名空间和名称必须与 status.componentRoutes 列表中对应的条目匹配。 |
|
| namespace 是要自定义的路由的命名空间。如果要自定义路由,则此组件的命名空间和名称必须与 status.componentRoutes 列表中对应的条目匹配。 |
|
|
serviceCertKeyPairSecret 是 openshift-config 命名空间中类型为 |
16.1.4. .spec.componentRoutes[].servingCertKeyPairSecret
- 描述
-
serviceCertKeyPairSecret 是 openshift-config 命名空间中类型为
kubernetes.io/tls
的 secret 的引用。服务证书/密钥对必须匹配,并且 Operator 将使用它来满足使用此名称服务的意图。如果自定义主机名使用集群的默认路由后缀,则不需要服务证书的 Secret 规格。 - 类型
-
object
- 必填
-
name
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是引用的 secret 的 metadata.name |
16.1.5. .spec.loadBalancer
- 描述
- LoadBalancer 包含负载均衡器详情,它们不仅特定于当前集群的底层基础架构供应商,并且 Ingress Controller 在 OpenShift 中工作需要。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 平台包含特定于入口负载均衡器的底层基础架构供应商的配置。如果省略,这意味着用户没有建议,平台会被保留选择合理的默认值。这些默认值可能会随时间变化。 |
16.1.6. .spec.loadBalancer.platform
- 描述
- 平台包含特定于入口负载均衡器的底层基础架构供应商的配置。如果省略,这意味着用户没有建议,平台会被保留选择合理的默认值。这些默认值可能会随时间变化。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| AWS 包含特定于 Amazon Web Services 基础架构供应商的设置。 |
|
| type 是集群的底层基础架构供应商。允许的值是 "AWS", "Azure", "BareMetal", "GCP", "Libvirt", "OpenStack", "VSphere", "oVirt", "KubeVirt", "EquinixMetal", "PowerVS", "AlibabaCloud", "Nutanix" 和 "None"。单个组件可能不支持所有平台,如果它们不支持该平台,则必须将未识别的平台处理为 None。 |
16.1.7. .spec.loadBalancer.platform.aws
- 描述
- AWS 包含特定于 Amazon Web Services 基础架构供应商的设置。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| 类型允许用户设置负载均衡器类型。当设置此字段时,将使用指定的 LBType 创建默认 ingresscontroller。如果没有设置此字段,则会创建 LBType Classic 的默认入口控制器。有效值为:* "Classic": 一个 Classic Load Balancer,它在传输层(TCP/SSL)或应用程序层(HTTP/HTTPS)上做出路由决策。详情请查看以下内容: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb * "NLB": A Network Load Balancer,它在传输层(TCP/SSL)中做出路由决策。详情请查看以下内容: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb |
16.1.8. .spec.requiredHSTSPolicies
- 描述
- requiredHSTSPolicies 指定在与策略中指定的 domainPattern/s 和 namespaceSelector/s 匹配的新创建或更新路由上所需的 HSTS 策略。每个 requiredHSTSPolicy 必须至少具有 domainPattern 和 maxAge,才能验证路由 HSTS 策略路由注解,并影响路由准入。具有 HSTS 策略的 HSTS 策略,则会检查 candidate 路由: "haproxy.router.openshift.io/hsts_header" E.g. haproxy.router.openshift.io/hsts_header: max-age=31536000;preload;includeSubDomains - 对于每个 candidate 路由,如果与 requiredHSTSPolicy domainPattern 和可选的 namespaceSelector 匹配,则必须接受它。否则,路由将被拒绝。- 第一个匹配,由 domainPattern 和 optional namespaceSelector 在 RequiredHSTSPolicies 的顺序中,决定路由的准入状态。- 如果 candidate 路由不匹配任何 requiredHSTSPolicy domainPattern 和 optional namespaceSelector,然后使用任何 HSTS 策略注解。HSTS 策略配置可能会在路由创建后更改。如果更新的路由不符合更新的 HSTS 策略配置,则对之前接受的路由的更新可能会失败。但是,更改 HSTS 策略配置不会导致已经接受的路由停止工作。请注意,如果没有 RequiredHSTSPolicies,则路由上的任何 HSTS 策略注解都有效。
- 类型
-
array
16.1.9. .spec.requiredHSTSPolicies[]
- 描述
- 类型
-
object
- 必填
-
domainPatterns
-
属性 | 类型 | 描述 |
---|---|---|
|
| domainPatterns 是需要其 HSTS 注解的域列表。如果指定了 domainPatterns,并使用与其中一个域匹配的 spec.host 创建路由,则路由必须指定匹配的 RequiredHSTSPolicy 中描述的 HSTS Policy 组件。允许使用通配符: .foo .com 匹配 foo.com. foo.com 下的所有内容仅与 foo.com 匹配,因此要覆盖 foo.com 及其下面的所有内容,您必须指定 * 2。 |
|
| includeSubDomainsPolicy 表示 HSTS 策略应该应用到主机域名的任何子域。因此,对于主机 bar.foo.com,如果 includeSubDomainsPolicy 设置为 RequireIncludeSubDomains: - 主机 app.bar.foo.com 将继承 bar.foo.com 的 HSTS 策略 - 主机 bar.foo.com 将继承 HSTS 策略 bar.foo.com - 主机 foo.com 不会继承 bar.foo.com 的 HSTS 策略。 |
|
| maxAge 是 delta 时间范围,以秒为单位,主机被视为 HSTS 主机。如果设置为 0,则会对效果进行求值,并且主机将作为 HSTS 主机删除。如果设置为 0,并且指定了 includeSubdomains,则主机的所有子域也会作为 HSTS 主机删除。maxAge 是一个生存时间值,如果客户端没有刷新此策略,则 HSTS 策略最终在该客户端上过期。 |
|
| namespaceSelector 指定标签选择器,以便策略只适用于带有与选择器匹配的标签命名空间中的路由,并位于其中一个 DomainPatterns 中。默认为空 LabelSelector,它将匹配所有内容。 |
|
| preloadPolicy 将客户端定向到主机 preload 列表中的主机,以便不需要初始负载来获取 HSTS 标头(请注意,这没有在 RFC 6797 中定义,因此客户端实现)。 |
16.1.10. .spec.requiredHSTSPolicies[].maxAge
- 描述
- maxAge 是 delta 时间范围,以秒为单位,主机被视为 HSTS 主机。如果设置为 0,则会对效果进行求值,并且主机将作为 HSTS 主机删除。如果设置为 0,并且指定了 includeSubdomains,则主机的所有子域也会作为 HSTS 主机删除。maxAge 是一个生存时间值,如果客户端没有刷新此策略,则 HSTS 策略最终在该客户端上过期。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| RequiredHSTSPolicy max-age 的最大允许值(以秒为单位)可未指定,在这种情况下,不会强制实施上限。 |
|
| RequiredHSTSPolicy max-age Setting max-age=0 的最小允许值(以秒为单位)允许从主机中删除现有的 HSTS 标头。这是一个必要的工具,可供管理员快速更正错误。这个值可以被未指定,在这种情况下,没有强制实施较低限制。 |
16.1.11. .spec.requiredHSTSPolicies[].namespaceSelector
- 描述
- namespaceSelector 指定标签选择器,以便策略只适用于带有与选择器匹配的标签命名空间中的路由,并位于其中一个 DomainPatterns 中。默认为空 LabelSelector,它将匹配所有内容。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。 |
|
| 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。 |
|
| matchLabels 是 {key,value} 对的映射。MatchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。 |
16.1.12. .spec.requiredHSTSPolicies[].namespaceSelector.matchExpressions
- 描述
- matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。
- 类型
-
array
16.1.13. .spec.requiredHSTSPolicies[].namespaceSelector.matchExpressions[]
- 描述
- 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。
- 类型
-
object
- 必填
-
key
-
operator
-
属性 | 类型 | 描述 |
---|---|---|
|
| key 是选择器应用到的标签键。 |
|
| 运算符代表一个键与一组值的关系。有效的运算符是 In、NotIn、Exists 和 DoesNotExist。 |
|
| 值是字符串值的数组。如果运算符是 In 或 NotIn,则值数组必须是非空的。如果运算符是 Exists 或 DoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。 |
16.1.14. .status
- 描述
- status 包含从集群中观察到的值。它们可能无法被覆盖。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| componentRoutes 是参与操作员为可由 cluster-admin 自定义主机名和提供证书的路由状态放置当前路由状态。 |
|
| ComponentRouteStatus 包含允许配置路由主机名和服务证书的信息。 |
|
| 在安装时设置了 defaultPlacement 来控制将默认托管入口路由器 pod 的节点。选项是 control-plane 节点或 worker 节点。此字段的工作原理是,在 Cluster Ingress Operator 在创建对应的 Deployment 时如何考虑取消设置 IngressController 资源中的 replicas 和 nodePlacement 字段。如需更多信息,请参阅 IngressController 副本和 nodePlacement 字段的文档。在省略时,默认值为 Workers |
16.1.15. .status.componentRoutes
- 描述
- componentRoutes 是参与操作员为可由 cluster-admin 自定义主机名和提供证书的路由状态放置当前路由状态。
- 类型
-
array
16.1.16. .status.componentRoutes[]
- 描述
- ComponentRouteStatus 包含允许配置路由主机名和服务证书的信息。
- 类型
-
object
- 必填
-
defaultHostname
-
name
-
namespace
-
relatedObjects
-
属性 | 类型 | 描述 |
---|---|---|
|
| 条件用于传达 componentRoutes 条目的状态。支持的条件包括 Available、Degraded 和 Progressing。如果可用,则路由提供的内容可以被用户访问。这包括在配置 cluster-admin 指定的自定义路由时默认可能会继续提供内容。如果 Degraded 为 true,这意味着无法尝试处理 componentRoutes 条目。currentHostnames 字段可能或可能无效。如果 Progressing 为 true,这意味着组件正在执行与 componentRoutes 条目相关的一些操作。 |
|
|
条件包含此 API 资源当前状态的一个方面的详情。--- 这个结构旨在直接用作字段路径 .status.conditions 中的数组。例如,输入 FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition |
|
| 使用Users 是 ServiceAccounts 的一个片段,需要对 serviceCertKeyPairSecret secret 有读取权限。 |
|
| currentHostnames 是路由使用的当前名称列表。通常,此列表应包含单个主机名,但如果路由支持多个主机名,Operator 可能会将多个条目写入此列表。 |
|
| defaultHostname 是自定义前此路由的主机名。 |
|
| name 是要自定义的路由的逻辑名称。它不一定是路由资源的实际名称,但不能重命名。如果要自定义路由,则此组件的路由的命名空间和名称必须与 spec.componentRoutes 列表中对应的条目匹配。 |
|
| namespace 是要自定义的路由的命名空间。它必须是实际的命名空间。使用实际命名空间可确保没有两个组件冲突,并且可以多次安装同一组件。如果要自定义路由,则此组件的路由的命名空间和名称必须与 spec.componentRoutes 列表中对应的条目匹配。 |
|
| relatedObjects 是资源列表,在调试或检查如何应用 spec.componentRoutes 时很有用。 |
|
| ObjectReference 包含足够信息供您检查或修改引用的对象。 |
16.1.17. .status.componentRoutes[].conditions
- 描述
- 条件用于传达 componentRoutes 条目的状态。支持的条件包括 Available、Degraded 和 Progressing。如果可用,则路由提供的内容可以被用户访问。这包括在配置 cluster-admin 指定的自定义路由时默认可能会继续提供内容。如果 Degraded 为 true,这意味着无法尝试处理 componentRoutes 条目。currentHostnames 字段可能或可能无效。如果 Progressing 为 true,这意味着组件正在执行与 componentRoutes 条目相关的一些操作。
- 类型
-
array
16.1.18. .status.componentRoutes[].conditions[]
- 描述
-
条件包含此 API 资源当前状态的一个方面的详情。--- 这个结构旨在直接用作字段路径 .status.conditions 中的数组。例如,输入 FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition
json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"
// other fields } - 类型
-
object
- 必填
-
lastTransitionTime
-
message
-
reason
-
status
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| lastTransitionTime 是条件从一个状态转换到另一个状态最后一次的时间。这应该是底层条件变化的时间。如果为未知,则使用 API 字段更改的时间是可以接受的。 |
|
| Message 是人类可读的消息,指示有关转换的详细信息。这可能是一个空字符串。 |
|
| observedGeneration 代表 .metadata.generation,这是条件设置所基于的条件。例如,如果 .metadata.generation 目前为 12,但 .status.conditions[x].observedGeneration 是 9,则代表条件与实例的当前状态已不匹配。 |
|
| reason 包含程序标识符,指示条件最后一次转换的原因。特定条件类型的制作者可能会定义预期的值和此字段的含义,以及这些值是否被视为有保证的 API。该值应该是 CamelCase 字符串。此字段可能不是空的。 |
|
| 条件的状态,True, False, Unknown 之一。 |
|
| CamelCase 或 foo.example.com/CamelCase 中的条件类型。-- Many .condition.type 值在资源间是一致的,但因为任意条件可能很有用(请参阅 .node.status.conditions),deconflict 的能力非常重要。它匹配的正则表达式是 (dns1123SubdomainFmt/)? (qualifiedNameFmt) |