API Gateway Auth на K8s Ingress + Python
По мотивам прошлого вопроса про авторизацию внутри кластера микросервисов, у меня возник следующий, более конкретный вопрос. Как можно реализовать паттерн API Gateway в Kubernetes для аутентификации с Питоном? Так, чтобы можно было использовать любой метод авторизации, и другим микросервисам не надо было париться об этом вопросе.
Мой список требований/пожеланий:
- Использовать код на Питонк для аутентификации запросов, обработки лог-ина/выхода.
- Использовать список URL'ов из K8s Ingress или хотя бы похожий простой, но мощный YAML формат, чтобы роутинг не был встроен в код какого-либо сервиса и мог быть быстро обновлён.
- Решение должно иметь хотя бы терпимую производительность.
Любая помощь по вопросу будет кстати ?
Ответы (1 шт):
Что удалось выяснить при помощи иностранных коллег.
NginX умеет работать с LDAP. В этой статье описывается прооцесс, а здесь официальный репозиторий с примером конфигурации Python+LDAP+NginX для внешней аутентификации. Также есть неофициальный пример этого подхода.
Помимо этого, модуль NginX'a ngx_http_auth_request_module поддерживает более простой протокол, есть документация и неофициальный пример на эту тему, а также небольшой полуофициальный пример использования в Kubernetes Ingress.
В качестве альтернативы, можно использовать дополнительное ПО в качестве API Gateway в Кубере: