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"
可以对 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"