【云原生】Gateway API介绍

Gateway API介绍

文章目录

一、介绍

  • Gateway API是Kubernetes的官方项目,专注于Kubernetes中的L4(传输层)和L7(应用层)路由。这个项目代表了下一代Kubernetes入口、负载均衡和服务网格api。从一开始,它就被设计成通用的、富有表现力的和面向角色的。
  • 整体资源模型关注于3个独立的角色和他们期望管理的相应资源(以下是关系拓扑图):
  • 这个API中的大部分配置都包含在路由层中。这些特定于协议的资源(HTTPRoute、CRPCRoute等)为Ingress和Mesh提供了高级路由功能。
  • Gateway API的标志形象体现了该API的双重用途------它既支持南北向(Ingress入站)流量路由,也支持东西向(Service Mesh服务网格)流量路由,且这两种流量可以共用一套配置。

二、入口网关API

  • 在使用Gateway API管理入站流量时,Gateway资源会定义一个流量访问接入点,各类流量可通过该接入点跨多个环境进行路由转发------例如,仓集群外部到集群内部的南北向流量,就可以通过这个接入点进行路由。

  • 每个Gateway资源都会关联一个GatewayClass资源,GatewayClass用于描述负责处理该Gateway流量的网关控制器的具体类型;随后,各类路由资源(例如HTTPRoute)会关联到对应的Gateway资源。将这些不同的功能职责拆分到独立的资源对象中,是Gateway API面向角色设计理念的关键所在,同时这也允许在同一个集群内运行多种类型的网关控制器(由GatewayClass资源表征),且每种类型的控制器都可以拥有多个实例(由Gateway资源表征)。

三、面向服务网格的Gateway API

  • 当使用Gateway API管理服务网格时,情况会略有不同。由于集群中通常只会运行一个活跃的服务网格,因此不会用到Gateway和GatewayClass这两类资源;取而代之的是,各类路由资源(例如HTTPRoute)会直接与Service资源建立关联,这样一来,服务网格就能管控所有发送该Service的流量,同时还能保留Gateway API面向角色的设计理念。

四、Gateway API 概念

  • 以下这些设计目标,驱动着Gateway API的各项核心设计理念。它们充分展现了Gateway API皆在如何改进现有标准(例如Ingress资源)的思路与方向。
    • 面向角色设计:Gateway API由多种API资源构成,这些资源对应着企业组织中使用和配置Kubernetes服务网格的不同角色分工。
    • 可移植性:这并非一项改进,而是一项需要保持的设计原则。正如Ingress是一个拥有众多实现方案的通用规范一样,Gateway API也被设计为一个能够被多种实现方案支持的可移植性规范。
    • 表现力丰富:Gateway API资源原生支持多种核心功能,例如基于请求头的匹配、流量权重分配等,而这些功能在传统Ingress中,都只能通过自定义注解才能实现,在Gateway API中这些将通过字段进行配置。
    • 可扩展性:Gateway API允许在该API的不同层级关联自定义资源,这使得开发者可以在API架构的合适位置,实现精细化的定义话配置。
  • 其他一些值得注意的功能包括:
    • GatewayClass资源:GatewayClass对负载均衡的各类实现方案进行了规范化定义。借助这些资源类型,用户能够通过Kubernetes资源模型,轻松且清晰地了解当前集群中可使用的负载均衡能力类型。
    • 共享网关与跨命名空间支持:这项能力允许独立的路由资源关联到同一个网关,进而实现负载均衡器与虚拟IP(VIP)的共享。如此一来,不同团队(甚至是跨命名空间的团队)无需直接协同,就能完全地共享网关基础设施。
    • 类型化路由与类型化后端:Gateway API支持类型化的路由资源,同时也支持多种不同类型的后端。这一设计让该API具备了灵活适配各种类协议(如HTTP和gRPC)以及各类后端目标(如Kubernetes Service、存储桶或者函数)的能力。
    • 基于GAMMA计划的实验性服务网格支持能力:Gateway API支持将路由资源与Service资源建立关联,以此实现对服务网格和入站流量控制器的统一配置。

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

  • 无论是道路、电力设施、数据中心,还是Kubernetes集群,基础设施的建设初衷都是为了实现共享。然而,基础设施共享会引发一个普遍难题------如何在保障基础设施所有者管控权的同时,为基础设施使用者提供足够的灵活性?
  • Gateway API针对Kubernetes服务网格采用了面向角色的设计理念,以此在分布式灵活性与集群中管控之间取得平衡。它允许各类互不协同的团队,共用同一份网络基础设施(如硬件负载均衡器、云网络资源、集群托管的代理等),同时所有团队的使用行为都需遵循集群运维人员设定的策略与约束。
  • Gateway API设计所依托的角色体系,是基于三类典型的角色人设来定义的

六、官网地址

相关推荐
研究司马懿2 小时前
【云原生】Gateway API路由、重定向、修饰符等关键操作
云原生·gateway
小二·2 小时前
Go 语言系统编程与云原生开发实战(第8篇)消息队列实战:Kafka 事件驱动 × CQRS 架构 × 最终一致性(生产级落地)
云原生·golang·kafka
研究司马懿3 小时前
【云原生】初识Gateway API
云原生·gateway
java干货11 小时前
<span class=“js_title_inner“>微服务:把一个简单的问题,拆成 100 个网络问题</span>
微服务·云原生·架构
Spring_java_gg16 小时前
<span class=“js_title_inner“>面向云原生时代的 LLM 推理|Kthena入局了!!!</span>
云原生
eso198320 小时前
如何确保程序化广告系统中微服务架构的高可用性和可扩展性?
微服务·云原生·架构
江畔何人初21 小时前
/etc/profile,.profile,.bashrc三者区分
linux·运维·云原生
努力搬砖的咸鱼1 天前
部署你的第一个应用到 K8s
微服务·云原生·容器·kubernetes