Ingress

Ingress 是一组规则,允许入站连接到达由后端定义的端点。

apiVersion: networking.k8s.io/v1

import "k8s.io/api/networking/v1"

Ingress

Ingress 是一组规则,允许入站连接到达由后端定义的端点。Ingress 可以配置为给服务提供外部可访问的 URL、负载均衡流量、终止 SSL、提供基于名称的虚拟主机等。


IngressSpec

IngressSpec 描述了用户希望存在的 Ingress。


  • defaultBackend (IngressBackend)

    defaultBackend 是应处理不匹配任何规则的请求的后端。如果未指定 Rules,则必须指定 DefaultBackend。如果未设置 DefaultBackend,则对不匹配任何规则的请求的处理将由 Ingress 控制器负责。

  • ingressClassName (string)

    ingressClassName 是 IngressClass 集群资源的名称。Ingress 控制器实现使用此字段来了解它们是否应该服务此 Ingress 资源,通过传递性连接(控制器 -> IngressClass -> Ingress 资源)。尽管 kubernetes.io/ingress.class 注解(简单的常量名称)从未正式定义,但它得到了 Ingress 控制器的广泛支持,用于在 Ingress 控制器和 Ingress 资源之间创建直接绑定。新创建的 Ingress 资源应优先使用此字段。然而,即使该注解已被正式弃用,为了向后兼容起见,Ingress 控制器仍应遵守该注解(如果存在)。

  • rules ([]IngressRule)

    原子性:在合并期间将被替换

    rules 是用于配置 Ingress 的主机规则列表。如果未指定,或没有规则匹配,所有流量都将发送到默认后端。

    IngressRule 表示将指定主机下的路径映射到相关后端服务的规则。入站请求首先根据主机匹配进行评估,然后路由到与匹配的 IngressRuleValue 关联的后端。

    • rules.host (string)

      host 是网络主机的完全限定域名,如 RFC 3986 所定义。请注意以下与 RFC 3986 中 URI 的 "host" 部分的偏差:1. 不允许 IP 地址。目前 IngressRuleValue 只能应用于父 Ingress 的 Spec 中的 IP。2. : 分隔符不被尊重,因为不允许端口。目前 Ingress 的端口对于 http 是隐式的 :80,对于 https 是 :443。这些在未来都可能改变。入站请求在 IngressRuleValue 之前与主机进行匹配。如果主机未指定,Ingress 将根据指定的 IngressRuleValue 路由所有流量。

      host 可以是“精确匹配”(precise),即不带网络主机终止点的域名(例如,“foo.bar.com”),也可以是“通配符”(wildcard),即前面带有单个通配符标签的域名(例如,“*.foo.com”)。通配符字符 '*' 必须单独出现在第一个 DNS 标签中,并且只能匹配单个标签。您不能单独使用通配符标签(例如,Host == "*")。请求将根据以下方式与 Host 字段进行匹配:1. 如果 host 是精确匹配,当 http 主机头与 Host 相同时,请求将匹配此规则。2. 如果 host 是通配符,当 http 主机头等于通配符规则的后缀(删除第一个标签)时,请求将匹配此规则。

    • rules.http (HTTPIngressRuleValue)

      HTTPIngressRuleValue 是指向后端的 http 选择器列表。在示例中:http:///? -> backend 其中 url 的部分对应于 RFC 3986,此资源将用于匹配最后一个 '/' 之后和第一个 '?' 或 '#' 之前的所有内容。

      • rules.http.paths ([]HTTPIngressPath), required

        原子性:在合并期间将被替换

        paths 是将请求映射到后端的路径集合。

        HTTPIngressPath 将一个路径与一个后端相关联。匹配路径的入站 URL 将被转发到后端。

        • rules.http.paths.backend (IngressBackend), required

          backend 定义了流量将转发到的服务端点。

        • rules.http.paths.pathType (string), required

          pathType 确定路径匹配的解释。PathType 可以是以下值之一:* Exact:精确匹配 URL 路径。* Prefix:基于以 '/' 分隔的 URL 路径前缀进行匹配。匹配是逐个路径元素进行的。路径元素是指通过 '/' 分隔符分割的路径中的标签列表。请求与路径 p 匹配,如果 p 的每个元素都是请求路径的 p 的元素级前缀。请注意,如果路径的最后一个元素是请求路径最后一个元素的子串,则不匹配(例如,/foo/bar 匹配 /foo/bar/baz,但不匹配 /foo/barbaz)。

          • ImplementationSpecific:路径匹配的解释取决于 IngressClass。实现可以将此视为独立的 PathType,或将其与 Prefix 或 Exact 路径类型相同处理。实现必须支持所有路径类型。
        • rules.http.paths.path (string)

          path 将与入站请求的路径进行匹配。当前它可能包含 RFC 3986 中 URL 的常规“path”部分不允许的字符。路径必须以 '/' 开头,并且在使用 PathType 值为 "Exact" 或 "Prefix" 时必须存在。

  • tls ([]IngressTLS)

    原子性:在合并期间将被替换

    tls 表示 TLS 配置。目前 Ingress 只支持一个 TLS 端口,即 443。如果此列表的多个成员指定了不同的主机,它们将根据 SNI TLS 扩展指定的服务器名称在同一端口上进行多路复用,前提是满足此 Ingress 的 Ingress 控制器支持 SNI。

    IngressTLS 描述了与 ingress 相关的传输层安全性。

    • tls.hosts ([]string)

      原子性:在合并期间将被替换

      hosts 是 TLS 证书中包含的主机列表。此列表中的值必须与 tlsSecret 中使用的名称/名称匹配。如果未指定,则默认为实现此 Ingress 的负载均衡器控制器使用的通配符主机设置。

    • tls.secretName (string)

      secretName 是用于在端口 443 上终止 TLS 流量的 Secret 的名称。字段是可选的,以允许仅基于 SNI 主机名进行 TLS 路由。如果监听器中的 SNI 主机与 IngressRule 使用的 "Host" 头字段冲突,则 SNI 主机用于终止,而 "Host" 头的值用于路由。

IngressBackend

IngressBackend 描述了给定服务和端口的所有端点。


  • resource (TypedLocalObjectReference)

    resource 是 Ingress 对象命名空间中另一个 Kubernetes 资源的 ObjectRef。如果指定了 resource,则不能同时指定 service.Name 和 service.Port。这是与 "Service" 互斥的设置。

  • service (IngressServiceBackend)

    service 引用一个服务作为后端。这是与 "Resource" 互斥的设置。

    IngressServiceBackend 引用一个 Kubernetes Service 作为 Backend。

    • service.name (string), required

      name 是引用的服务。服务必须存在于与 Ingress 对象相同的命名空间中。

    • service.port (ServiceBackendPort)

      referenced service 的 port。IngressServiceBackend 需要一个端口名称或端口号。

      ServiceBackendPort 是被引用的服务端口。

      • service.port.name (string)

        name 是 Service 上端口的名称。这是与 "Number" 互斥的设置。

      • service.port.number (int32)

        number 是 Service 上的数值端口号(例如,80)。这是与 "Name" 互斥的设置。

IngressStatus

IngressStatus 描述了 Ingress 的当前状态。


  • loadBalancer (IngressLoadBalancerStatus)

    loadBalancer 包含负载均衡器的当前状态。

    IngressLoadBalancerStatus 表示负载均衡器的状态。

    • loadBalancer.ingress ([]IngressLoadBalancerIngress)

      原子性:在合并期间将被替换

      ingress 是一个列表,包含负载均衡器的入口点。

      IngressLoadBalancerIngress 表示负载均衡器入口点的状态。

      • loadBalancer.ingress.hostname (string)

        hostname 是为基于 DNS 的负载均衡器入口点设置的。

      • loadBalancer.ingress.ip (string)

        ip 是为基于 IP 的负载均衡器入口点设置的。

      • loadBalancer.ingress.ports ([]IngressPortStatus)

        原子性:在合并期间将被替换

        ports 提供有关此 LoadBalancer 公开的端口的信息。

        IngressPortStatus 表示服务端口的错误状况

        • loadBalancer.ingress.ports.port (int32), required

          port 是入口端口的端口号。

        • loadBalancer.ingress.ports.protocol (string), required

          protocol 是入口端口的协议。支持的值为:"TCP", "UDP", "SCTP"

        • loadBalancer.ingress.ports.error (string)

          error 用于记录服务端口的问题。错误的格式应符合以下规则:- 内置错误值应在此文件中指定,并使用 CamelCase 名称。

          • 特定于云提供商的错误值必须具有符合 foo.example.com/CamelCase 格式的名称。

IngressList

IngressList 是 Ingress 的集合。


操作


get 读取指定的 Ingress

HTTP 请求

GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}

参数

  • name (在路径中): string,必填

    Ingress 的名称

  • namespace (在路径中): string,必填

    命名空间

  • pretty (在查询中): string

    pretty

响应

200 (Ingress): OK

401: 未授权

get 读取指定 Ingress 的状态

HTTP 请求

GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status

参数

  • name (在路径中): string,必填

    Ingress 的名称

  • namespace (在路径中): string,必填

    命名空间

  • pretty (在查询中): string

    pretty

响应

200 (Ingress): OK

401: 未授权

list 列出或监视 Ingress 类型的对象

HTTP 请求

GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses

参数

响应

200 (IngressList): OK

401: 未授权

list 列出或监视 Ingress 类型的对象

HTTP 请求

GET /apis/networking.k8s.io/v1/ingresses

参数

响应

200 (IngressList): OK

401: 未授权

create 创建一个 Ingress

HTTP 请求

POST /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses

参数

响应

200 (Ingress): OK

201 (Ingress): Created

202 (Ingress): Accepted

401: 未授权

update 替换指定的 Ingress

HTTP 请求

PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}

参数

  • name (在路径中): string,必填

    Ingress 的名称

  • namespace (在路径中): string,必填

    命名空间

  • body: Ingress, required

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • pretty (在查询中): string

    pretty

响应

200 (Ingress): OK

201 (Ingress): Created

401: 未授权

update 替换指定 Ingress 的状态

HTTP 请求

PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status

参数

  • name (在路径中): string,必填

    Ingress 的名称

  • namespace (在路径中): string,必填

    命名空间

  • body: Ingress, required

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • pretty (在查询中): string

    pretty

响应

200 (Ingress): OK

201 (Ingress): Created

401: 未授权

patch 部分更新指定的 Ingress

HTTP 请求

PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}

参数

  • name (在路径中): string,必填

    Ingress 的名称

  • namespace (在路径中): string,必填

    命名空间

  • body: Patch,必需

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • force (在查询中): boolean

    force

  • pretty (在查询中): string

    pretty

响应

200 (Ingress): OK

201 (Ingress): Created

401: 未授权

patch 部分更新指定 Ingress 的状态

HTTP 请求

PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status

参数

  • name (在路径中): string,必填

    Ingress 的名称

  • namespace (在路径中): string,必填

    命名空间

  • body: Patch,必需

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • force (在查询中): boolean

    force

  • pretty (在查询中): string

    pretty

响应

200 (Ingress): OK

201 (Ingress): Created

401: 未授权

delete 删除一个 Ingress

HTTP 请求

DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}

参数

响应

200 (Status): OK

202 (Status): 已接受

401: 未授权

deletecollection 删除 Ingress 集合

HTTP 请求

DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses

参数

响应

200 (Status): OK

401: 未授权

本页面是自动生成的。

如果你打算报告此页面存在的问题,请在问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

上次修改时间:2025 年 4 月 9 日太平洋标准时间下午 6:36:更新 v1.32 的 API 参考文档 (a3b579d035)