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 是 precise,则如果 http 主机头等于 Host,则该请求与此规则匹配。 2. 如果 host 是通配符,则如果 http 主机头等于通配符规则的后缀(删除第一个标签),则该请求与此规则匹配。

    • rules.http (HTTPIngressRuleValue)

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

      • rules.http.paths ([]HTTPIngressPath), 必需

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

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

        HTTPIngressPath 将路径与后端关联。匹配该路径的传入 url 将转发到后端。

        • rules.http.paths.backend (IngressBackend), 必需

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

        • rules.http.paths.pathType (string), 必需

          pathType 确定路径匹配的解释。PathType 可以是以下值之一:* Exact:完全匹配 URL 路径。* Prefix:基于由 '/' 分割的 URL 路径前缀进行匹配。匹配是基于路径元素的逐个元素进行的。路径元素是指由 '/' 分隔符分割的路径中的标签列表。如果请求的路径的每个 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 流量的密钥的名称。此字段是可选的,允许仅基于 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.name (string), 必需

      name 是引用的服务。该服务必须与 Ingress 对象位于同一命名空间中。

    • service.port (ServiceBackendPort)

      引用服务的端口。IngressServiceBackend 需要端口名称或端口号。

      ServiceBackendPort 是引用的服务端口。

      • service.port.name (string)

        name 是服务上的端口名称。这是与 “Number” 互斥的设置。

      • service.port.number (int32)

        number 是服务上的数字端口号(例如 80)。这是与 “Name” 互斥的设置。

IngressStatus

IngressStatus 描述 Ingress 的当前状态。


  • loadBalancer (IngressLoadBalancerStatus)

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

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

    • loadBalancer.ingress ([]IngressLoadBalancerIngress)

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

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

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

      • loadBalancer.ingress.hostname (string)

        hostname 针对基于 DNS 的负载均衡器入口点进行设置。

      • loadBalancer.ingress.ip (字符串)

        ip 针对基于 IP 的负载均衡器入口点进行设置。

      • loadBalancer.ingress.ports ([]IngressPortStatus)

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

        ports 提供有关此负载均衡器暴露的端口的信息。

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

        • loadBalancer.ingress.ports.port (int32),必需

          port 是入口端口的端口号。

        • loadBalancer.ingress.ports.protocol (字符串),必需

          protocol 是入口端口的协议。支持的值为:“TCP”、“UDP”、“SCTP”

        • loadBalancer.ingress.ports.error (字符串)

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

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

IngressList

IngressList 是 Ingress 的集合。


操作


get 读取指定的 Ingress

HTTP 请求

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

参数

  • name (路径中):字符串,必需

    Ingress 的名称

  • namespace (路径中):字符串,必需

    命名空间

  • pretty (查询中):字符串

    pretty

响应

200 (Ingress): OK

401: 未授权

get 读取指定 Ingress 的状态

HTTP 请求

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

参数

  • name (路径中):字符串,必需

    Ingress 的名称

  • namespace (路径中):字符串,必需

    命名空间

  • pretty (查询中):字符串

    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): 已创建

202 (Ingress): 已接受

401: 未授权

update 替换指定的 Ingress

HTTP 请求

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

参数

  • name (路径中):字符串,必需

    Ingress 的名称

  • namespace (路径中):字符串,必需

    命名空间

  • body: Ingress,必需

  • dryRun (查询中):字符串

    dryRun

  • fieldManager (查询中):字符串

    fieldManager

  • fieldValidation (查询中):字符串

    fieldValidation

  • pretty (查询中):字符串

    pretty

响应

200 (Ingress): OK

201 (Ingress): 已创建

401: 未授权

update 替换指定 Ingress 的状态

HTTP 请求

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

参数

  • name (路径中):字符串,必需

    Ingress 的名称

  • namespace (路径中):字符串,必需

    命名空间

  • body: Ingress,必需

  • dryRun (查询中):字符串

    dryRun

  • fieldManager (查询中):字符串

    fieldManager

  • fieldValidation (查询中):字符串

    fieldValidation

  • pretty (查询中):字符串

    pretty

响应

200 (Ingress): OK

201 (Ingress): 已创建

401: 未授权

patch 部分更新指定的 Ingress

HTTP 请求

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

参数

  • name (路径中):字符串,必需

    Ingress 的名称

  • namespace (路径中):字符串,必需

    命名空间

  • body: Patch,必需

  • dryRun (查询中):字符串

    dryRun

  • fieldManager (查询中):字符串

    fieldManager

  • fieldValidation (查询中):字符串

    fieldValidation

  • force (查询中):布尔值

    force

  • pretty (查询中):字符串

    pretty

响应

200 (Ingress): OK

201 (Ingress): 已创建

401: 未授权

patch 部分更新指定 Ingress 的状态

HTTP 请求

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

参数

  • name (路径中):字符串,必需

    Ingress 的名称

  • namespace (路径中):字符串,必需

    命名空间

  • body: Patch,必需

  • dryRun (查询中):字符串

    dryRun

  • fieldManager (查询中):字符串

    fieldManager

  • fieldValidation (查询中):字符串

    fieldValidation

  • force (查询中):布尔值

    force

  • pretty (查询中):字符串

    pretty

响应

200 (Ingress): OK

201 (Ingress): 已创建

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 项目的其他位置进行。

上次修改时间:2024 年 8 月 28 日下午 6:01 PST:更新 v1.31 的生成 API 参考 (8ba98c79c1)