网关类¶
自 v0.5.0 起的标准通道
GatewayClass
资源是 GA,并且自 v0.5.0
起已成为标准通道的一部分。有关发布通道的更多信息,请参阅我们的 版本控制指南.
网关类 是基础设施提供商定义的集群范围资源。此资源代表可以实例化的网关类。
注意:网关类与
networking.IngressClass
资源 的功能相同。
kind: GatewayClass
metadata:
name: cluster-gateway
spec:
controllerName: "example.net/gateway-controller"
我们预计基础设施提供商将为用户创建一个或多个 GatewayClasses
。它允许将 Gateways
的实现机制(例如控制器)与用户分离。例如,基础设施提供商可以创建两个名为 internet
和 private
的 GatewayClasses
来反映定义面向互联网的应用程序与私有内部应用程序的 Gateways
。
kind: GatewayClass
metadata:
name: internet
...
---
kind: GatewayClass
metadata:
name: private
...
这些类的用户将不需要知道 internet
和 private
的实现方式。相反,用户只需要了解创建 Gateway
所用类的结果属性。
网关类参数¶
Gateway
API 的提供者可能需要将参数传递给他们的控制器作为类定义的一部分。这是使用 GatewayClass.spec.parametersRef
字段完成的
# GatewayClass for Gateways that define Internet-facing applications.
kind: GatewayClass
metadata:
name: internet
spec:
controllerName: "example.net/gateway-controller"
parametersRef:
group: example.net/v1alpha1
kind: Config
name: internet-gateway-config
---
apiVersion: example.net/v1alpha1
kind: Config
metadata:
name: internet-gateway-config
spec:
ip-address-pool: internet-vips
...
鼓励使用自定义资源来处理 GatewayClass.spec.parametersRef
,但实现可能在需要时诉诸于使用 ConfigMap。
网关类状态¶
GatewayClasses
必须由提供者进行验证,以确保配置的参数有效。类的有效性将通过 GatewayClass.status
向用户发出信号
kind: GatewayClass
...
status:
conditions:
- type: Accepted
status: False
...
一个新的 GatewayClass
将从 Accepted
条件设置为 False
开始。此时,控制器尚未看到配置。控制器处理完配置后,该条件将设置为 True
kind: GatewayClass
...
status:
conditions:
- type: Accepted
status: True
...
如果 GatewayClass.spec
中存在错误,则条件将不为空,并将包含有关错误的信息。
kind: GatewayClass
...
status:
conditions:
- type: Accepted
status: False
Reason: BadFooBar
Message: "foobar" is an FooBar.
网关类控制器选择¶
GatewayClass.spec.controller
字段确定负责管理 GatewayClass
的控制器实现。该字段的格式是不透明的,特定于特定的控制器。由给定控制器字段选择的网关类取决于集群中各种控制器(s)如何解释此字段。
建议控制器作者/部署使用他们管理控制下的域/路径组合(例如,管理所有以 example.net
开头的 controller
的控制器是 example.net
域的所有者)来使他们的选择唯一,以避免冲突。
控制器版本控制可以通过将控制器的版本编码到路径部分来完成。一个示例方案可能是(类似于容器 URI)
example.net/gateway/v1 // Use version 1
example.net/gateway/v2.1 // Use version 2.1
example.net/gateway // Use the default version