Kubernetes Ingress выполняет авторизацию перед маршрутом, как шлюз API
Можно выполнить авторизацию (например, на основе правил) на вход Kubernetes (например, kong, nginx). Например, у меня это:
apiVersion: 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.
Или мне действительно нужно использовать для этого API-шлюз за входом, например Spring zuul?
1 ответ
Ingress
manifest - это просто ввод для контроллера. Вам также понадобится Ingress Controller, прокси, который понимаетIngress
объект. Kong и Nginx - два примера реализации.
Nginx Ingress Controller предоставляется сообществом Kubernetes и содержит пример настройки внешнего прокси-сервера oauth2 с использованием аннотаций.
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"