跳到主要内容

Higress 开源之夏项目报名

· 阅读需 9 分钟

开源之夏介绍

开源之夏是由中科院软件所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。

目前开源之夏官网已经开启了学生报名,只要你满足以下要求即可进行项目申请:

  • 本活动面向年满 18 周岁在校学生。
  • 暑期即将毕业的学生,只要在申请时学生证处在有效期内,就可以提交申请。
  • 中国籍学生参与活动需提供身份证、学生证、教育部学籍在线验证报告(学信网)或在读证明。
  • 外籍学生参与活动需提供护照,同时提供录取通知书、学生卡、在读证明等文件用于证明学生身份。

参与项目不仅可以为开源世界做出自己的贡献,还能获得丰厚的结项奖金(基础难度8000 RMB/进阶难度12000 RMB),项目经验也会成为你毕业简历上的亮点,快来报名吧!

报名截止时间为 6 月 3 日 15 点,具体参考官网活动流程和参与指南介绍:

Higress 介绍

Higress 是基于阿里内部两年多的实践沉淀,以开源 Istio 与 Envoy 为核心构建的下一代云原生网关。Higress 实现了安全防护网关、流量网关、微服务网关三层网关合一,可以显著降低网关的部署和运维成本。

Higress 在阿里内部的诞生和演进历程可以看这篇文章:

阿里巴巴重磅开源云原生网关: Higress

Higress 开源半年时间,GitHub star 数已经破千,在上个月 Higress 已经 Release 出了第一个 RC 版本,作为正式 GA 的候选发布版本,详情可以查看这篇文章:

上线控制台,降低使用门槛|Higress 1.0.0 RC 版本发布

在本次开源之夏活动中,Higress 有两个进阶难度的项目可以申请,欢迎各位同学踊跃报名。

项目介绍

项目一:Higress Wasm 插件构建/调试/部署的命令行实现

Higress 提供了很方便的 Wasm 插件扩展框架,具体可以查看这篇文章: 30行代码写一个Wasm Go插件

更详细的插件开发和调试流程可以查看这篇文章:使用 Go 语言开发 WASM 插件

这里对插件的生效机制简单做个说明:

  1. 用户将代码编译成 wasm 文件
  2. 用户将 wasm 文件构建成 oci 镜像
  3. 用户将 oci 镜像推送至镜像仓库
  4. 用户创建 WasmPlugin 资源
  5. Istio watch 到 WasmPlugin 资源的变化
  6. Higress Gateway 中的 xDS proxy 进程从 Istio 获取到配置,发现插件的镜像地址
  7. xDS proxy 从镜像仓库拉取镜像
  8. xDS proxy 从镜像中提取出 wasm 文件
  9. Higress Gateway 中的 envoy 进程从 xDS proxy 获取到配置,发现 wasm 文件的本地路径
  10. 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)单点登录,即通过网关统一完成用户的身份认证,在身份认证成功后,再将资源请求转发给后端服务。

流程简介如下:

  1. 客户端向网关发起认证请求。
  2. 网关将认证请求直接转发到给认证服务。
  3. 认证服务读取请求中的验证信息(例如用户名、密码)进行验证,验证通过后返回Code给网关。
  4. 网关将携带Code的应答返回给客户端。
  5. 客户端向网关请求回调接口,请求中携带Code。
  6. 网关请求认证服务颁发Token,请求中携带Code、Client ID、Client Secret。
  7. 认证服务验证合法性,并返回ID Token。
  8. 认证成功,网关将携带ID Token的应答返回给客户端。
  9. 客户端向网关发起业务请求,请求中携带ID Token,网关校验请求中是否携带ID Token和合法性。
  10. 网关校验客户端的业务请求合法,将请求透传给业务服务。
  11. 业务服务进行业务处理后应答。
  12. 网关将业务应答返回给客户端。

目前 Higress 也可以基于 Envoy 的 Ext Authz 机制对接外置的 oauth2-proxy 来实现鉴权,不过这个方案一方面有额外的请求开销,另一方面 oauth2-proxy 只能作一组 OIDC 配置,无法对接多个不同的认证服务

加入社区

GitHub:https://github.com/alibaba/higress

官网: https://higress.io

对于报名方式有任何疑问,或者对某一个任务非常感兴趣,并且想要深入了解的同学,欢迎扫码添加微信,备注开源之夏

相关项目推荐

  • 对于微服务注册发现和配置管理有兴趣的同学,可以尝试填报 Nacos 开源之夏;
  • 对于微服务分布式事务有兴趣的同学,可以尝试填报 Seata 开源之夏;
  • 对于微服务框架和RPC框架有兴趣的同学,可以尝试填报 Spring Cloud AlibabaDubbo 开源之夏;
  • 对于分布式高可用防护有兴趣的同学,可以尝试填报 Sentinel 开源之夏;
  • 对于微服务治理有兴趣的同学,可以尝试填报 OpenSergo 开源之夏。