- harbor 华而繁杂
- nexus 杂而不专
搭建都很麻烦,而 CI/CD 这种频次较高的保存测试 image 的 registry 需求特点:
- 高频:用临时的 registry 存放即可(如果用生产环境的 harbor 存放,删除是个大麻烦)
- image 没有保存价值:定期重启 registry 就可以清空存储空间
- 跨主机访问:如果有验证,就可以放在公网上
可以由 ga 提供 registry-auth 插件,为 docker registry (官方默认的 image ,无认证)提供 兼容官方的验证方式(docker login).
比如:
- docker registry , 加一个 auth 模块就可以支持账号系统
- 各种静态 Web 页面(如文档),可以加上用户验证(参考 kong + oidc / openid)
- 上面的静态资源还有下载站等
用户及权限模块可以直接对接:
ga 已经是一个 forwarder 抽象的管理者,但是由于之前的设计, ga 的 openapi middleware 目前和后端服务是一一绑定关系:
意味着使用 openapi middleware 的 ga 还只是和一个后端服务绑定,
这样的话,ga 就不能是自由扩展。
下一步计划:
将 ga 的所有 middleware 和后端服务解绑(目前只有 openapi 依赖后端的 OpenAPI 2.0 Spec 文档)
这样 ga 可以直接将 traefix / kong 当作后端, 支持水平扩展。比如 openapi middleware 可以根据 URL PathPrefix (服务名参数也不需要,自行判断) 来加载不同的 Spec 对象,完成其流程。
对于小型的应用,ga 可以替换 traefix / kong ,管理后端服务,只要加上 PathPrefix 和负载均衡即可。
ga 的功能可以精简如下:
- 运行多个 http forwarder (以后可以是 grpc forwarder, ...)
- 每个不同的 http forwarder 配置加载相应的中间件
中间件 (middleware) 也有可能是其他功能:
- 将一种协议转换为另外一种协议(如 grpc <-> http)(不仅仅本协议内操作)
和其他程序配合:
- 不使用 service name 概念,仅仅使用
key
prefix,与 etcd 集成(方便加载/更新配置) - 和 traefix 等 gateway 配合(当然可能都是使用 etcd),利用其已经成熟的功能实现灵活架构扩展
可以让开发者使用任何私人环境部署后端服务,通过 otunnel 链接到线上测试环境。 真正实现“分布式开发/协作”。