第 15 章 IngressController [operator.openshift.io/v1]
- 描述
- IngressController 描述了集群的受管入口控制器。控制器可以服务 OpenShift Route 和 Kubernetes Ingress 资源。创建 IngressController 时,会创建一个新的入口控制器部署,以允许外部流量访问公开 Ingress 或 Route 资源的服务。更新此资源可能会导致出现面向公共的网络连接中断,因为可能会推出新的入口控制器修订版本。https://kubernetes.io/docs/concepts/services-networking/ingress-controllers 尽可能减少平台的默认值。如需了解更多详细信息,请参阅每个字段。兼容性级别 1:在主发行版本中至少提供 12 个月或 3 个次版本(以更长的时间为准)。
- 类型
-
对象
15.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 是 IngressController 所需的行为的规格。 |
|
| Status 是 IngressController 最近观察到的状态。 |
15.1.1. .spec
- 描述
- spec 是 IngressController 所需的行为的规格。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| clientTLS 指定用于请求和验证客户端证书的设置,可用于为 edge-terminated 和 reencrypt 路由启用 mutual TLS。 |
|
| defaultCertificate 是对包含入口控制器提供的默认证书的 secret 的引用。当 Routes 没有指定其自身证书时,会使用 defaultCertificate。secret 必须包含以下密钥和数据:tls.crt: 证书文件内容 tls.key: 密钥文件内容(如果未设置),则会自动生成并使用通配符证书。该证书对入口控制器域(和子域)有效,所生成的证书的 CA 将自动与集群的信任存储集成。如果使用通配符证书并由多个 HTTP/2 启用的路由(即 ALPN)使用和共享,那么客户端(例如,特别是浏览器)可随时重复使用开放连接。这意味着客户端可以重复使用到另一个路由的连接,并可能失败。这个行为通常被称为连接合并。正在使用的证书(无论是生成的还是用户指定的)将自动与 OpenShift 的内置 OAuth 服务器集成。 |
|
| domain 是入口控制器服务的 DNS 名称,用于配置多个功能:* 对于 LoadBalancerService 端点发布策略,domain 用于配置 DNS 记录。请参阅 endpointPublishingStrategy。* 在使用生成的默认证书时,该证书对域及其子域有效。请参阅 defaultCertificate。* 该值会发布到单独的 Route 状态,以便最终用户知道目标外部 DNS 记录的位置。域在所有 IngressController 中必须是唯一的,且无法更新。如果为空,则默认为 ingress.config.openshift.io/cluster .spec.domain。 |
|
| endpointPublishingStrategy 用于向其他网络发布入口控制器端点,启用负载均衡器集成等。如果未设置,则默认值基于 infrastructure.config.openshift.io/cluster .status.platform: AWS: LoadBalancerService (with External scope) Azure: LoadBalancerService (with External scope) GCP: LoadBalancerService (with External scope) IBMCloud: LoadBalancerService (with External scope) LoadBalancerService (with External scope) Libvirt: HostNetwork Any other platform type (包括 None)default to HostNetwork endpointPublishingStrategy. |
|
| httpCompression 定义 HTTP 流量压缩的策略。默认情况下,没有 HTTP 压缩。 |
|
| HTTPEmptyRequestsPolicy 描述了在收到请求前超时时应如何处理 HTTP 连接。此字段允许的值是 "Respond" 和 "Ignore"。如果字段设置为 "Respond",入口控制器发送 HTTP 400 或 408 响应,日志连接(如果启用了访问日志),并在适当的指标中统计连接。如果字段设置为 "Ignore",则入口控制器在不发送响应的情况下关闭连接,记录连接或递增指标。默认值为 "Respond"。通常,这些连接来自负载均衡器的健康状况探测或 Web 浏览器的规范连接("preconnect"),可以安全地忽略。但是,这些请求也可能是由网络错误导致的,因此将此字段设置为 "Ignore" 可能会阻止问题的检测和诊断。此外,这些请求可能是由端口扫描导致的,在这种情况下,记录空请求有助于检测入侵尝试。 |
|
| httpErrorCodePages 指定带有自定义错误页面的 configmap。管理员必须在 openshift-config 命名空间中创建此 configmap。此 configmap 的格式应为 "error-page-<error code>.http",其中 <error code> 是一个 HTTP 错误代码。例如,"error-page-503.http" 定义了 HTTP 503 响应的错误页面。目前只能自定义 503 和 404 响应的错误页面。configmap 中的每个值都应该是完整的响应,包括 HTTP 标头。eg- https://raw.githubusercontent.com/openshift/router/fadab45747a9b30cc3f0a4b41ad2871f95827a93/images/router/haproxy/conf/error-page-503.http 如果此字段为空,ingress 控制器将使用默认错误页面。 |
|
| httpHeaders 为 HTTP 标头定义策略。如果此字段为空,则使用默认值。 |
|
| logging 为应记录的内容定义参数。如果此字段为空,则会启用运行日志,但禁用访问日志。 |
|
| namespaceSelector 用于过滤由 ingress 控制器提供服务的一组命名空间。这对实现分片(shard)非常有用。如果未设置,则默认为没有过滤。 |
|
| nodePlacement 启用对入口控制器调度的显式控制。如果未设置,则使用默认值。如需了解更多详细信息,请参阅 NodePlacement。 |
|
| replicas 是所需的入口控制器副本数量。如果未设置,则默认值取决于集群 config.openshift.io/v1/ingresses 状态中的 defaultPlacement 字段的值。replicas 的值根据 Infrastructure CR 中所选字段的值设置。如果将 defaultPlacement 设置为 ControlPlane,则所选字段将是 controlPlaneTopology。如果设置为 Workers,则所选字段将为 infrastructureTopology。然后,根据所选字段的值分别是 SingleReplica 或 HighlyAvailable,将 replicas 设置为 1 或 2。这些默认值可能会改变。 |
|
| routeAdmission 定义了处理新路由声明的策略(例如,允许或拒绝命名空间之间的声明)。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 routeAdmission 字段。 |
|
| routeSelector 用于过滤由入口控制器提供服务的一组 Routes。这对实现分片(shard)非常有用。如果未设置,则默认为没有过滤。 |
|
| tlsSecurityProfile 指定 ingresscontrollers 的 TLS 连接的设置。如果未设置,则默认值基于 apiservers.config.openshift.io/cluster 资源。请注意,在使用 Old、Intermediate 和 Modern 配置集类型时,有效的配置集配置可能会在发行版本间有所变化。例如,使用在版本 X.Y.Z 中部署的 Intermediate 配置集,升级到版本 X.Y.Z+1 可能会导致新的配置集应用到 ingress 控制器,从而导致一个 rollout 操作。 |
|
| tuningOptions 定义用于调整入口控制器 pod 性能的参数。所有字段都是可选的,如果未设置,则使用它们对应的默认值。如需了解更多详细信息,请参阅特定的 tuningOptions 字段。通常不建议在 tuningOptions 中设置字段。默认值适用于大多数配置。 |
| `` | unsupportedConfigOverrides 允许指定不支持的配置选项。其使用不受支持。 |
15.1.2. .spec.clientTLS
- 描述
- clientTLS 指定用于请求和验证客户端证书的设置,可用于为 edge-terminated 和 reencrypt 路由启用 mutual TLS。
- 类型
-
object
- 必填
-
clientCA
-
clientCertificatePolicy
-
属性 | 类型 | 描述 |
---|---|---|
|
| AllowedSubjectPatterns 指定正则表达式列表,该表达式应与有效客户端证书上的可分辨名称匹配,以过滤请求。正则表达式必须使用 PCRE 语法。如果此列表为空,则不会执行任何过滤。如果列表不是空的,则至少一个模式必须与客户端证书的可分辨名称匹配,否则入口控制器拒绝证书并拒绝连接。 |
|
| clientCA 指定包含 PEM 编码 CA 证书捆绑包的 configmap,该捆绑包应用于验证客户端的证书。管理员必须在 openshift-config 命名空间中创建此 configmap。 |
|
| clientCertificatePolicy 指定入口控制器是否需要客户端提供证书。此字段接受值 "Required" 或 "Optional"。请注意,入口控制器只检查边缘终止和重新加密 TLS 路由的客户端证书;它无法检查明文 HTTP 或 passthrough TLS 路由的证书。 |
15.1.3. .spec.clientTLS.clientCA
- 描述
- clientCA 指定包含 PEM 编码 CA 证书捆绑包的 configmap,该捆绑包应用于验证客户端的证书。管理员必须在 openshift-config 命名空间中创建此 configmap。
- 类型
-
object
- 必填
-
name
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是引用的配置映射的 metadata.name |
15.1.4. .spec.defaultCertificate
- 描述
- defaultCertificate 是对包含入口控制器提供的默认证书的 secret 的引用。当 Routes 没有指定其自身证书时,会使用 defaultCertificate。secret 必须包含以下密钥和数据:tls.crt: 证书文件内容 tls.key: 密钥文件内容(如果未设置),则会自动生成并使用通配符证书。该证书对入口控制器域(和子域)有效,所生成的证书的 CA 将自动与集群的信任存储集成。如果使用通配符证书并由多个 HTTP/2 启用的路由(即 ALPN)使用和共享,那么客户端(例如,特别是浏览器)可随时重复使用开放连接。这意味着客户端可以重复使用到另一个路由的连接,并可能失败。这个行为通常被称为连接合并。正在使用的证书(无论是生成的还是用户指定的)将自动与 OpenShift 的内置 OAuth 服务器集成。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: 添加其他有用的字段。apiVersion、kind、uid? |
15.1.5. .spec.endpointPublishingStrategy
- 描述
- endpointPublishingStrategy 用于向其他网络发布入口控制器端点,启用负载均衡器集成等。如果未设置,则默认值基于 infrastructure.config.openshift.io/cluster .status.platform: AWS: LoadBalancerService (with External scope) Azure: LoadBalancerService (with External scope) GCP: LoadBalancerService (with External scope) IBMCloud: LoadBalancerService (with External scope) LoadBalancerService (with External scope) Libvirt: HostNetwork Any other platform type (包括 None)default to HostNetwork endpointPublishingStrategy.
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| HostNetwork 包含 HostNetwork 端点发布策略的参数。仅在 type 为 HostNetwork 时才出现。 |
|
| LoadBalancer 包含负载均衡器的参数。仅在类型为 LoadBalancerService 时才出现。 |
|
| NodePort 包含 NodePortService 端点发布策略的参数。仅在 type 是 NodePortService 时才出现。 |
|
| private 包含 Private 端点发布策略的参数。仅在类型为 Private 时才出现。 |
|
| type 是要使用的发布策略。有效值为:* LoadBalancerService 使用 Kubernetes LoadBalancer Service 发布入口控制器。在这个配置中,入口控制器部署使用容器网络。创建了一个 LoadBalancer 服务来发布部署。请参阅 :https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer 如果设置了域,将管理通配符 DNS 记录以指向 LoadBalancer 服务的外部名称。DNS 记录只在 dns.config.openshift.io/cluster .spec.publicZone 和 .spec.privateZone 定义的 DNS 区域中管理。目前仅在 AWS、Azure 和 GCP 平台上支持通配符 DNS 管理。* HostNetwork 在部署了入口控制器的节点端口上发布入口控制器。在这个配置中,入口控制器部署使用主机网络,并绑定到节点端口 80 和 443。用户负责配置外部负载均衡器,以通过节点端口发布入口控制器。* private Does 没有发布入口控制器。在这个配置中,入口控制器部署使用容器网络,且不会被显式发布。用户必须手动发布入口控制器。* NodePortService 使用 Kubernetes NodePort Service 发布入口控制器。在这个配置中,入口控制器部署使用容器网络。创建了一个 NodePort 服务来发布部署。特定的节点端口由 OpenShift 动态分配,但为了支持静态端口分配,用户会保留对受管 NodePort Service 的节点端口字段的更改。 |
15.1.6. .spec.endpointPublishingStrategy.hostNetwork
- 描述
- HostNetwork 包含 HostNetwork 端点发布策略的参数。仅在 type 为 HostNetwork 时才出现。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| httpPort 是主机上的端口,应该用于侦听 HTTP 请求。当端口 80 已在使用时,应设置此字段。该值不应与集群的 NodePort 范围冲突。如果值为 0 或未指定值,则默认为 80。 |
|
| httpsPort 是主机上的端口,应该用于侦听 HTTPS 请求。当端口 443 已在使用时,应设置此字段。该值不应与集群的 NodePort 范围冲突。如果值为 0 或未指定值,则默认为 443。 |
|
| protocol 指定 IngressController 是否需要传入连接使用普通 TCP,还是 IngressController 是否需要 PROXY 协议。PROXY 协议可以和支持它的负载均衡器一起使用,以便在将这些连接转发到 IngressController 时通信客户端连接的源地址。使用 PROXY 协议可让 IngressController 报告这些源地址,而不是在 HTTP 标头和日志中报告负载均衡器的地址。请注意,如果您不使用使用 PROXY 协议的负载均衡器将连接转发到 IngressController,则 IngressController 上启用 PROXY 协议会导致连接失败。有关 PROXY 协议的信息,请参阅 http://www.haproxy.org/download/2.2/doc/proxy-protocol.txt。以下值对于此字段有效:* 空字符串。* "TCP".* "PROXY".空字符串指定默认字符串,即没有 PROXY 协议的 TCP。请注意,默认值可能会改变。 |
|
| statsPort 是发布路由器统计的主机上的端口。该值不应与集群的 NodePort 范围冲突。如果外部负载均衡器配置为将连接转发到此 IngressController,负载均衡器应该使用此端口进行健康检查。负载均衡器可以在给定节点上的这个端口上发送 HTTP 探测,路径为 /healthz/ready,以确定入口控制器是否准备好接收节点上的流量。对于正常操作,负载均衡器必须在健康检查报告就绪前,不会将流量转发到节点。负载均衡器还应该在 /healthz/ready 开始报告未就绪后最多停止对 45 秒的转发请求。每 5 秒探测到 10 秒(5 秒超时),并且两个成功或失败请求的阈值分别变为健康或不健康。当值为 0 或未指定值时,默认为 1936。 |
15.1.7. .spec.endpointPublishingStrategy.loadBalancer
- 描述
- LoadBalancer 包含负载均衡器的参数。仅在类型为 LoadBalancerService 时才出现。
- 类型
-
object
- 必填
-
dnsManagementPolicy
-
scope
-
属性 | 类型 | 描述 |
---|---|---|
| `` | AllowedSourceRanges 指定 IP 地址范围允许列表,应该限制访问负载均衡器的访问。必须使用 CIDR 表示法(例如,)指定每个范围。"10.0.0.0/8" 或 "fd00::/8")。如果没有指定范围,则默认使用 IPv4 的"0.0.0.0/0"和 IPv6 的"::/0",这将允许所有源地址。为了便于从没有 allowedSourceRanges 字段的 OpenShift 版本的迁移,您可以在 "openshift-ingress" 命名空间中的 "router-<ingresscontroller name>" 服务上设置 service.beta.kubernetes.io/load-balancer-source-ranges 注解。 |
|
| dnsManagementPolicy 表示与负载均衡器服务关联的通配符 DNS 记录的生命周期是否由 ingress operator 管理。默认为 Managed。有效值为:Managed 和 Unmanaged。 |
|
| providerParameters 包含特定于底层基础架构供应商的所需的负载均衡器信息。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 providerParameters 字段。 |
|
| scope 表示公开负载均衡器的范围。可能的值有 "External" 和 "Internal"。 |
15.1.8. .spec.endpointPublishingStrategy.loadBalancer.providerParameters
- 描述
- providerParameters 包含特定于底层基础架构供应商的所需的负载均衡器信息。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 providerParameters 字段。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| AWS 提供特定于 AWS 负载均衡器的配置设置。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 aws 字段。 |
|
| GCP 提供特定于 GCP 负载均衡器的配置设置。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 gcp 字段。 |
|
| IBM 提供特定于 IBM Cloud 负载均衡器的配置设置。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 ibm 字段。 |
|
| type 是负载均衡器的底层基础架构供应商。允许的值是 "AWS", "Azure", "BareMetal", "GCP", "IBM", "Nutanix", "OpenStack", 和 "VSphere"。 |
15.1.9. .spec.endpointPublishingStrategy.loadBalancer.providerParameters.aws
- 描述
- AWS 提供特定于 AWS 负载均衡器的配置设置。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 aws 字段。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| classicLoadBalancerParameters 包含 AWS 经典负载均衡器的配置参数。仅在 type 为 Classic 时才出现。 |
|
| networkLoadBalancerParameters 包含 AWS 网络负载均衡器的配置参数。仅在类型为 NLB 时才存在。 |
|
| type 是为 ingresscontroller 实例化的 AWS 负载均衡器的类型。有效值为:* "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 |
15.1.10. .spec.endpointPublishingStrategy.loadBalancer.providerParameters.aws.classicLoadBalancer
- 描述
- classicLoadBalancerParameters 包含 AWS 经典负载均衡器的配置参数。仅在 type 为 Classic 时才出现。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| connectionIdleTimeout 指定在负载均衡器关闭连接前可以闲置的最大时间段。该值必须解析为持续时间值;请参阅 https://pkg.go.dev/time#ParseDuration。nil 或零值表示没有建议,在这种情况下,会使用默认值。此字段的默认值为 60s。这个默认设置可能会改变。 |
15.1.11. .spec.endpointPublishingStrategy.loadBalancer.providerParameters.aws.networkLoadBalancer
- 描述
- networkLoadBalancerParameters 包含 AWS 网络负载均衡器的配置参数。仅在类型为 NLB 时才存在。
- 类型
-
对象
15.1.12. .spec.endpointPublishingStrategy.loadBalancer.providerParameters.gcp
- 描述
- GCP 提供特定于 GCP 负载均衡器的配置设置。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 gcp 字段。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| clientAccess 描述了如何对内部负载均衡器限制客户端访问。有效值为:* "Global": 指定带有全局客户端访问的内部负载均衡器,允许 VPC 中的任何区域与负载均衡器通信。https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing#global_access "local": 指定带有本地客户端访问的内部负载均衡器,这意味着只有同一区域(和 VPC)中的客户端才可以与负载均衡器通信。请注意,这是默认行为。https://cloud.google.com/load-balancing/docs/internal#client_access |
15.1.13. .spec.endpointPublishingStrategy.loadBalancer.providerParameters.ibm
- 描述
- IBM 提供特定于 IBM Cloud 负载均衡器的配置设置。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 ibm 字段。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| protocol 指定负载均衡器是否使用 PROXY 协议将连接转发到 IngressController。请参阅 "service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "proxy-protocol"" (位于 https://cloud.ibm.com/docs/containers?topic=containers-vpc-lbaas PROXY 协议)可用于支持它在将客户端连接的源地址转发到 IngressController 时进行通信客户端连接的源地址。使用 PROXY 协议可让 IngressController 报告这些源地址,而不是在 HTTP 标头和日志中报告负载均衡器的地址。请注意,如果您不使用使用 PROXY 协议的负载均衡器将连接转发到 IngressController,则 IngressController 上启用 PROXY 协议会导致连接失败。有关 PROXY 协议的信息,请参阅 http://www.haproxy.org/download/2.2/doc/proxy-protocol.txt。协议的有效值为 TCP、PROXY 和 omitted。省略时,这意味着没有建议,平台会被保留选择合理的默认值,这可能会随时间变化。当前的默认值是 TCP,不启用代理协议。 |
15.1.14. .spec.endpointPublishingStrategy.nodePort
- 描述
- NodePort 包含 NodePortService 端点发布策略的参数。仅在 type 是 NodePortService 时才出现。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| protocol 指定 IngressController 是否需要传入连接使用普通 TCP,还是 IngressController 是否需要 PROXY 协议。PROXY 协议可以和支持它的负载均衡器一起使用,以便在将这些连接转发到 IngressController 时通信客户端连接的源地址。使用 PROXY 协议可让 IngressController 报告这些源地址,而不是在 HTTP 标头和日志中报告负载均衡器的地址。请注意,如果您不使用使用 PROXY 协议的负载均衡器将连接转发到 IngressController,则 IngressController 上启用 PROXY 协议会导致连接失败。有关 PROXY 协议的信息,请参阅 http://www.haproxy.org/download/2.2/doc/proxy-protocol.txt。以下值对于此字段有效:* 空字符串。* "TCP".* "PROXY".空字符串指定默认字符串,即没有 PROXY 协议的 TCP。请注意,默认值可能会改变。 |
15.1.15. .spec.endpointPublishingStrategy.private
- 描述
- private 包含 Private 端点发布策略的参数。仅在类型为 Private 时才出现。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| protocol 指定 IngressController 是否需要传入连接使用普通 TCP,还是 IngressController 是否需要 PROXY 协议。PROXY 协议可以和支持它的负载均衡器一起使用,以便在将这些连接转发到 IngressController 时通信客户端连接的源地址。使用 PROXY 协议可让 IngressController 报告这些源地址,而不是在 HTTP 标头和日志中报告负载均衡器的地址。请注意,如果您不使用使用 PROXY 协议的负载均衡器将连接转发到 IngressController,则 IngressController 上启用 PROXY 协议会导致连接失败。有关 PROXY 协议的信息,请参阅 http://www.haproxy.org/download/2.2/doc/proxy-protocol.txt。以下值对于此字段有效:* 空字符串。* "TCP".* "PROXY".空字符串指定默认字符串,即没有 PROXY 协议的 TCP。请注意,默认值可能会改变。 |
15.1.16. .spec.httpCompression
- 描述
- httpCompression 定义 HTTP 流量压缩的策略。默认情况下,没有 HTTP 压缩。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| mimeTypes 是应该应用压缩的 MIME 类型列表。此列表可能为空,在这种情况下,入口控制器不会应用压缩。注意:并非所有 MIME 类型都受益于压缩,但 HAProxy 仍然将使用资源在指示时尝试压缩。通常说,文本(html、css、js 等)格式可从压缩中受益,但已压缩的格式(镜像、音频、视频等)在交换上需要花费的时间和 cpu 花费。See https://joehonton.medium.com/the-gzip-penalty-d31bd697f1a2 |
15.1.17. .spec.httpErrorCodePages
- 描述
- httpErrorCodePages 指定带有自定义错误页面的 configmap。管理员必须在 openshift-config 命名空间中创建此 configmap。此 configmap 的格式应为 "error-page-<error code>.http",其中 <error code> 是一个 HTTP 错误代码。例如,"error-page-503.http" 定义了 HTTP 503 响应的错误页面。目前只能自定义 503 和 404 响应的错误页面。configmap 中的每个值都应该是完整的响应,包括 HTTP 标头。eg- https://raw.githubusercontent.com/openshift/router/fadab45747a9b30cc3f0a4b41ad2871f95827a93/images/router/haproxy/conf/error-page-503.http 如果此字段为空,ingress 控制器将使用默认错误页面。
- 类型
-
object
- 必填
-
name
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 是引用的配置映射的 metadata.name |
15.1.18. .spec.httpHeaders
- 描述
- httpHeaders 为 HTTP 标头定义策略。如果此字段为空,则使用默认值。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
|
actions 指定修改标头及其值的选项。请注意,这个选项只适用于明文 HTTP 连接,以及入口控制器终止加密的安全 HTTP 连接(即边缘终止或重新加密连接)。对于 TLS passthrough 连接,无法修改标头。不支持通过操作设置 HSTS ( |
|
| forwardHeaderPolicy 指定 IngressController 设置 Forwarded、X-Forwarded-For、X-Forwarded-Host、X-Forwarded-Port、X-Forwarded-Proto 和 X-Forwarded-Proto-Version HTTP 标头的时间和方式。该值可以是以下之一:* "Append",它指定 IngressController 附加了标头,保留现有的标头。* "replace",它指定 IngressController 设置标头,替换任何现有的 Forwarded 或 X-Forwarded fluentd 标头。* "IfNone",指定 IngressController 在尚未设置标头时设置它们。* "never",它指定 IngressController 永远不会设置标头,保留任何现有的标头。默认情况下,策略为 "Append"。 |
| `` | headerNameCaseAdjustments 指定可用于 HTTP 标头名称的问题单调整。每个调整都指定一个 HTTP 标头名称需要进行相关的大小写调整。例如,指定 "X-Forwarded-For" 表示"x-forwarded-for" HTTP 标头应调整为具有指定的大写。这些调整仅应用于明文、边缘终止和重新加密路由,且仅在使用 HTTP/1 时有效。对于请求标头,这些调整仅适用于具有 haproxy.router.openshift.io/h1-adjust-case=true 注解的路由。对于响应标头,这些调整适用于所有 HTTP 响应。如果此字段为空,则不会调整任何请求标头。 |
|
| uniqueId 描述了自定义 HTTP 标头的配置,入口控制器应注入传入的 HTTP 请求。通常,此标头配置为具有对 HTTP 请求是唯一的值。标头可供应用程序使用,或包含在访问日志中,以方便追踪各个 HTTP 请求。如果此字段为空,则不会将此类标头注入到请求中。 |
15.1.19. .spec.httpHeaders.actions
- 描述
-
actions 指定修改标头及其值的选项。请注意,这个选项只适用于明文 HTTP 连接,以及入口控制器终止加密的安全 HTTP 连接(即边缘终止或重新加密连接)。对于 TLS passthrough 连接,无法修改标头。不支持通过操作设置 HSTS (
Strict-Transport-Security
)标头。strict-Transport-Security
只能使用 "haproxy.router.openshift.io/hsts_header" 路由注解进行配置,并且仅根据 Ingress.Spec.RequiredHSTSPolicies 中指定的策略进行配置。这里定义的任何操作都会在与以下字段相关的任何操作后应用: cache-control, spec.clientTLS, spec.httpHeaders.forwardedHeaderPolicy, spec.httpHeaders.uniqueId, 和 spec.httpHeaders.headerNameCaseAdjustments。如果是 HTTP 请求标头,则在 IngressController 的 spec.httpHeaders.actions 字段中指定的操作将在 IngressController 的 spec.httpHeaders.actions 字段中指定的操作后执行。如果是 HTTP 响应标头,则 IngressController 上的 spec.httpHeaders.actions 中指定的操作将在 Route 的 spec.httpHeaders.actions 字段中指定的操作后执行。使用这个 API 设置的标头无法捕获,以便在访问日志中使用。以下标头名称会被保留,可能无法通过此 API 修改: Strict-Transport-Security, Proxy, Host, Cookie, Set-Cookie。请注意,在相互隔离动态值后,所有 net 添加标头的总大小不能超过 IngressController 上的 spec.tuningOptions.headerBufferMaxRewriteBytes 的值。如需更多详细信息,请参阅该 API 字段的文档。 - 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
|
request 是要修改的 HTTP 请求标头列表。此处定义的操作将修改通过入口控制器的所有请求的请求标头。这些操作应用于所有路由,例如,对于集群中定义的入口控制器处理的所有连接。在 Route 操作前,对请求标头的 IngressController 操作将执行。目前,操作可以定义为 |
|
| IngressControllerHTTPHeader 指定设置或删除 HTTP 标头的配置。 |
|
|
response 是要修改的 HTTP 响应标头列表。此处定义的操作将修改通过入口控制器的所有请求的响应标头。这些操作应用于所有路由,例如,对于集群中定义的入口控制器处理的所有连接。在 Route 操作后,响应标头的 IngressController 操作将执行。目前,操作可以定义为 |
|
| IngressControllerHTTPHeader 指定设置或删除 HTTP 标头的配置。 |
15.1.20. .spec.httpHeaders.actions.request
- 描述
-
request 是要修改的 HTTP 请求标头列表。此处定义的操作将修改通过入口控制器的所有请求的请求标头。这些操作应用于所有路由,例如,对于集群中定义的入口控制器处理的所有连接。在 Route 操作前,对请求标头的 IngressController 操作将执行。目前,操作可以定义为
Set
或Delete
标头值。操作按此列表中定义的序列应用。可以配置最多 20 个请求标头操作。允许的示例获取器为 "req.hdr" 和 "ssl_c_der"。允许的转换器是 "lower" 和 "base64"。标头值示例:"%[req.hdr (X-target),lower]", "%{+Q}[ssl_c_der,base64]"。 - 类型
-
数组
15.1.21. .spec.httpHeaders.actions.request[]
- 描述
- IngressControllerHTTPHeader 指定设置或删除 HTTP 标头的配置。
- 类型
-
object
- 必填
-
action
-
名称
-
属性 | 类型 | 描述 |
---|---|---|
|
| action 指定对标头执行的操作,如设置或删除标头。 |
|
| name 指定要对其执行操作的标头名称。其值必须是 RFC 2616 第 4.2 部分中定义的有效 HTTP 标头名称。名称只能包含字母数字字符及以下特殊字符 "-!这个问题$%&'*+.^_'"。以下标头名称会被保留,可能无法通过此 API 修改: Strict-Transport-Security, Proxy, Host, Cookie, Set-Cookie。它长度不得超过 255 个字符。标头名称必须是唯一的。 |
15.1.22. .spec.httpHeaders.actions.request[].action
- 描述
- action 指定对标头执行的操作,如设置或删除标头。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| set 指定应如何设置 HTTP 标头。当 type 为 Set 和 forbidden 时,则需要此字段。 |
|
| type 定义要在标头中应用的操作类型。可能的值有 Set 或 Delete。设置允许您设置 HTTP 请求和响应标头。通过删除,您可以删除 HTTP 请求和响应标头。 |
15.1.23. .spec.httpHeaders.actions.request[].action.set
- 描述
- set 指定应如何设置 HTTP 标头。当 type 为 Set 和 forbidden 时,则需要此字段。
- 类型
-
object
- 必填
-
value
-
属性 | 类型 | 描述 |
---|---|---|
|
| value 指定标头值。可以添加动态值。该值将解释为 http://cbonte.github.io/haproxy-dconv/2.6/configuration.html#8.2.6 中定义的 HAProxy 格式字符串,并可能使用 HAProxy 的 %[] 语法,否则必须是 https://datatracker.ietf.org/doc/html/rfc7230#section-3.2 中定义的有效 HTTP 标头值。此字段的值长度不得超过 16384 个字符。请注意,在相互隔离动态值后,所有 net 添加标头的总大小不能超过 IngressController 上的 spec.tuningOptions.headerBufferMaxRewriteBytes 的值。 |
15.1.24. .spec.httpHeaders.actions.response
- 描述
-
response 是要修改的 HTTP 响应标头列表。此处定义的操作将修改通过入口控制器的所有请求的响应标头。这些操作应用于所有路由,例如,对于集群中定义的入口控制器处理的所有连接。在 Route 操作后,响应标头的 IngressController 操作将执行。目前,操作可以定义为
Set
或Delete
标头值。操作按此列表中定义的序列应用。可以配置最多 20 个响应标头操作。允许的示例 fetchers 是 "res.hdr" 和 "ssl_c_der"。允许的转换器是 "lower" 和 "base64"。示例标题值:"%[res.hdr (X-target),lower]", "%{+Q}[ssl_c_der,base64]"。 - 类型
-
数组
15.1.25. .spec.httpHeaders.actions.response[]
- 描述
- IngressControllerHTTPHeader 指定设置或删除 HTTP 标头的配置。
- 类型
-
object
- 必填
-
action
-
名称
-
属性 | 类型 | 描述 |
---|---|---|
|
| action 指定对标头执行的操作,如设置或删除标头。 |
|
| name 指定要对其执行操作的标头名称。其值必须是 RFC 2616 第 4.2 部分中定义的有效 HTTP 标头名称。名称只能包含字母数字字符及以下特殊字符 "-!这个问题$%&'*+.^_'"。以下标头名称会被保留,可能无法通过此 API 修改: Strict-Transport-Security, Proxy, Host, Cookie, Set-Cookie。它长度不得超过 255 个字符。标头名称必须是唯一的。 |
15.1.26. .spec.httpHeaders.actions.response[].action
- 描述
- action 指定对标头执行的操作,如设置或删除标头。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| set 指定应如何设置 HTTP 标头。当 type 为 Set 和 forbidden 时,则需要此字段。 |
|
| type 定义要在标头中应用的操作类型。可能的值有 Set 或 Delete。设置允许您设置 HTTP 请求和响应标头。通过删除,您可以删除 HTTP 请求和响应标头。 |
15.1.27. .spec.httpHeaders.actions.response[].action.set
- 描述
- set 指定应如何设置 HTTP 标头。当 type 为 Set 和 forbidden 时,则需要此字段。
- 类型
-
object
- 必填
-
value
-
属性 | 类型 | 描述 |
---|---|---|
|
| value 指定标头值。可以添加动态值。该值将解释为 http://cbonte.github.io/haproxy-dconv/2.6/configuration.html#8.2.6 中定义的 HAProxy 格式字符串,并可能使用 HAProxy 的 %[] 语法,否则必须是 https://datatracker.ietf.org/doc/html/rfc7230#section-3.2 中定义的有效 HTTP 标头值。此字段的值长度不得超过 16384 个字符。请注意,在相互隔离动态值后,所有 net 添加标头的总大小不能超过 IngressController 上的 spec.tuningOptions.headerBufferMaxRewriteBytes 的值。 |
15.1.28. .spec.httpHeaders.uniqueId
- 描述
- uniqueId 描述了自定义 HTTP 标头的配置,入口控制器应注入传入的 HTTP 请求。通常,此标头配置为具有对 HTTP 请求是唯一的值。标头可供应用程序使用,或包含在访问日志中,以方便追踪各个 HTTP 请求。如果此字段为空,则不会将此类标头注入到请求中。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| format 指定注入的 HTTP 标头值的格式。除非指定了 name,否则此字段无效。对于基于 HAProxy 的入口控制器实现,这种格式与 HTTP 日志格式的语法相同。如果字段为空,则默认值为 "%{+X}o\\ %ci:%cp_%fi:%fp_%Ts_%rt:%rt:%pid"; 请参阅对应的 HAProxy 文档: http://cbonte.github.io/haproxy-dconv/2.0/configuration.html#8.2.3 |
|
| name 指定入口控制器注入 HTTP 请求的 HTTP 标头的名称(如 "unique-id")。字段的值必须是 RFC 2616 部分 4.2 中定义的有效 HTTP 标头名称。如果字段为空,则不会注入标头。 |
15.1.29. .spec.logging
- 描述
- logging 为应记录的内容定义参数。如果此字段为空,则会启用运行日志,但禁用访问日志。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| access 描述了应如何记录客户端请求。如果此字段为空,则禁用访问日志。 |
15.1.30. .spec.logging.access
- 描述
- access 描述了应如何记录客户端请求。如果此字段为空,则禁用访问日志。
- 类型
-
object
- 必填
-
目的地
-
属性 | 类型 | 描述 |
---|---|---|
|
| 目的地是访问日志的位置。 |
| `` | httpCaptureCookies 指定应在访问日志中捕获的 HTTP cookie。如果此字段为空,则不会捕获 Cookie。 |
|
| httpCaptureHeaders 定义应在访问日志中捕获的 HTTP 标头。如果此字段为空,则不会捕获任何标头。请注意,这个选项只适用于明文 HTTP 连接,以及入口控制器终止加密的安全 HTTP 连接(即边缘终止或重新加密连接)。对于 TLS 透传连接,无法捕获标头。 |
|
| httpLogFormat 指定 HTTP 请求的日志消息格式。如果此字段为空,日志消息将使用实现中的默认 HTTP 日志格式。对于 HAProxy 的默认 HTTP 日志格式,请参阅 HAProxy 文档: http://cbonte.github.io/haproxy-dconv/2.0/configuration.html#8.2.3 请注意,这个格式只适用于明文 HTTP 连接,以及入口控制器终止加密的 HTTP 连接的安全(即边缘终止或重新加密连接)。它不会影响 TLS 透传连接的日志格式。 |
|
| logEmptyRequests 指定如何记录没有接收请求的连接。通常,这些空请求来自负载均衡器的健康探测或 Web 浏览器的规范连接("preconnect"),在这种情况下,日志记录这些请求可能并不重要。但是,这些请求也可能是由网络错误导致的,在这种情况下,记录空请求可能有助于诊断错误。此外,这些请求可能是由端口扫描导致的,在这种情况下,记录空请求有助于检测入侵尝试。此字段允许的值是 "Log" 和 "Ignore"。默认值为 "Log"。 |
15.1.31. .spec.logging.access.destination
- 描述
- 目的地是访问日志的位置。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| 容器包含容器日志记录目的地的参数。仅在类型为 Container 时才会出现。 |
|
| syslog 包含 syslog 端点的参数。仅在 type 为 Syslog 时才出现。 |
|
| type 是日志的目的地类型。它必须是以下之一:* Container The ingress operator 在 ingress 控制器 pod 上配置名为 "logs" 的 sidecar 容器,并将 ingress 控制器配置为将日志写入 sidecar。然后,日志作为容器日志可用。管理员应该配置一个自定义日志记录解决方案,从这个 sidecar 读取日志。请注意,使用容器日志意味着当日志速率超过容器运行时或自定义日志记录解决方案的容量时,日志可能会丢弃。* syslog 日志发送到 syslog 端点。管理员必须指定可以接收 syslog 信息的端点。管理员应该已经配置了一个自定义 syslog 实例。 |
15.1.32. .spec.logging.access.destination.container
- 描述
- 容器包含容器日志记录目的地的参数。仅在类型为 Container 时才会出现。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| MaxLength 是日志消息的最大长度。有效值为 480 到 8192 范围中的整数。如果省略时,默认值为 1024。 |
15.1.33. .spec.logging.access.destination.syslog
- 描述
- syslog 包含 syslog 端点的参数。仅在 type 为 Syslog 时才出现。
- 类型
-
object
- 必填
-
address
-
port
-
属性 | 类型 | 描述 |
---|---|---|
|
| address 是接收日志消息的 syslog 端点的 IP 地址。 |
|
| facility 指定日志消息的 syslog 工具。如果此字段为空,则工具为 "local1"。 |
|
| MaxLength 是日志消息的最大长度。有效值是 480 到 4096 范围中的整数,其中包含。如果省略时,默认值为 1024。 |
|
| port 是接收日志消息的 syslog 端点的 UDP 端口号。 |
15.1.34. .spec.logging.access.httpCaptureHeaders
- 描述
- httpCaptureHeaders 定义应在访问日志中捕获的 HTTP 标头。如果此字段为空,则不会捕获任何标头。请注意,这个选项只适用于明文 HTTP 连接,以及入口控制器终止加密的安全 HTTP 连接(即边缘终止或重新加密连接)。对于 TLS 透传连接,无法捕获标头。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
| `` | request 指定要捕获的 HTTP 请求标头。如果此字段为空,则不会捕获任何请求标头。 |
| `` | response 指定要捕获的 HTTP 响应标头。如果此字段为空,则不会捕获响应标头。 |
15.1.35. .spec.namespaceSelector
- 描述
- namespaceSelector 用于过滤由 ingress 控制器提供服务的一组命名空间。这对实现分片(shard)非常有用。如果未设置,则默认为没有过滤。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。 |
|
| 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。 |
|
| matchLabels 是 {key,value} 对的映射。MatchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。 |
15.1.36. .spec.namespaceSelector.matchExpressions
- 描述
- matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。
- 类型
-
array
15.1.37. .spec.namespaceSelector.matchExpressions[]
- 描述
- 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。
- 类型
-
object
- 必填
-
key
-
operator
-
属性 | 类型 | 描述 |
---|---|---|
|
| key 是选择器应用到的标签键。 |
|
| 运算符代表一个键与一组值的关系。有效的运算符是 In、NotIn、Exists 和 DoesNotExist。 |
|
| 值是字符串值的数组。如果运算符是 In 或 NotIn,则值数组必须是非空的。如果运算符是 Exists 或 DoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。 |
15.1.38. .spec.nodePlacement
- 描述
- nodePlacement 启用对入口控制器调度的显式控制。如果未设置,则使用默认值。如需了解更多详细信息,请参阅 NodePlacement。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| nodeSelector 是应用到入口控制器部署的节点选择器。如果设置,则使用指定的选择器并替换默认值。如果未设置,则默认值取决于集群 config.openshift.io/v1/ingresses 状态中的 defaultPlacement 字段的值。当 defaultPlacement 是 Workers 时,默认值为: kubernetes.io/os: linux node-role.kubernetes.io/worker: '' when defaultPlacement is ControlPlane, default is: kubernetes.io/os: linux node-role.kubernetes.io/master: '' The these defaults be change.请注意,不支持使用 nodeSelector.matchExpressions。只能使用 nodeSelector.matchLabels。这是 Kubernetes API 的一个限制:pod 规格不允许对节点选择器进行复杂的表达式。 |
|
| tolerations 是应用到入口控制器部署的容限列表。默认值为空列表。请参阅 https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ |
|
| 此 Toleration 附加到 pod,以使用匹配的 operator <operator> 容许与 triple <key,value,effect> 匹配的任何污点。 |
15.1.39. .spec.nodePlacement.nodeSelector
- 描述
- nodeSelector 是应用到入口控制器部署的节点选择器。如果设置,则使用指定的选择器并替换默认值。如果未设置,则默认值取决于集群 config.openshift.io/v1/ingresses 状态中的 defaultPlacement 字段的值。当 defaultPlacement 是 Workers 时,默认值为: kubernetes.io/os: linux node-role.kubernetes.io/worker: '' when defaultPlacement is ControlPlane, default is: kubernetes.io/os: linux node-role.kubernetes.io/master: '' The these defaults be change.请注意,不支持使用 nodeSelector.matchExpressions。只能使用 nodeSelector.matchLabels。这是 Kubernetes API 的一个限制:pod 规格不允许对节点选择器进行复杂的表达式。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。 |
|
| 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。 |
|
| matchLabels 是 {key,value} 对的映射。MatchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。 |
15.1.40. .spec.nodePlacement.nodeSelector.matchExpressions
- 描述
- matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。
- 类型
-
array
15.1.41. .spec.nodePlacement.nodeSelector.matchExpressions[]
- 描述
- 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。
- 类型
-
object
- 必填
-
key
-
operator
-
属性 | 类型 | 描述 |
---|---|---|
|
| key 是选择器应用到的标签键。 |
|
| 运算符代表一个键与一组值的关系。有效的运算符是 In、NotIn、Exists 和 DoesNotExist。 |
|
| 值是字符串值的数组。如果运算符是 In 或 NotIn,则值数组必须是非空的。如果运算符是 Exists 或 DoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。 |
15.1.42. .spec.nodePlacement.tolerations
- 描述
- tolerations 是应用到入口控制器部署的容限列表。默认值为空列表。请参阅 https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
- 类型
-
array
15.1.43. .spec.nodePlacement.tolerations[]
- 描述
- 此 Toleration 附加到 pod,以使用匹配的 operator <operator> 容许与 triple <key,value,effect> 匹配的任何污点。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| effect 表示要匹配的污点效果。空意味着匹配所有污点效果。指定后,允许的值为 NoSchedule,PreferNoSchedule 和 NoExecute。 |
|
| key 是容限应用到的污点键。empty 表示与所有污点键匹配。如果键为空,则必须存在运算符;组合意味着匹配所有值和所有键。 |
|
| Operator 代表键与值的关系。有效的运算符是 Exists 和 Equal。默认值为 Equal。exists 等同于值的通配符,以便 pod 可以容忍特定类别的所有污点。 |
|
| tolerationSeconds 代表容限的期间(必须生效 NoExecute,否则此字段将被忽略)可以容忍污点。默认情况下,它不会被设置,这意味着容许任何污点(不要驱除)。零值和负值将被视为 0 (立即删除)。 |
|
| value 是容限匹配的污点值。如果运算符是 Exists,则该值应该为空,否则仅是一个常规字符串。 |
15.1.44. .spec.routeAdmission
- 描述
- routeAdmission 定义了处理新路由声明的策略(例如,允许或拒绝命名空间之间的声明)。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 routeAdmission 字段。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| namespaceOwnership 描述了如何处理跨命名空间的主机名声明。值必须是: - Strict: 不允许不同命名空间中的路由声明同一主机。- InterNamespaceAllowed: 允许路由在命名空间间声明相同主机名的不同路径。如果为空,则默认为 Strict。 |
|
| wildcardPolicy 描述了如何为 ingress 控制器处理带有通配符策略的路由。wildcardPolicy 控制使用由入口控制器根据路由的通配符策略公开的路由 [1]。https://github.com/openshift/api/blob/master/route/v1/types.go 注意:将 WildcardPolicy 从 WildcardsAllowed 更新为 WildcardsDisallowed 将导致带有 Subdomain 通配符策略接受的路由停止工作。这些路由必须更新为由入口控制器读取的 None 通配符策略。wildcardPolicy 支持 WildcardsAllowed 和 WildcardsDisallowed 值。如果为空,则默认为 "WildcardsDisallowed"。 |
15.1.45. .spec.routeSelector
- 描述
- routeSelector 用于过滤由入口控制器提供服务的一组 Routes。这对实现分片(shard)非常有用。如果未设置,则默认为没有过滤。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。 |
|
| 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。 |
|
| matchLabels 是 {key,value} 对的映射。MatchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。 |
15.1.46. .spec.routeSelector.matchExpressions
- 描述
- matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。
- 类型
-
array
15.1.47. .spec.routeSelector.matchExpressions[]
- 描述
- 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。
- 类型
-
object
- 必填
-
key
-
operator
-
属性 | 类型 | 描述 |
---|---|---|
|
| key 是选择器应用到的标签键。 |
|
| 运算符代表一个键与一组值的关系。有效的运算符是 In、NotIn、Exists 和 DoesNotExist。 |
|
| 值是字符串值的数组。如果运算符是 In 或 NotIn,则值数组必须是非空的。如果运算符是 Exists 或 DoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。 |
15.1.48. .spec.tlsSecurityProfile
- 描述
- tlsSecurityProfile 指定 ingresscontrollers 的 TLS 连接的设置。如果未设置,则默认值基于 apiservers.config.openshift.io/cluster 资源。请注意,在使用 Old、Intermediate 和 Modern 配置集类型时,有效的配置集配置可能会在发行版本间有所变化。例如,使用在版本 X.Y.Z 中部署的 Intermediate 配置集,升级到版本 X.Y.Z+1 可能会导致新的配置集应用到 ingress 控制器,从而导致一个 rollout 操作。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
| `` | Custom 是一个用户定义的 TLS 安全配置集。使用自定义配置集时要非常小心,因为无效的配置可能是灾难性的。一个自定义配置集示例: password: - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 minTLSVersion: VersionTLS11 |
| `` | intermediate 是一个基于以下内容的 TLS 安全配置集: https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28recommended.29 https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28recommended.29 and looks like this (yaml): - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 minTLSVersion: VersionTLS12 |
| `` | modern 是一个基于 https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility 的 TLS 安全配置集,如下所示:密码: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 minTLSVersion: VersionTLS13 |
| `` | 旧是一个基于以下的 TLS 安全配置集: https://wiki.mozilla.org/Security/Server_Side_TLS#Old_backward_compatibility https://wiki.mozilla.org/Security/Server_Side_TLS#Old_backward_compatibility and looks like this (yaml): - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 - DHE-RSA-CHACHA20-POLY1305 - ECDHE-ECDSA-AES128-SHA256 - ECDHE-RSA-AES128-SHA256 - ECDHE-ECDSA-AES128-AES128-SHA - ECDHE-RSA-AES128-AES256-SHA384 - ECDHE-RSA-AES256-SHA384 - ECDHE-ECDSA-AES256-SHA-SHA - ECDHE-RSA-AES256-SHA - DHE-RSA-AES128-SHA256 - DHE-RSA-AES256-SHA256 - AES128-GCM-SHA256 - AES256-GCM-SHA384 - AES128-SHA256 - AES256-SHA256 - AES128-SHA - AES256-SHA - DES-CBC3-SHA minTLSVersion: VersionTLS10 |
|
| type 是 Old、Intermediate、Modern 或 Custom 之一。自定义提供指定各个 TLS 安全配置集参数的功能。旧,Intermediate 和 Modern 是基于 TLS 安全配置集 :https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations。 配置集基于意图,因此当开发新密码时可能会随时间变化,并且发现现有密码不安全。根据具体哪些密码可用于进程,可以减少列表。请注意,Modern 配置集目前还不被支持,因为它还没有被常见软件库正确采用。 |
15.1.49. .spec.tuningOptions
- 描述
- tuningOptions 定义用于调整入口控制器 pod 性能的参数。所有字段都是可选的,如果未设置,则使用它们对应的默认值。如需了解更多详细信息,请参阅特定的 tuningOptions 字段。通常不建议在 tuningOptions 中设置字段。默认值适用于大多数配置。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| clientFinTimeout 定义连接在等待客户端响应关闭连接时保持打开的时长。如果未设置,则默认超时为 1s |
|
| clientTimeout 定义连接在等待客户端响应时保持打开的时长。如果未设置,则默认超时为 30s |
|
| ConnectTimeout 定义等待连接尝试成功服务器/后端的最长时间。此字段需要未签名的持续时间字符串为十进制数字,每个数字都有可选的 fraction 和一个单元后缀,如。"300ms", "1.5h" 或 "2h45m"。有效的时间单位是 "ns", "us" (或 "uss" U+00B5 或 "HEKETIs" U+03BC), "ms", "s", "m", "h"。如果省略,这意味着用户没有建议,平台会被保留为合理的默认值。这个默认值可能会随时间变化。当前的默认值为 5s。 |
|
| headerBufferBytes 描述了 IngressController 连接会话应保留多少内存(以字节为单位)。请注意,如果 IngressController 启用了 HTTP/2,则该值必须至少为 16384 (https://tools.ietf.org/html/rfc7540)。如果此字段为空,IngressController 将使用默认值 32768 字节。通常不建议设置此字段,因为 headerBufferBytes 值太小可能会破坏 IngressController 和 headerBufferBytes 值太大可能会导致 IngressController 使用比必要多的内存。 |
|
| headerBufferMaxRewriteBytes 描述了 headerBufferBytes 为 HTTP 标头重写和附加 IngressController 连接会话应保留多少内存(以字节为单位)。请注意,传入的 HTTP 请求将限制为(headerBufferBytes - headerBufferMaxRewriteBytes)字节,即 headerBufferBytes 必须大于 headerBufferMaxRewriteBytes。如果此字段为空,IngressController 将使用默认值 8192 字节。通常不建议设置此字段,因为 headerBufferMaxRewriteBytes 值太小可能会破坏 IngressController 和 headerBufferMaxRewriteBytes 值,它们太大可能会导致 IngressController 使用比必要更多的内存。 |
|
| healthCheckInterval 定义路由器在其配置的后端两个连续健康检查之间等待的时间。这个值被全局应用作为所有路由的默认值,但路由注解 "router.openshift.io/haproxy.health.check.interval" 可能会覆盖每个路由。需要一个未签名的持续时间字符串,每个数字都有可选的 fraction 和一个单位后缀,如 "300ms"、"1.5h" 或 "2h45m"。有效的时间单位是 "ns", "us" (或 "uss" U+00B5 或 "HEKETIs" U+03BC), "ms", "s", "m", "h"。把它设置为小于 5s 可能会导致流量因为频繁频繁的 TCP 健康检查和附带 SYN 数据包状态而造成过量流量。另外,由于已不再可用的后端服务器,设置太高可能会导致延迟增加,但尚未检测到延迟。空或零的 healthCheckInterval 表示没有建议,IngressController 会选择一个默认值,这可能会随时间变化。目前,默认的 healthCheckInterval 值为 5s。目前,允许的最小值为 1s,允许的最大值为 2147483647ms (24.85 天)。这两者都可能会随着时间而变化。 |
|
| maxConnections 定义每个 HAProxy 进程可建立的最大同时连接数。增加这个值可让每个入口控制器 pod 处理更多连接,但代价是被消耗的额外系统资源。允许的值有: empty, 0, -1, 和 range 2000-2000000。如果此字段为空或 0,IngressController 将使用默认值 50000,但默认值可能会在以后的版本中有所变化。如果值为 -1,则 HAProxy 将根据运行中容器中的可用 ulimits 动态计算最大值。选择 -1 (即 auto)会导致计算大量值(在 OpenShift >=4.10 集群中约520000),因此每个 HAProxy 进程都会与当前默认值 50000 相比产生大量内存用量。设置大于当前操作系统限制的值将阻止 HAProxy 进程启动。如果您选择了一个离散值(如 750000),并且路由器 Pod 迁移到新节点,则不能保证新节点配置了相同的 ulimits。在这种情况下,pod 无法启动。如果您配置了不同的 ulimits 的节点(例如,不同的调优配置集),并且您选择了离散值,那么指导是使用 -1,并允许在运行时动态计算值。您可以使用以下指标监控路由器容器的内存用量: 'container_memory_working_set_bytes{container="router",namespace="openshift-ingress"}'。您可以使用以下指标监控路由器容器中的单个 HAProxy 进程的内存使用量: 'container_memory_working_set_bytes{container="router",namespace="openshift-ingress"}/container_processes{container="router",namespace="openshift-ingress"}'。 |
|
| reloadInterval 定义允许重新加载路由器接受新更改的最小间隔。根据场景,增加这个值可以防止 HAProxy 进程积累。在使用 roundrobin 平衡算法时,增加这个间隔也可以降低后端服务器上的负载均衡。另外,减少这个值可能会降低延迟,因为 HAProxy 配置的更新可能会更快地生效。该值必须是持续时间值 ; 请参阅 https://pkg.go.dev/time#ParseDuration。目前,允许的最小值为 1s,最大允许的值是 120s。在以后的 OpenShift 版本中,允许的最小和最大值可能会改变。请注意,如果提供了这些绑定以外的持续时间,则 reloadInterval 的值将被上限/失败,且不会被拒绝(例如,超过 120s 的持续时间将上限为 120s;IngressController 不会拒绝并将禁止的值替换为默认值)。reloadInterval 的零值告知 IngressController 选择默认值,这是目前 5s,可能在不通知的情况下更改。此字段需要未签名的持续时间字符串为十进制数字,每个数字都有可选的 fraction 和一个单元后缀,如。"300ms", "1.5h" 或 "2h45m"。有效的时间单位是 "ns", "us" (或 "uss" U+00B5 或 "HEKETIs" U+03BC), "ms", "s", "m", "h"。注:设置值会显著大于默认值 5s 可能会导致观察路由及其端点更新延迟。HAProxy 的配置将更频繁地重新加载,只有在后续重新加载之前,不会提供新创建的路由。 |
|
| serverFinTimeout 定义连接在等待服务器/后端响应关闭连接时保持打开的时长。如果未设置,则默认超时为 1s |
|
| serverTimeout 定义连接在等待服务器/后端响应时保持打开的时长。如果未设置,则默认超时为 30s |
|
| threadCount 定义每个 HAProxy 进程创建的线程数量。创建更多线程可让每个入口控制器 pod 处理更多连接,而代价会增加所使用的系统资源。HAProxy 目前支持最多 64 个线程。如果此字段为空,IngressController 将使用默认值。当前默认为 4 个线程,但以后的发行版本中可能会改变。通常不建议设置此字段。增加 HAProxy 线程的数量允许入口控制器 pod 在负载下使用更多 CPU 时间,如果设置过高,则可能耗尽其他 pod。减少线程数量可能会导致入口控制器性能不佳。 |
|
| tlsInspectDelay 定义路由器可以保存数据以查找匹配的路由的时长。这个设置太短可能会导致路由器回退到边缘终止或重新加密路由的默认证书,即使可以使用更匹配的证书。如果未设置,则默认检查延迟为 5s |
|
| tunnelTimeout 定义隧道连接(包括 websocket)在隧道闲置时保持打开的时长。如果未设置,则默认超时为 1h |
15.1.50. .status
- 描述
- Status 是 IngressController 最近观察到的状态。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| availableReplicas 是根据入口控制器部署观察到的可用副本数。 |
|
| conditions 是条件及其状态的列表。Available 意味着入口控制器部署可用,并为路由和入口资源(即 .status.availableReplicas 等于 .spec.replicas)提供额外的条件来指示其他入口控制器特性和功能的状态。* LoadBalancerManaged - 如果满足以下条件,则为 True :* 端点发布策略需要一个服务负载均衡器。- 如果这些条件不满意,则为 False。* LoadBalancerReady - 如果满足以下条件,则为 True :* 一个负载均衡器被管理。* 负载均衡器已就绪。- 如果这些条件不满意,则为 False。* DNSManaged - 如果满足以下条件,则为 True:* 端点发布策略和平台支持 DNS。* 设置了入口控制器域。* DNS.config.openshift.io/cluster 配置 DNS 区域。- 如果这些条件不满意,则为 False。* DNSReady - 如果满足以下条件,则为 True: * DNS is managed.* DNS 记录已被成功创建。- 如果这些条件不满意,则为 False。 |
|
| OperatorCondition 只是标准条件字段。 |
|
| domain 是实际正在使用的域。 |
|
| endpointPublishingStrategy 是使用的实际策略。 |
|
| namespaceSelector 是使用的实际 namespaceSelector。 |
|
| observedGeneration 是观察到的最新生成。 |
|
| routeSelector 是使用的实际 routeSelector。 |
|
| selector 是字符串格式的标签选择器,用于与 IngressController 对应的 ingress 控制器 pod。匹配 pod 的数量应该等于 availableReplicas 的值。 |
|
| TLSProfile 是生效的 TLS 连接配置。 |
15.1.51. .status.conditions
- 描述
- conditions 是条件及其状态的列表。Available 意味着入口控制器部署可用,并为路由和入口资源(即 .status.availableReplicas 等于 .spec.replicas)提供额外的条件来指示其他入口控制器特性和功能的状态。* LoadBalancerManaged - 如果满足以下条件,则为 True :* 端点发布策略需要一个服务负载均衡器。- 如果这些条件不满意,则为 False。* LoadBalancerReady - 如果满足以下条件,则为 True :* 一个负载均衡器被管理。* 负载均衡器已就绪。- 如果这些条件不满意,则为 False。* DNSManaged - 如果满足以下条件,则为 True:* 端点发布策略和平台支持 DNS。* 设置了入口控制器域。* DNS.config.openshift.io/cluster 配置 DNS 区域。- 如果这些条件不满意,则为 False。* DNSReady - 如果满足以下条件,则为 True: * DNS is managed.* DNS 记录已被成功创建。- 如果这些条件不满意,则为 False。
- 类型
-
array
15.1.52. .status.conditions[]
- 描述
- OperatorCondition 只是标准条件字段。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| |
|
| |
|
| |
|
| |
|
|
15.1.53. .status.endpointPublishingStrategy
- 描述
- endpointPublishingStrategy 是使用的实际策略。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| HostNetwork 包含 HostNetwork 端点发布策略的参数。仅在 type 为 HostNetwork 时才出现。 |
|
| LoadBalancer 包含负载均衡器的参数。仅在类型为 LoadBalancerService 时才出现。 |
|
| NodePort 包含 NodePortService 端点发布策略的参数。仅在 type 是 NodePortService 时才出现。 |
|
| private 包含 Private 端点发布策略的参数。仅在类型为 Private 时才出现。 |
|
| type 是要使用的发布策略。有效值为:* LoadBalancerService 使用 Kubernetes LoadBalancer Service 发布入口控制器。在这个配置中,入口控制器部署使用容器网络。创建了一个 LoadBalancer 服务来发布部署。请参阅 :https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer 如果设置了域,将管理通配符 DNS 记录以指向 LoadBalancer 服务的外部名称。DNS 记录只在 dns.config.openshift.io/cluster .spec.publicZone 和 .spec.privateZone 定义的 DNS 区域中管理。目前仅在 AWS、Azure 和 GCP 平台上支持通配符 DNS 管理。* HostNetwork 在部署了入口控制器的节点端口上发布入口控制器。在这个配置中,入口控制器部署使用主机网络,并绑定到节点端口 80 和 443。用户负责配置外部负载均衡器,以通过节点端口发布入口控制器。* private Does 没有发布入口控制器。在这个配置中,入口控制器部署使用容器网络,且不会被显式发布。用户必须手动发布入口控制器。* NodePortService 使用 Kubernetes NodePort Service 发布入口控制器。在这个配置中,入口控制器部署使用容器网络。创建了一个 NodePort 服务来发布部署。特定的节点端口由 OpenShift 动态分配,但为了支持静态端口分配,用户会保留对受管 NodePort Service 的节点端口字段的更改。 |
15.1.54. .status.endpointPublishingStrategy.hostNetwork
- 描述
- HostNetwork 包含 HostNetwork 端点发布策略的参数。仅在 type 为 HostNetwork 时才出现。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| httpPort 是主机上的端口,应该用于侦听 HTTP 请求。当端口 80 已在使用时,应设置此字段。该值不应与集群的 NodePort 范围冲突。如果值为 0 或未指定值,则默认为 80。 |
|
| httpsPort 是主机上的端口,应该用于侦听 HTTPS 请求。当端口 443 已在使用时,应设置此字段。该值不应与集群的 NodePort 范围冲突。如果值为 0 或未指定值,则默认为 443。 |
|
| protocol 指定 IngressController 是否需要传入连接使用普通 TCP,还是 IngressController 是否需要 PROXY 协议。PROXY 协议可以和支持它的负载均衡器一起使用,以便在将这些连接转发到 IngressController 时通信客户端连接的源地址。使用 PROXY 协议可让 IngressController 报告这些源地址,而不是在 HTTP 标头和日志中报告负载均衡器的地址。请注意,如果您不使用使用 PROXY 协议的负载均衡器将连接转发到 IngressController,则 IngressController 上启用 PROXY 协议会导致连接失败。有关 PROXY 协议的信息,请参阅 http://www.haproxy.org/download/2.2/doc/proxy-protocol.txt。以下值对于此字段有效:* 空字符串。* "TCP".* "PROXY".空字符串指定默认字符串,即没有 PROXY 协议的 TCP。请注意,默认值可能会改变。 |
|
| statsPort 是发布路由器统计的主机上的端口。该值不应与集群的 NodePort 范围冲突。如果外部负载均衡器配置为将连接转发到此 IngressController,负载均衡器应该使用此端口进行健康检查。负载均衡器可以在给定节点上的这个端口上发送 HTTP 探测,路径为 /healthz/ready,以确定入口控制器是否准备好接收节点上的流量。对于正常操作,负载均衡器必须在健康检查报告就绪前,不会将流量转发到节点。负载均衡器还应该在 /healthz/ready 开始报告未就绪后最多停止对 45 秒的转发请求。每 5 秒探测到 10 秒(5 秒超时),并且两个成功或失败请求的阈值分别变为健康或不健康。当值为 0 或未指定值时,默认为 1936。 |
15.1.55. .status.endpointPublishingStrategy.loadBalancer
- 描述
- LoadBalancer 包含负载均衡器的参数。仅在类型为 LoadBalancerService 时才出现。
- 类型
-
object
- 必填
-
dnsManagementPolicy
-
scope
-
属性 | 类型 | 描述 |
---|---|---|
| `` | AllowedSourceRanges 指定 IP 地址范围允许列表,应该限制访问负载均衡器的访问。必须使用 CIDR 表示法(例如,)指定每个范围。"10.0.0.0/8" 或 "fd00::/8")。如果没有指定范围,则默认使用 IPv4 的"0.0.0.0/0"和 IPv6 的"::/0",这将允许所有源地址。为了便于从没有 allowedSourceRanges 字段的 OpenShift 版本的迁移,您可以在 "openshift-ingress" 命名空间中的 "router-<ingresscontroller name>" 服务上设置 service.beta.kubernetes.io/load-balancer-source-ranges 注解。 |
|
| dnsManagementPolicy 表示与负载均衡器服务关联的通配符 DNS 记录的生命周期是否由 ingress operator 管理。默认为 Managed。有效值为:Managed 和 Unmanaged。 |
|
| providerParameters 包含特定于底层基础架构供应商的所需的负载均衡器信息。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 providerParameters 字段。 |
|
| scope 表示公开负载均衡器的范围。可能的值有 "External" 和 "Internal"。 |
15.1.56. .status.endpointPublishingStrategy.loadBalancer.providerParameters
- 描述
- providerParameters 包含特定于底层基础架构供应商的所需的负载均衡器信息。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 providerParameters 字段。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| AWS 提供特定于 AWS 负载均衡器的配置设置。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 aws 字段。 |
|
| GCP 提供特定于 GCP 负载均衡器的配置设置。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 gcp 字段。 |
|
| IBM 提供特定于 IBM Cloud 负载均衡器的配置设置。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 ibm 字段。 |
|
| type 是负载均衡器的底层基础架构供应商。允许的值是 "AWS", "Azure", "BareMetal", "GCP", "IBM", "Nutanix", "OpenStack", 和 "VSphere"。 |
15.1.57. .status.endpointPublishingStrategy.loadBalancer.providerParameters.aws
- 描述
- AWS 提供特定于 AWS 负载均衡器的配置设置。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 aws 字段。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| classicLoadBalancerParameters 包含 AWS 经典负载均衡器的配置参数。仅在 type 为 Classic 时才出现。 |
|
| networkLoadBalancerParameters 包含 AWS 网络负载均衡器的配置参数。仅在类型为 NLB 时才存在。 |
|
| type 是为 ingresscontroller 实例化的 AWS 负载均衡器的类型。有效值为:* "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 |
15.1.58. .status.endpointPublishingStrategy.loadBalancer.providerParameters.aws.classicLoadBalancer
- 描述
- classicLoadBalancerParameters 包含 AWS 经典负载均衡器的配置参数。仅在 type 为 Classic 时才出现。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| connectionIdleTimeout 指定在负载均衡器关闭连接前可以闲置的最大时间段。该值必须解析为持续时间值;请参阅 https://pkg.go.dev/time#ParseDuration。nil 或零值表示没有建议,在这种情况下,会使用默认值。此字段的默认值为 60s。这个默认设置可能会改变。 |
15.1.59. .status.endpointPublishingStrategy.loadBalancer.providerParameters.aws.networkLoadBalancer
- 描述
- networkLoadBalancerParameters 包含 AWS 网络负载均衡器的配置参数。仅在类型为 NLB 时才存在。
- 类型
-
对象
15.1.60. .status.endpointPublishingStrategy.loadBalancer.providerParameters.gcp
- 描述
- GCP 提供特定于 GCP 负载均衡器的配置设置。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 gcp 字段。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| clientAccess 描述了如何对内部负载均衡器限制客户端访问。有效值为:* "Global": 指定带有全局客户端访问的内部负载均衡器,允许 VPC 中的任何区域与负载均衡器通信。https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing#global_access "local": 指定带有本地客户端访问的内部负载均衡器,这意味着只有同一区域(和 VPC)中的客户端才可以与负载均衡器通信。请注意,这是默认行为。https://cloud.google.com/load-balancing/docs/internal#client_access |
15.1.61. .status.endpointPublishingStrategy.loadBalancer.providerParameters.ibm
- 描述
- IBM 提供特定于 IBM Cloud 负载均衡器的配置设置。如果为空,则应用默认值。有关其默认值的详情,请查看特定的 ibm 字段。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| protocol 指定负载均衡器是否使用 PROXY 协议将连接转发到 IngressController。请参阅 "service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "proxy-protocol"" (位于 https://cloud.ibm.com/docs/containers?topic=containers-vpc-lbaas PROXY 协议)可用于支持它在将客户端连接的源地址转发到 IngressController 时进行通信客户端连接的源地址。使用 PROXY 协议可让 IngressController 报告这些源地址,而不是在 HTTP 标头和日志中报告负载均衡器的地址。请注意,如果您不使用使用 PROXY 协议的负载均衡器将连接转发到 IngressController,则 IngressController 上启用 PROXY 协议会导致连接失败。有关 PROXY 协议的信息,请参阅 http://www.haproxy.org/download/2.2/doc/proxy-protocol.txt。协议的有效值为 TCP、PROXY 和 omitted。省略时,这意味着没有建议,平台会被保留选择合理的默认值,这可能会随时间变化。当前的默认值是 TCP,不启用代理协议。 |
15.1.62. .status.endpointPublishingStrategy.nodePort
- 描述
- NodePort 包含 NodePortService 端点发布策略的参数。仅在 type 是 NodePortService 时才出现。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| protocol 指定 IngressController 是否需要传入连接使用普通 TCP,还是 IngressController 是否需要 PROXY 协议。PROXY 协议可以和支持它的负载均衡器一起使用,以便在将这些连接转发到 IngressController 时通信客户端连接的源地址。使用 PROXY 协议可让 IngressController 报告这些源地址,而不是在 HTTP 标头和日志中报告负载均衡器的地址。请注意,如果您不使用使用 PROXY 协议的负载均衡器将连接转发到 IngressController,则 IngressController 上启用 PROXY 协议会导致连接失败。有关 PROXY 协议的信息,请参阅 http://www.haproxy.org/download/2.2/doc/proxy-protocol.txt。以下值对于此字段有效:* 空字符串。* "TCP".* "PROXY".空字符串指定默认字符串,即没有 PROXY 协议的 TCP。请注意,默认值可能会改变。 |
15.1.63. .status.endpointPublishingStrategy.private
- 描述
- private 包含 Private 端点发布策略的参数。仅在类型为 Private 时才出现。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| protocol 指定 IngressController 是否需要传入连接使用普通 TCP,还是 IngressController 是否需要 PROXY 协议。PROXY 协议可以和支持它的负载均衡器一起使用,以便在将这些连接转发到 IngressController 时通信客户端连接的源地址。使用 PROXY 协议可让 IngressController 报告这些源地址,而不是在 HTTP 标头和日志中报告负载均衡器的地址。请注意,如果您不使用使用 PROXY 协议的负载均衡器将连接转发到 IngressController,则 IngressController 上启用 PROXY 协议会导致连接失败。有关 PROXY 协议的信息,请参阅 http://www.haproxy.org/download/2.2/doc/proxy-protocol.txt。以下值对于此字段有效:* 空字符串。* "TCP".* "PROXY".空字符串指定默认字符串,即没有 PROXY 协议的 TCP。请注意,默认值可能会改变。 |
15.1.64. .status.namespaceSelector
- 描述
- namespaceSelector 是使用的实际 namespaceSelector。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。 |
|
| 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。 |
|
| matchLabels 是 {key,value} 对的映射。MatchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。 |
15.1.65. .status.namespaceSelector.matchExpressions
- 描述
- matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。
- 类型
-
数组
15.1.66. .status.namespaceSelector.matchExpressions[]
- 描述
- 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。
- 类型
-
object
- 必填
-
key
-
operator
-
属性 | 类型 | 描述 |
---|---|---|
|
| key 是选择器应用到的标签键。 |
|
| 运算符代表一个键与一组值的关系。有效的运算符是 In、NotIn、Exists 和 DoesNotExist。 |
|
| 值是字符串值的数组。如果运算符是 In 或 NotIn,则值数组必须是非空的。如果运算符是 Exists 或 DoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。 |
15.1.67. .status.routeSelector
- 描述
- routeSelector 是使用的实际 routeSelector。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。 |
|
| 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。 |
|
| matchLabels 是 {key,value} 对的映射。MatchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。 |
15.1.68. .status.routeSelector.matchExpressions
- 描述
- matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。
- 类型
-
数组
15.1.69. .status.routeSelector.matchExpressions[]
- 描述
- 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。
- 类型
-
object
- 必填
-
key
-
operator
-
属性 | 类型 | 描述 |
---|---|---|
|
| key 是选择器应用到的标签键。 |
|
| 运算符代表一个键与一组值的关系。有效的运算符是 In、NotIn、Exists 和 DoesNotExist。 |
|
| 值是字符串值的数组。如果运算符是 In 或 NotIn,则值数组必须是非空的。如果运算符是 Exists 或 DoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。 |
15.1.70. .status.tlsProfile
- 描述
- TLSProfile 是生效的 TLS 连接配置。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 密码用于指定 TLS 握手期间协商的加密算法。Operator 可能会删除其操作对象不支持的条目。例如,要使用 DES-CBC3-SHA (yaml):密码: - DES-CBC3-SHA |
|
| minTLSVersion 用于指定 TLS 握手期间协商的 TLS 协议的最小版本。例如,要使用 TLS 版本 1.1、1.2 和 1.3 (yaml): minTLSVersion: VersionTLS11 注意:当前允许最高的 minTLSVersion 是 VersionTLS12 |