Kubernetes SIG Gateway API

Gateway API是由SIG-NETWORK(https://github.com/kubernetes/community/tree/master/sig-network)社区管理的开源项目。它包含了在 Kubernetes 中对服务网络建模的资源集合。这些资源包括 GatewayClass,Gateway,HTTPRoute,TCPRoute,Service等。他们可以由不同的供应商实现,同时保持通用的行业支持能力,以可扩展和面向角色的接口形式来实现Kubernetes服务网络的工业化支持。

资源参考

无论您是有兴趣使用Gateway API ,还是Gateway API 的实施者,以下资源都将帮助您提供必要的背景知识:

• 接口概述(https://gateway-api.sigs.k8s.io/concepts/api-overview)

• 用户指南(https://gateway-api.sigs.k8s.io/guides)

• 网关控制器实现(https://gateway-api.sigs.k8s.io/implementations)

• API 参考规范(https://gateway-api.sigs.k8s.io/references/spec)

• 社区链接(https://gateway-api.sigs.k8s.io/contributing/community)和开发者指南(https://gateway-api.sigs.k8s.io/contributing/devguide)

Gateway API 基本概念

Gateway API 的概念来源于以下的设计目标。它们展示了GatewayAPI与以往规范(例如Ingress)的关系,及特点。

• 面向角色 – 我们在实际部署中的网关,是由一系列 API 资源组成,这些资源共同描述Kubernetes 服务网络模型。

•可移植性 - 这虽然不是改进,但是作为新一代Kubernetes网络建模,是不可或缺的考虑方面。正如 Ingress 作为通用规范,拥有众多实现(https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/)一样,Gateway API 也被设计为可移植的,可在多个实现间切换。

• 更多表现能力 – Gateway API 资源支持许多核心功能,例如基于HTTP标头的匹配、流量权重和其他功能,这些功能在Ingress中只能通过自定义注释(annotation)实现。

• 可扩展 – Gateway  API 允许在 API 的各个层链接自定义资源。这使得在 API 结构中的适当位置进行精细定制成为可能。

其他一些值得注意的功能包括:

• GatewayClasses – GatewayClass指定了负载平衡实现的类型。这些类使用户能够轻松明确地了解通过 Kubernetes 资源模型提供哪些功能。

• 共享Gateways和跨命名空间(namespace)支持 - 它们允许独立的路由资源附加到同一gateway来共享负载均衡器和 VIP。这允许团队(甚至跨命名空间)安全地共享基础结构,而无需相互协调。

• 类型化路由(Typed Routes)和类型化后端服务 - Gateway API 支持类型化路由资源以及不同类型的后端。这使得 API 能够灵活地支持各种协议(如 HTTP 和 gRPC)和各种后端目标(如 Kubernetes 服务、存储或函数)。

为什么面向角色的 API 很重要?

无论是数据中心还是 Kubernetes 集群,基础设施都是为共享而构建的。然而,共享基础设施带来了一个共同的挑战 - 如何在保持基础设施所有者控制的同时为基础设施用户提供灵活性?

Gateway API 通过面向角色的 Kubernetes 服务网络设计来实现这一点,该设计在使用分布灵活性和集中控制之间取得平衡。它允许共享网络基础设施(例如,硬件负载平衡器、云网络、集群托管代理等)可以被许多上层不同的非协调团队(例如应用开发团队)使用,使用过程受到集群运营商设置的策略的约束。以下示例显示了这在实践中的工作原理。

群集操作员可以在某种GatewayClass(https://gateway-api.sigs.k8s.io/api-types/gatewayclass)下创建Gateway(https://gateway-api.sigs.k8s.io/api-types/gateway)资源。这个Gateway部署或配置代表的是基础网络资源。这时,集群操作员可以在Gateway上显式声明集中控制策略(如 TLS(https://gateway-api.sigs.k8s.io/guides/tls#downstream-tls)),允许什么样的Route(https://gateway-api.sigs.k8s.io/concepts/api-overview#attaching-routes-to-gateways)可以绑定在此Gateway上。通过Route和Gateway的绑定,应用开发者团队可以在自己的namespace(https://gateway-api.sigs.k8s.io/guides/multiple-ns)中发布自己的应用,并通过Gateway将应用发布出去供外部访问。

另外,应用开发者团队在自己的命名空间中,可以选择性的将某些Route(https://gateway-api.sigs.k8s.io/guides/http-routing)附加到共享Gateway上,从而允许独立控制各个应用的路由逻辑。

这样,集群操作员和应用开发者团队就可以分别操作于自己的控制平面,集群操作员控制网关的配置以控制入口策略,而应用开发者团队负责调配跟应用相关的路由策略(例如根据url或者header等信息实现应用流量分流(https://gateway-api.sigs.k8s.io/guides/traffic-splitting)等等)。

这种灵活性使 Gateway API 能够适应截然不同的组织模型和实现,但同时保持可移植的特性。

Gateway适合于哪些场景?

Gateway API 是一个 SIG 网络(https://github.com/kubernetes/community/tree/master/sig-network)项目,旨在改进和标准化 Kubernetes 中的服务网络。当前和正在进行的实现包括BIG-IP,Contour,Emissary-Ingress,Google Kubernetes引擎(GKE),NGINX,Istio,Kong和Traefik等等。读者可以查看实现参考(https://gateway-api.sigs.k8s.io/implementations/),了解支持 Gateway 的最新项目和产品。如果您有兴趣使用网关 API 贡献或构建实现,也非常欢迎参与其中(https://gateway-api.sigs.k8s.io/contributing/community)!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值