Вы можете использовать Входящие аннотации Nginx для достижения этой цели.
В двух словах:
Предполагается, что у вас есть внешняя служба аутентификации, для которой настроена служба Kubernetes,Вам нужна аннотация, которая отправляет запросы на авторизацию этой службе:
nginx.ingress.kubernetes.io/auth-url: http://auth-service.<NameSpace>.svc.cluster.local/auth
Кроме того, вы можете использовать аннотацию nginx.ingress.kubernetes.io/auth-snippet
, чтобы установить пользовательскую конфигурацию для запроса на аутентификацию, например
nginx.ingress.kubernetes.io/auth-snippet: |
auth_request_set $foo_id $upstream_http_foo_id;
proxy_pass $request_uri
proxy_set_header X-foo-Token $foo_id;
Если вам нужно вернуть некоторые заголовки при успешной аутентификации, вы можете использовать nginx.ingress.kubernetes.io/auth-response-headers
:
nginx.ingress.kubernetes.io/auth-response-headers: X-Auth
И, nginx.ingress.kubernetes.io/auth-signin
, чтобы указать пользовательскую страницу ошибки