Kubernetes Ingress 在路由之前执行授权,例如 api 网关

Kubernetes Ingress perform authorization before route, like api gateway

可以对 Kubernetes ingress(如 kong、nginx)执行授权(基于规则)。 例如,我有这个:

api版本:extensions/v1beta1

kind: Ingress
metadata:
  name: foo-bar
spec:
  rules:
  - host: api.foo.bar
    http:
      paths:
      - path: /service
        backend:
          serviceName: service.foo.bar
          servicePort: 80

但在重定向到 /service 之前,我需要在我的授权中执行调用 api 以验证请求令牌是否具有要传递给 /service 的规则。

或者我真的需要像 spring zuul 这样在入口后面使用 API 网关来做到这一点?

Ingress 清单只是控制器的输入。您还需要一个 Ingress Controller,一个理解 Ingress 对象的代理。 Kong和Nginx是两个实现的例子。

Nginx Ingress Controller is provided from the Kubernetes community and it has an example of configuring an external oauth2 proxy 使用注释

annotations:
  nginx.ingress.kubernetes.io/auth-url: "https://$host/oauth2/auth"
  nginx.ingress.kubernetes.io/auth-signin: "https://$host/oauth2/start?rd=$escaped_request_uri"