Higress 开源之夏项目报名
Release Time 2023-05-09
开源之夏介绍
开源之夏是由中科院软件所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。
目前开源之夏官网已经开启了学生报名,只要你满足以下要求即可进行项目申请:
- 本活动面向年满 18 周岁在校学生。
- 暑期即将毕业的学生,只要在申请时学生证处在有效期内,就可以提交申请。
- 中国籍学生参与活动需提供身份证、学生证、教育部学籍在线验证报告(学信网)或在读证明。
- 外籍学生参与活动需提供护照,同时提供录取通知书、学生卡、在读证明等文件用于证明学生身份。
参与项目不仅可以为开源世界做出自己的贡献,还能获得丰厚的结项奖金(基础难度8000 RMB/进阶难度12000 RMB),项目经验也会成为你毕业简历上的亮点,快来报名吧!
报名截止时间为 6 月 3 日 15 点,具体参考官网活动流程和参与指南介绍:
Higress 介绍
Higress 是基于阿里内部两年多的实践沉淀,以开源 Istio 与 Envoy 为核心构建的下一代云原生网关。Higress 实现了安全防护网关、流量网关、微服务网关三层网关合一,可以显著降低网关的部署和运维成本。
Higress 在阿里内部的诞生和演进历程可以看这篇文章:
Higress 开源半年时间,GitHub star 数已经破千,在上个月 Higress 已经 Release 出了第一个 RC 版本,作为正式 GA 的候选发布版本,详情可以查看这篇文章:
上线控制台,降低使用门槛|Higress 1.0.0 RC 版本发布
在本次开源之夏活动中,Higress 有两个进阶难度的项目可以申请,欢迎各位同学踊跃报名。
项目介绍
项目一:Higress Wasm 插件构建/调试/部署的命令行实现
Higress 提供了很方便的 Wasm 插件扩展框架,具体可以查看这篇文章: 30行代码写一个Wasm Go插件
更详细的插件开发和调试流程可以查看这篇文章:使用 Go 语言开发 WASM 插件
这里对插件的生效机制简单做个说明:
- 用户将代码编译成 wasm 文件
- 用户将 wasm 文件构建成 oci 镜像
- 用户将 oci 镜像推送至镜像仓库
- 用户创建 WasmPlugin 资源
- Istio watch 到 WasmPlugin 资源的变化
- Higress Gateway 中的 xDS proxy 进程从 Istio 获取到配置,发现插件的镜像地址
- xDS proxy 从镜像仓库拉取镜像
- xDS proxy 从镜像中提取出 wasm 文件
- Higress Gateway 中的 envoy 进程从 xDS proxy 获取到配置,发现 wasm 文件的本地路径
- envoy 从本地文件中加载 wasm 文件
这里 envoy 获取配置并加载 wasm 文件使用到了 ECDS (Extension Config Discovery Service)的机制,实现了 wasm 文件更新,直接热加载,不会导致任何连接中断,业务流量完全无损。
这个项目的初衷是希望能基于 Higress 的 CLI 命令行工具(hgctl) 来进一步简化 Higress Wasm 插件的开发调试和安装部署步骤,使之更容易上手使用。
需要实现的 hgctl 命令如下:
- hgctl plugin build:构建 wasm OCI 镜像并推送到指定仓库
- hgctl plugin test:启动 docker compose 测试插件功能
- hgctl plugin install/uninstall :在当前higress集群中安装或卸载插件
- hgctl plugin config:修改制定插件的配置
Higress Wasm 插件配置基于 Openapi Specification (OAS 3.0)进行约束,需要能从代码中解析出插件配置字段格式,自动生成对应的 OAS 约束,用于添加到 OCI 镜像中,并同时用于 install/uninstall/config 等命令的参数配置校验
项目二:基于 Wasm 实现 OIDC 认证插件
Higress 作为一个云原生网关,需要实现 OIDC 认证的能力,方便用户对接外部认证服务。
OIDC (OpenID Connect) 是基于 OAuth 2.0 的身份认证协议,可以用于实现 SSO(Single Sign On)单点登录,即通过网关统一完成用户的身份认证,在身份认证成功后,再将资源请求转发给后端服务。
流程简介如下:
- 客户端向网关发起认证请求。
- 网关将认证请求直接转发到给认证服务。
- 认证服务读取请求中的验证信息(例如用户名、密码)进行验证,验证通过后返回Code给网关。
- 网关将携带Code的应答返回给客户端。
- 客户端向网关请求回调接口,请求中携带Code。
- 网关请求认证服务颁发Token,请求中携带Code、Client ID、Client Secret。
- 认证服务验证合法性,并返回ID Token。
- 认证成功,网关将携带ID Token的应答返回给客户端。
- 客户端向网关发起业务请求,请求中携带ID Token,网关校验请求中是否携带ID Token和合法性。
- 网关校验客户端的业务请求合法,将请求透传给业务服务。
- 业务服务进行业务处理后应答。
- 网关将业务应答返回给客户端。
目前 Higress 也可以基于 Envoy 的 Ext Authz 机制对接外置的 oauth2-proxy 来实现鉴权,不过这个方案一方面有额外的请求开销,另一方面 oauth2-proxy 只能作一组 OIDC 配置,无法对接多个不同的认证服务
加入社区
GitHub:https://github.com/alibaba/higress
对于报名方式有任何疑问,或者对某一个任务非常感兴趣,并且想要深入了解的同学,欢迎扫码添加微信,备注开源之夏