Kubernetes официально поддерживает аутентификацию на сервере API в JSON Web-токенах (JWT) через OpenID Connect с использованием протокола OAuth 2.0 для идентификации пользовательских запросов.Однако это только часть модели Authorization , которая определяет, как аутентифицированному пользователю могут быть предоставлены соответствующие политики или роли безопасности для управления ресурсами кластера Kubernetes.
Для создания или миграции приложениядля Kubernetes вы можете рассмотреть возможность предоставления приложения вне кластера, для этого Ingress передает запросы на точную службу путем сопоставления пути запроса.Фактически, Ingress
является логическим элементом ресурса, который описывает набор правил для управления трафиком через Ingress Controller .Следовательно, контроллер Ingress может играть роль шлюза API, предоставляя сетевые средства L7, такие как: балансировка нагрузки, SSL-завершение и маршрутизация трафика HTTP / HTTPS для вложенных служб приложений.
Как вы упомянули Zuul шлюз может быть одним из вариантов сервиса пограничного прокси перед кластером Kubernetes, однако я бы порекомендовал поискать некоторые решения, ориентированные на Kubernetes. Istio является хорошим примером, так как он предоставляет широкий набор функций сетевого маршрутизатора с довольно простой интеграцией в кластер Kubernetes благодаря своей базовой схеме обслуживания .Istio обеспечивает аутентификацию конечного пользователя через JWT в рамках объявленной аутентификации policy .
В качестве альтернативы, вы также можете воспользоваться функциями Nginx plus с объявленной аутентификацией JWT.