• Ebpay

    Ebpay开源ALB ,为云原生 Kubernetes 网关领域再添新星
    2024-02-02

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


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


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


    为什么又做一个网关?

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

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



    ALB 有哪些独特的能力?


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


    隔离和多租户

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


    31.png


    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 中 为 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 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:  

        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 的开展,并诚邀更多的用户和开发者加入我们的行列,共同推进云原生技术的开展与创新。


    为您数字化转型给予更为完善的解决方案和更加优质的全栈服务。

    申请试用
    © 2026 All Rights Reserved. Ebpay 版权所有 备案号:京ICP备15011102号-2      
    电话咨询 在线客服 微信咨询 公众号