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

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 belongsalb2.cpaas.io/name: alb-demo            # required, indicate the ALB to which this rule belongsname: alb-demo-00080-topunamespace: kube-system
spec:backendProtocol: ""                       # as same as Frontendcertificate_name: ""                      # as same as Frontenddslx:                                     # 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: METHODvalues:- - EQ- POST- type: URLvalues:- - STARTS_WITH- /app-a- - STARTS_WITH- /app-b- type: PARAMkey: groupvalues:- - EQ- vip- type: HOST values:- - ENDS_WITH- .app.com- type: HEADERkey: LOCATION values:- - IN- east-1- east-2- type: COOKIEkey: uidvalues:- - EXIST - type: SRC_IPvalues:- - RANGE- "1.1.1.1"- "1.1.1.100"enableCORS: falsepriority: 5                              # the lower the number, the higher the priorityserviceGroup:services:- name: hello-worldnamespace: defaultport: 80weight: 50

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/742671.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle PL/SQL Programming 第9章:Numbers 读书笔记

总的目录和进度,请参见开始读 Oracle PL/SQL Programming 第6版 本章谈3点: 可使用的数字数据类型如何在数字和文本间转换PL/SQL 内置数值函数 Numeric Datatypes NUMBER:平台无关的实现,适合处理货币金额PLS_INTEGER 和 BINA…

前端面试题汇总

基础面试题 1.new 操作符做了那些事 function Fun(name){this.name name } Fun.prototype.sayHi funtion(){console.log(this.name) }function mockCreate(fn, ...args){let obj Object.create({}) // 创建一个空对象Object.setPrototypeOf(obj, fn.prototype) // 空对象…

C语言学习笔记day4

1. putchar 1.1 功能: 在终端输出一个字符 注意: 1.只能打印 一个字符 2.只能打印字符 示例: putchar(a); putchar(100); putchar(a-32); 2. getchar 2…

day02vue学习

day02 一、今日学习目标 1.指令补充 指令修饰符v-bind对样式增强的操作v-model应用于其他表单元素 2.computed计算属性 基础语法计算属性vs方法计算属性的完整写法成绩案例 3.watch侦听器 基础写法完整写法 4.综合案例 (演示) 渲染 / 删除 / 修…

速卖通批量注册买家号安全吗?怎么弄?

在速卖通等跨境电商平台上,买家号的注册与养号过程繁琐而复杂。传统的手动注册方式效率低下,难以满足大规模的需求。而跨境智星系统凭借其全自动化的功能,能够轻松实现买家号的批量注册与养号,大大提高了效率。 使用跨境智星系统进…

200W年薪的大佬 随手丢给我“Spring速成宝典”看完这些知识点直接定级P7

面试官:答的很好,最后一个问题:如果没有Spring,你打算怎么开展工作? 这个思考了几分钟后,程序员小建是这么回答的:Spring的核心源码,比如:IOC、AOP、Spring事务、MVC原理…

Explain详解与索引优化最佳实践

Explain工具介绍 使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在select语句之前增加explain关键字,MySQL会在查询前设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL 注意: 如果from中包含子查询,仍会执行该子查询,将结果…

借助知识图谱和Llama-Index实现基于大模型的RAG

背景 幻觉是在处理大型语言模型(LLMs)时常见的问题。LLMs生成流畅连贯的文本,但经常产生不准确或不一致的信息。防止LLMs中出现幻觉的一种方法是使用外部知识源,如提供事实信息的数据库或知识图谱。 矢量数据库和知识图谱使用不…

【vim 学习系列文章 14 -- vim 注释神器 vim-commentary 插件 】

文章目录 vim-commentary插件 vim-commentary插件 Vim中的vim-commentary插件是一个流行的注释工具,可以使用该工具快速添加或删除代码注释。默认情况下,该插件根据文件类型来确定注释格式。对于大多数编程语言,它会使用相应的单行注释符号。…

springboot/ssm滑雪场管理系统Java滑雪溜冰馆预约管理系统web

springboot/ssm滑雪场管理系统Java滑雪溜冰馆预约管理系统web 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:…

《C++游戏编程入门》第8章 类:Critter Caretaker

《C游戏编程入门》第8章 类:Critter Caretaker 8.1 定义新类型08.simple_critter.cpp 8.2 使用构造函数08.constructor_critter.cpp 8.3 设置成员访问级别08.private_critter.cpp 8.4 使用静态数据成员与静态成员函数08.static_critter.cpp 8.5 Critter Caretaker游…

DAY by DAY 史上最全的Linux常用命令汇总----man

man是按照手册的章节号的顺序进行搜索的。 man设置了如下的功能键: 功能键 功能 空格键 显示手册页的下一屏 Enter键 一次滚动手册页的一行 b 回滚一屏 f 前滚一屏 q 退出man命令 h 列出所有功能键 /word 搜索word字符串 注意&#xff1a…

【文献阅读】A Fourier-based Framework for Domain Generalization(基于傅立叶的领域泛化框架)

原文地址:https://arxiv.org/abs/2105.11120 摘要 现代深度神经网络在测试数据和训练数据的不同分布下进行评估时,存在性能下降的问题。领域泛化旨在通过从多个源领域学习可转移的知识,从而泛化到未知的目标领域,从而解决这一问…

环境搭建SpringSecurity

一、maven依赖 <!-- Spring dependencies --> <dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version> </dependency><dependency><g…

03-自媒体文章发布-黑马头条

自媒体文章发布 1)自媒体前后端搭建 1.1)后台搭建 ①&#xff1a;资料中找到heima-leadnews-wemedia.zip解压 拷贝到heima-leadnews-service工程下&#xff0c;并指定子模块 执行leadnews-wemedia.sql脚本 添加对应的nacos配置 spring:datasource:driver-class-name: com…

代码随想录算法训练营Day58 | 739.每日温度、496.下一个更大元素 I

单调栈基础 什么时候使用单调栈&#xff1a;通常是一维数组&#xff0c;要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置&#xff0c;此时我们就要想到可以用单调栈了 单调栈的作用&#xff1a;使用栈来记录已经遍历过的元素 使用单调栈前需要明确两点&…

图解Diffusion扩散模型+代码

0、项目视频详解 视频教程见B站https://www.bilibili.com/video/BV1e8411a7mz 1、diffusion模型理论&#xff08;推导出损失函数&#xff09; 1.1、背景 随着人工智能在图像生成&#xff0c;文本生成以及多模态生成等领域的技术不断累积&#xff0c;如&#xff1a;生成对抗网…

SD-WAN技术如何保障网络的持续连接和稳定性

在当今数字化时代&#xff0c;企业对于网络的稳定性和持续连接性需求日益增加。SD-WAN作为一种新兴的网络解决方案&#xff0c;为企业提供了有效的方式来实现网络的持续连接和稳定性。本文将探讨SD-WAN技术如何保障网络的持续连接和稳定性。 1、多路径冗余技术 SD-WAN采用了多…

window.postMessage学习(问答式)

demo在文章末尾。 window.postMessage 1、有什么用&#xff1f; 答&#xff1a;可以安全地实现跨源通信。通常&#xff0c;对于两个不同页面的脚本&#xff0c;只有当执行它们的页面同源时&#xff0c;这两个脚本才能相互通信。 window.postMessage() 方法提供了一种受控机…

初识Python语言-课堂练习【pyhton123题库】

初识Python语言-课堂练习【pyhton123题库】 一、单项选择题 1、Guido van Rossum正式对外发布Python版本的年份是&#xff1a; A 2008B 1998C 1991D 2002 【答案】C 【解析】暂无解析2、下面不是Python语言特点的是&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪…