Consul API Gateway 0.4 引入了对新 beta 版 Kubernetes Gateway API 和 HTTP 路径重写的支持。
18 号 Consul API Gateway 0.4 版正式发布。在此版本中,率先引入了对 Kubernetes 网关 API 和 HTTP 路径重写的新 beta 版本的支持。Consul API Gateway 0.4 版标志着 API 中三个关键组件的增长:GatewayClass[1]、Gateway[2]和 HTTPRoute[3]。除了这三个 API 的成熟度之外,还引入了 URL 路径重写。
在 Kubernetes 社区中,规范必须符合某些准则,才能从 alpha 分类转移到 beta 分类。第一个要求是 API 必须被广泛实施和积极使用。HashiCorp 是 14 家提供 Kubernetes 网关 API 实现的公司之一。第二个要求是通过一致性测试以确保对所有资源的基本覆盖。最后,Kubernetes 特别兴趣小组 (SIG) 网络 API 审查员必须批准毕业到 beta。该 SIG 由来自多家公司的个人组成,包括 HashiCorp。
Beta 版升级在 API GatewayClass、Gateway 和 HTTPRoute 中至关重要,因为这意味着这些特定的 API 可以为未来的版本提供向后兼容性。这有助于减少任何故障的机会,例如停机。请注意,这些不是 Kubernetes 网关 API 的新功能,也不是 Consul API 网关新支持的功能,而是仅作为 beta 升级重新引入。
Kubernetes Gateway API 引入了一种处理进入 Kubernetes 环境的新方法。为此目的创建的核心资源之一是网关服务。网关服务是充当集群入口点的 Kubernetes 资源。它们可以部署为 LoadBalancer 或 NodePort 资源,并将流量请求路由到集群内的服务。网关服务支持不同的侦听器协议,如 HTTP/S、TCP 和 TCP+TLS,与 Ingress Controller 相比,为客户端提供了更广泛的连接类型。
GatewayClass 资源允许用户在将网关服务部署到 Kubernetes 环境中时模板化网关服务的配置方式。GatewayClass 配置存储在 Kubernetes 控制器(我们称之为 Consul API 网关控制器)中,并由新配置的网关服务检索。为了配置网关,需要一个 GatewayClass 定义,因此我们在安装时提供默认值,但用户可以根据需要配置不同的 GatewayClass。
一旦创建了网关服务并且客户端可以访问,用户必须将 HTTPRoutes 附加到他们的网关,以方便将请求转发到哪里以及应该使用什么协议。HTTPRoutes 专为 HTTP 请求的路由行为而设计,包括终止,但 Consul API Gateway 还支持其他路由类型,例如 TCPRoute。使用 HTTPRoutes,用户可以配置网关以查找请求属性,例如路径前缀、标头值和查询参数。在 Consul API Gateway 0.4 中,我们引入了另一个功能:路径重写。
在某些情况下,用户可能有一个他们希望客户端向其发送请求的主机名,但后端服务实际上使用的是不同的主机名。在 Consul API Gateway 0.4 中,HTTPRoutes 现在支持检测原始主机名并在将请求传递给相应的后端服务之前重写它的能力。以下是这些过滤器的示例:
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
name: http-filter-rewrite
spec:
hostnames:
- rewrite.example
rules:
- filters:
- type: URLRewrite
urlRewrite:
hostname: elsewhere.example
backendRefs:
- name: example-svc
weight: 1
port: 80
在本例中,客户机向 rewrite.example
发送一个请求,网关接受该请求,并在将请求转发到 example-svc
后端服务之前将主机名重写到 elsewhere.example
。这些重写还可以应用于路径前缀,这些前缀对请求的发送位置提供了更细粒度的控制,而不需要客户机向多个不同的主机名发送请求。这个特性目前正处于试验阶段,并没有被认为是前面提到的升级到测试阶段的一部分。
Consul API Gateway 0.4 现在对所有用户普遍可用。要开始使用,您需要运行 Consul 1.12。有关 Kubernetes Gateway API 的更多信息,请访问Kubernetes 网关 API 毕业到 Beta [4]博客文章。
出处:https://u.kubeinfo.cn/ZRRDTs
参考资料
[1]
GatewayClass: https://gateway-api.sigs.k8s.io/api-types/gatewayclass/
[2]
Gateway: https://gateway-api.sigs.k8s.io/api-types/gateway/
[3]
HTTPRoute: https://gateway-api.sigs.k8s.io/api-types/httproute/
[4]
Kubernetes 网关 API 毕业到 Beta : https://kubernetes.io/blog/2022/07/13/gateway-api-graduates-to-beta/
- END -