timzaak / blog

8 stars 1 forks source link

api 网关 #72

Closed timzaak closed 3 years ago

timzaak commented 3 years ago

最近要给现有的服务,添加为计费和授权模块,本来想直接在上面写,但实在不想写Java代码,就想找个取巧的方式,搞API网关。

API 网关目前市场上,只要看能 support k8s 的就成,如果现在还没支持,大概率就被历史所遗弃。 我个人倾向于基于Rust 语言写的,所以想搞 linkerd-proxy, 但奈何相关文档匮乏,它更多的是一个 Linkerd 组件,单独拿出来用,可能需要耗费大量资源去弄清楚如何用,就先算了。 nginx+lua 的相关框架,有 openResty、sixapi、Kong 等,要写Lua脚本,不太想搞。 Envoy 在有 Contour 项目加持上,能成为 k8s Ingress Controller,本身 GRPC API 功能相当丰富,也是 Istio service mesh 的重要组件。我可以写 Scala 语言来控制它,这么看来,就相当给力了。先拿它试试水。

timzaak commented 3 years ago

翻了一圈,发现 nginx controller 本身就支持 OAuth2 的授权认证。配合OAuth-proxy,就能搞定 keycloak 代理。

  1. https://oauth2-proxy.github.io/oauth2-proxy/docs/
  2. https://docs.syseleven.de/metakube/de/tutorials/setup-ingress-auth-to-use-keycloak-oauth
timzaak commented 2 years ago

API网关的计费、控流等功能其实很麻烦,还是要多用用现有的。