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 ответ

Решение

Ingressmanifest - это просто ввод для контроллера. Вам также понадобится 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"
Другие вопросы по тегам