第 16 章 Ingress [config.openshift.io/v1]


描述
Ingress 包含有关 ingress 的集群范围信息,包括用于路由的默认入口域。规范名称 为集群。兼容性级别 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

标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

对象

spec 包含用于配置的用户可设置值

status

对象

status 包含从集群中观察到的值。它们可能无法被覆盖。

16.1.1. .spec

描述
spec 包含用于配置的用户可设置值
类型
object
属性类型描述

appsDomain

字符串

当创建 Route 时,appsDomain 是使用的可选域,而不是在 domain 字段中指定的域,而不指定显式主机。如果 appsDomain 是非空的,则使用这个值为 Route 生成默认主机值。与 domain 不同,appsDomain 可以在安装后进行修改。这假设已使用通配符证书设置一个新的 ingresscontroller。

componentRoutes

array

componentRoutes 是由 cluster-admin 配置主机名和提供证书的 OpenShift 组件管理的可选路由列表。此列表中每个路由的命名空间和名称应与 status.componentRoutes 列表中的现有条目匹配。要确定可配置的 Routes 集合,请查看 .status.componentRoutes 列表中的条目和名称,其中参与 Operator 写入可配置路由的状态。

componentRoutes[]

对象

ComponentRouteSpec 允许配置路由的主机名和服务证书。

domain

字符串

domain 用于在路由的主机名为空时为路由生成默认主机名。生成的主机名将遵循以下模式:"<route-name>.<route-namespace>.<domain>"。它还用作 ingress 的默认通配符域后缀。默认 ingresscontroller 域将遵循以下模式:"*.<domain>"。设置后,目前不支持更改域。

loadBalancer

object

LoadBalancer 包含负载均衡器详情,它们不仅特定于当前集群的底层基础架构供应商,并且 Ingress Controller 在 OpenShift 中工作需要。

requiredHSTSPolicies

array

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 策略注解都有效。

requiredHSTSPolicies[]

对象

 

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

字符串

hostname 是路由应使用的主机名。

name

字符串

name 是要自定义的路由的逻辑名称。如果要自定义路由,则此组件的命名空间和名称必须与 status.componentRoutes 列表中对应的条目匹配。

namespace

字符串

namespace 是要自定义的路由的命名空间。如果要自定义路由,则此组件的命名空间和名称必须与 status.componentRoutes 列表中对应的条目匹配。

servingCertKeyPairSecret

对象

serviceCertKeyPairSecret 是 openshift-config 命名空间中类型为 kubernetes.io/tls 的 secret 的引用。服务证书/密钥对必须匹配,并且 Operator 将使用它来满足使用此名称服务的意图。如果自定义主机名使用集群的默认路由后缀,则不需要服务证书的 Secret 规格。

16.1.4. .spec.componentRoutes[].servingCertKeyPairSecret

描述
serviceCertKeyPairSecret 是 openshift-config 命名空间中类型为 kubernetes.io/tls 的 secret 的引用。服务证书/密钥对必须匹配,并且 Operator 将使用它来满足使用此名称服务的意图。如果自定义主机名使用集群的默认路由后缀,则不需要服务证书的 Secret 规格。
类型
object
必填
  • name
属性类型描述

name

字符串

name 是引用的 secret 的 metadata.name

16.1.5. .spec.loadBalancer

描述
LoadBalancer 包含负载均衡器详情,它们不仅特定于当前集群的底层基础架构供应商,并且 Ingress Controller 在 OpenShift 中工作需要。
类型
object
属性类型描述

platform

object

平台包含特定于入口负载均衡器的底层基础架构供应商的配置。如果省略,这意味着用户没有建议,平台会被保留选择合理的默认值。这些默认值可能会随时间变化。

16.1.6. .spec.loadBalancer.platform

描述
平台包含特定于入口负载均衡器的底层基础架构供应商的配置。如果省略,这意味着用户没有建议,平台会被保留选择合理的默认值。这些默认值可能会随时间变化。
类型
object
属性类型描述

aws

object

AWS 包含特定于 Amazon Web Services 基础架构供应商的设置。

type

字符串

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
属性类型描述

type

string

类型允许用户设置负载均衡器类型。当设置此字段时,将使用指定的 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

数组(字符串)

domainPatterns 是需要其 HSTS 注解的域列表。如果指定了 domainPatterns,并使用与其中一个域匹配的 spec.host 创建路由,则路由必须指定匹配的 RequiredHSTSPolicy 中描述的 HSTS Policy 组件。允许使用通配符: .foo .com 匹配 foo.com. foo.com 下的所有内容仅与 foo.com 匹配,因此要覆盖 foo.com 及其下面的所有内容,您必须指定 * 2

includeSubDomainsPolicy

字符串

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

对象

maxAge 是 delta 时间范围,以秒为单位,主机被视为 HSTS 主机。如果设置为 0,则会对效果进行求值,并且主机将作为 HSTS 主机删除。如果设置为 0,并且指定了 includeSubdomains,则主机的所有子域也会作为 HSTS 主机删除。maxAge 是一个生存时间值,如果客户端没有刷新此策略,则 HSTS 策略最终在该客户端上过期。

namespaceSelector

对象

namespaceSelector 指定标签选择器,以便策略只适用于带有与选择器匹配的标签命名空间中的路由,并位于其中一个 DomainPatterns 中。默认为空 LabelSelector,它将匹配所有内容。

preloadPolicy

字符串

preloadPolicy 将客户端定向到主机 preload 列表中的主机,以便不需要初始负载来获取 HSTS 标头(请注意,这没有在 RFC 6797 中定义,因此客户端实现)。

16.1.10. .spec.requiredHSTSPolicies[].maxAge

描述
maxAge 是 delta 时间范围,以秒为单位,主机被视为 HSTS 主机。如果设置为 0,则会对效果进行求值,并且主机将作为 HSTS 主机删除。如果设置为 0,并且指定了 includeSubdomains,则主机的所有子域也会作为 HSTS 主机删除。maxAge 是一个生存时间值,如果客户端没有刷新此策略,则 HSTS 策略最终在该客户端上过期。
类型
object
属性类型描述

largestMaxAge

整数

RequiredHSTSPolicy max-age 的最大允许值(以秒为单位)可未指定,在这种情况下,不会强制实施上限。

smallestMaxAge

整数

RequiredHSTSPolicy max-age Setting max-age=0 的最小允许值(以秒为单位)允许从主机中删除现有的 HSTS 标头。这是一个必要的工具,可供管理员快速更正错误。这个值可以被未指定,在这种情况下,没有强制实施较低限制。

16.1.11. .spec.requiredHSTSPolicies[].namespaceSelector

描述
namespaceSelector 指定标签选择器,以便策略只适用于带有与选择器匹配的标签命名空间中的路由,并位于其中一个 DomainPatterns 中。默认为空 LabelSelector,它将匹配所有内容。
类型
object
属性类型描述

matchExpressions

array

matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。

matchExpressions[]

对象

标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。

matchLabels

对象(字符串)

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

字符串

key 是选择器应用到的标签键。

operator

字符串

运算符代表一个键与一组值的关系。有效的运算符是 In、NotIn、Exists 和 DoesNotExist。

数组(字符串)

值是字符串值的数组。如果运算符是 In 或 NotIn,则值数组必须是非空的。如果运算符是 Exists 或 DoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。

16.1.14. .status

描述
status 包含从集群中观察到的值。它们可能无法被覆盖。
类型
object
属性类型描述

componentRoutes

array

componentRoutes 是参与操作员为可由 cluster-admin 自定义主机名和提供证书的路由状态放置当前路由状态。

componentRoutes[]

对象

ComponentRouteStatus 包含允许配置路由主机名和服务证书的信息。

defaultPlacement

string

在安装时设置了 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
属性类型描述

conditions

array

条件用于传达 componentRoutes 条目的状态。支持的条件包括 Available、Degraded 和 Progressing。如果可用,则路由提供的内容可以被用户访问。这包括在配置 cluster-admin 指定的自定义路由时默认可能会继续提供内容。如果 Degraded 为 true,这意味着无法尝试处理 componentRoutes 条目。currentHostnames 字段可能或可能无效。如果 Progressing 为 true,这意味着组件正在执行与 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 }

consumingUsers

数组(字符串)

使用Users 是 ServiceAccounts 的一个片段,需要对 serviceCertKeyPairSecret secret 有读取权限。

currentHostnames

数组(字符串)

currentHostnames 是路由使用的当前名称列表。通常,此列表应包含单个主机名,但如果路由支持多个主机名,Operator 可能会将多个条目写入此列表。

defaultHostname

字符串

defaultHostname 是自定义前此路由的主机名。

name

字符串

name 是要自定义的路由的逻辑名称。它不一定是路由资源的实际名称,但不能重命名。如果要自定义路由,则此组件的路由的命名空间和名称必须与 spec.componentRoutes 列表中对应的条目匹配。

namespace

字符串

namespace 是要自定义的路由的命名空间。它必须是实际的命名空间。使用实际命名空间可确保没有两个组件冲突,并且可以多次安装同一组件。如果要自定义路由,则此组件的路由的命名空间和名称必须与 spec.componentRoutes 列表中对应的条目匹配。

relatedObjects

array

relatedObjects 是资源列表,在调试或检查如何应用 spec.componentRoutes 时很有用。

relatedObjects[]

对象

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

字符串

lastTransitionTime 是条件从一个状态转换到另一个状态最后一次的时间。这应该是底层条件变化的时间。如果为未知,则使用 API 字段更改的时间是可以接受的。

message

字符串

Message 是人类可读的消息,指示有关转换的详细信息。这可能是一个空字符串。

observedGeneration

整数

observedGeneration 代表 .metadata.generation,这是条件设置所基于的条件。例如,如果 .metadata.generation 目前为 12,但 .status.conditions[x].observedGeneration 是 9,则代表条件与实例的当前状态已不匹配。

reason

字符串

reason 包含程序标识符,指示条件最后一次转换的原因。特定条件类型的制作者可能会定义预期的值和此字段的含义,以及这些值是否被视为有保证的 API。该值应该是 CamelCase 字符串。此字段可能不是空的。

status

字符串

条件的状态,True, False, Unknown 之一。

type

字符串

CamelCase 或 foo.example.com/CamelCase 中的条件类型。-- Many .condition.type 值在资源间是一致的,但因为任意条件可能很有用(请参阅 .node.status.conditions),deconflict 的能力非常重要。它匹配的正则表达式是 (dns1123SubdomainFmt/)? (qualifiedNameFmt)

16.1.19. .status.componentRoutes[].relatedObjects

描述
relatedObjects 是资源列表,在调试或检查如何应用 spec.componentRoutes 时很有用。
类型
array

16.1.20. .status.componentRoutes[].relatedObjects[]

描述
ObjectReference 包含足够信息供您检查或修改引用的对象。
类型
object
必填
  • group
  • name
  • resource
属性类型描述

group

字符串

引用的组。

name

字符串

引用的名称。

namespace

字符串

引用的命名空间。

resource

字符串

引用的资源。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.