新闻|灵雀云开源ALB ,为云原生 Kubernetes 网关领域再添新星

2024-01-26 14:09:59 浏览数 (3)

ALB (Another Load Balancer)是一款由灵雀云倾力打造的云原生 Kubernetes 网关,近日,正式宣布将其在Github上开源。ALB 的诞生,旨在满足日益增长的云原生应用需求,为开发者提供更为强大和灵活的网关解决方案。

ALB 支持在一个集群内创建多个隔离的网关实例供不同租户使用,支持 Ingress、Gateway API、四层服务暴露和自定义流量规则 DSL,能够轻松应对各种复杂场景的流量调度需求。

ALB 是灵雀云在用户侧多年实践和经验积累的结晶。作为一家始终致力于云原生技术研究和应用的领先企业,灵雀云在网关领域积累了丰富的实践经验。ALB 的开源,不仅是对灵雀云多年研发成果的分享,更是对云原生社区的一份献礼。

目前,ALB项目代码已经在Github上开源,项目地址为:https://github.com/alauda/alb。欢迎更多的技术开发者和爱好者前去试用。

为什么又做一个网关?

面对社区中众多优秀的云原生开源网关项目,灵雀云为何决定再开发一个网关呢?这源于灵雀云对用户需求深入的理解和技术前瞻性的洞察。早在 2015 年,当 Kubernetes 社区主要对外暴露方式还是 NodePort,Ingress API 尚未成熟之际,灵雀云便基于 OpenResty 开始了自研网关的探索之路。历经多年的迭代和发展,ALB 已在数百个用户的生产环境中成功落地,并承载了大规模的业务流量。

为了满足更多社区用户对云原生网关的需求,并汲取社区用户的反馈与协助,灵雀云决定将 ALB 开源。我们坚信,开源的力量能够推动 ALB 不断进化,为云原生领域带来更多可能性。

ALB 有哪些独特的能力?

ALB 相比其他开源网关项目提供了以下独特的能力:

隔离和多租户

通过使用 ALB Operator,用户可以在一个集群内创建和管理多个 ALB 网关实例,每个租户和应用都可以使用一组独占的 ALB 网关实例,避免了流量的冲突和资源争抢。

Ingress 和 GatewayAPI 协议支持

ALB 同时支持了主流的 Ingress 标准,以及日趋流行的 Gateway API 标准,用户可以根据自己的需求进行选择,无需担心标准变化带来的影响。

强大的自定义规则

对于标准 Ingress 和 Gateway 不支持的复杂流量调度规则,ALB 提供了一组自定义的流量匹配 DSL,用户可以根据自己的需求来定义复杂的流量规则。

在灰度发布和 A/B test 的场景,我们需要将符合特征的流量导入到一个特定的服务实例。例如我们希望将 HTTP 流量路径前缀为/app-a 或者 /app-b 且 HTTP 方法为 POST ,且URL 参数包含group=vip ,且域名为*.app.com ,且 Header 中 location 为 east-1east-2 ,且 Cookie 中包含 uid ,且源 IP 在 1.1.1.1-1.1.1.100 范围内的流量中 50% 比例采样发送给 hello-world,那么我们可以定义下面一个流量规则:

"

apiVersion: crd.alauda.io/v1

kind: Rule

metadata:

labels:

alb2.cpaas.io/frontend: alb-demo-00080 # required, indicate the Frontend to which this rule belongs

alb2.cpaas.io/name: alb-demo # required, indicate the ALB to which this rule belongs

name: alb-demo-00080-topu

namespace: kube-system

spec:

backendProtocol: "" # as same as Frontend

certificate_name: "" # as same as Frontend

dslx: # this rule matches url starts with /app-a or /app-b and method is post,and url param's group is vip, and host is *.app.com, and header's location is east-1 or east-2 and has a cookie name is uid, and source IPs come from 1.1.1.1-1.1.1.100

- type: METHOD

values:

- - EQ

- POST

- type: URL

values:

- - STARTS_WITH

- /app-a

- - STARTS_WITH

- /app-b

- type: PARAM

key: group

values:

- - EQ

- vip

- type: HOST

values:

- - ENDS_WITH

- .app.com

- type: HEADER

key: LOCATION

values:

- - IN

- east-1

- east-2

- type: COOKIE

key: uid

values:

- - EXIST

- type: SRC_IP

values:

- - RANGE

- "1.1.1.1"

- "1.1.1.100"

enableCORS: false

priority: 5 # the lower the number, the higher the priority

serviceGroup:

services:

- name: hello-world

namespace: default

port: 80

weight: 50

"

ALB 经过数年的实践与迭代,已在众多用户的生产环境中得到广泛应用。随着云原生技术的迅猛发展,ALB 的应用前景必定更加广阔。

未来,我们将持续优化 ALB 的性能和稳定性,以满足更高的业务需求。同时进一步丰富其功能特性,以适应业务的多样性。我们计划在未来的版本中增加更多的流量调度策略,满足更复杂的业务场景。

此外,我们将积极参与到社区,借助社区的力量推动 ALB 的发展,并诚邀更多的用户和开发者加入我们的行列,共同推进云原生技术的发展与创新。


ALB联系信息:

Github:https://github.com/alauda/alb

1 人点赞