API Gateway Auth на K8s Ingress + Python

По мотивам прошлого вопроса про авторизацию внутри кластера микросервисов, у меня возник следующий, более конкретный вопрос. Как можно реализовать паттерн API Gateway в Kubernetes для аутентификации с Питоном? Так, чтобы можно было использовать любой метод авторизации, и другим микросервисам не надо было париться об этом вопросе.

Мой список требований/пожеланий:

  1. Использовать код на Питонк для аутентификации запросов, обработки лог-ина/выхода.
  2. Использовать список URL'ов из K8s Ingress или хотя бы похожий простой, но мощный YAML формат, чтобы роутинг не был встроен в код какого-либо сервиса и мог быть быстро обновлён.
  3. Решение должно иметь хотя бы терпимую производительность.

Любая помощь по вопросу будет кстати ?


Ответы (1 шт):

Автор решения: AivanF.

Что удалось выяснить при помощи иностранных коллег.

NginX умеет работать с LDAP. В этой статье описывается прооцесс, а здесь официальный репозиторий с примером конфигурации Python+LDAP+NginX для внешней аутентификации. Также есть неофициальный пример этого подхода.

Помимо этого, модуль NginX'a ngx_http_auth_request_module поддерживает более простой протокол, есть документация и неофициальный пример на эту тему, а также небольшой полуофициальный пример использования в Kubernetes Ingress.


В качестве альтернативы, можно использовать дополнительное ПО в качестве API Gateway в Кубере:

→ Ссылка