Alauda Container Platform 支持 Kubernetes 生态系统中的多种 ingress 流量规范。 本文档对它们(Service、Ingress、Gateway API 和 ALB Rule)进行比较,以帮助用户做出正确选择。
LoadBalancer 类型的 Service、Gateway API 和 ALB Rules 都可以将 L4 流量暴露到外部。这里推荐使用 LoadBalancer 类型的 Service 方式。 Gateway API 和 ALB Rules 都是由 ALB 实现的,ALB 是一个用户空间代理,在处理 L4 流量时,其性能相比 LoadBalancer 类型的 Service 会显著下降。
虽然 Ingress、GatewayAPI 和 ALB Rules 都可以将 L7 流量暴露到外部,但它们在能力和隔离模型上有所不同。
Ingress 是 Kubernetes 社区采用的标准规范,推荐作为默认使用方式。 Ingress 由平台管理员管理的 ALB 实例处理。
GatewayAPI 提供了更灵活的隔离模式,但其成熟度不及 Ingress。 通过使用 GatewayAPI,开发人员可以创建自己的隔离 ALB 实例来处理 GatewayAPI 规则。 因此,如果需要将 ALB 实例的创建和管理权限下放给开发人员,则需要选择使用 GatewayAPI。
ALB Rule(UI 中的 Load Balancer)提供了最灵活的流量匹配规则和最多的功能。实际上,Ingress 和 GatewayAPI 都是通过转换为 ALB Rules 来实现的。 然而,ALB Rule 比 Ingress 和 GatewayAPI 更复杂,且不是社区标准的 API。因此,我们建议仅在 Ingress 和 GatewayAPI 无法满足需求时使用它。