Ingress
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
Ingress
Ingress 是一组规则,允许入站连接到达由后端定义的端点。Ingress 可以配置为给服务提供外部可访问的 URL、负载均衡流量、终止 SSL、提供基于名称的虚拟主机等。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata (ObjectMeta)
标准对象的元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (IngressSpec)
spec 是 Ingress 的期望状态。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (IngressStatus)
status 是 Ingress 的当前状态。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
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 需要一个端口名称或端口号。
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 公开的端口的信息。
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 的集合。
items ([]Ingress), required
items 是 Ingress 列表。
apiVersion (string)
APIVersion 定义了此对象表示形式的版本化模式。服务器应将已识别的模式转换为最新的内部值,并可能拒绝未识别的值。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind (string)
Kind 是一个字符串值,表示此对象所代表的 REST 资源。服务器可以从客户端提交请求的端点推断出此值。无法更新。采用 CamelCase。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata (ListMeta)
标准对象的元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
操作
get
读取指定的 Ingress
HTTP 请求
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}
参数
响应
200 (Ingress): OK
401: 未授权
get
读取指定 Ingress 的状态
HTTP 请求
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status
参数
响应
200 (Ingress): OK
401: 未授权
list
列出或监视 Ingress 类型的对象
HTTP 请求
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses
参数
namespace (在路径中): string,必填
allowWatchBookmarks (在查询中): boolean
continue (在查询中): string
fieldSelector (在查询中): string
labelSelector (在查询中): string
limit (在查询中): integer
pretty (在查询中): string
resourceVersion (在查询中): string
resourceVersionMatch (在查询中): string
sendInitialEvents (在查询中): boolean
timeoutSeconds (在查询中): integer
watch (在查询中): boolean
响应
200 (IngressList): OK
401: 未授权
list
列出或监视 Ingress 类型的对象
HTTP 请求
GET /apis/networking.k8s.io/v1/ingresses
参数
allowWatchBookmarks (在查询中): boolean
continue (在查询中): string
fieldSelector (在查询中): string
labelSelector (在查询中): string
limit (在查询中): integer
pretty (在查询中): string
resourceVersion (在查询中): string
resourceVersionMatch (在查询中): string
sendInitialEvents (在查询中): boolean
timeoutSeconds (在查询中): integer
watch (在查询中): boolean
响应
200 (IngressList): OK
401: 未授权
create
创建一个 Ingress
HTTP 请求
POST /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses
参数
namespace (在路径中): string,必填
body: Ingress, required
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
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
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
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
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
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
fieldManager (在查询中): string
fieldValidation (在查询中): string
force (在查询中): boolean
pretty (在查询中): string
响应
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
fieldManager (在查询中): string
fieldValidation (在查询中): string
force (在查询中): boolean
pretty (在查询中): string
响应
200 (Ingress): OK
201 (Ingress): Created
401: 未授权
delete
删除一个 Ingress
HTTP 请求
DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}
参数
name (在路径中): string,必填
Ingress 的名称
namespace (在路径中): string,必填
body: DeleteOptions
dryRun (在查询中): string
gracePeriodSeconds (在查询中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查询中): boolean
pretty (在查询中): string
propagationPolicy (在查询中): string
响应
200 (Status): OK
202 (Status): 已接受
401: 未授权
deletecollection
删除 Ingress 集合
HTTP 请求
DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses
参数
namespace (在路径中): string,必填
body: DeleteOptions
continue (在查询中): string
dryRun (在查询中): string
fieldSelector (在查询中): string
gracePeriodSeconds (在查询中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查询中): boolean
labelSelector (在查询中): string
limit (在查询中): integer
pretty (在查询中): string
propagationPolicy (在查询中): string
resourceVersion (在查询中): string
resourceVersionMatch (在查询中): string
sendInitialEvents (在查询中): boolean
timeoutSeconds (在查询中): integer
响应
200 (Status): OK
401: 未授权
本页面是自动生成的。
如果你打算报告此页面存在的问题,请在问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。