Как заставить интерфейсное приложение общаться с бэкэнд-приложениями, не создавая вход для бэкэнда

Я развернул кластер kubernetes, используя kops. В текущем кластере используется входной контроллер nginx, который создает классический балансировщик нагрузки в AWS. У меня есть некоторые бэкэнд-приложения, которые общаются с внешним интерфейсом, и некоторые бэкэнд-сервисы, которые просто общаются друг с другом. Проблема заключается в том, что в настоящее время единственный способ заставить приложение внешнего интерфейса взаимодействовать с приложениями внутреннего уровня - создать вход для приложений внутреннего уровня, поскольку интерфейс отправляет запросы через имя домена, поскольку он не понимает имена внутренних служб. Для бэкэндов это хорошо, так как они могут общаться внутри, просто используя имя службы и соответствующий порт. Как я могу достичь этого, не создавая вход для бэкэндов. Можно ли это сделать с помощью балансировщика нагрузки приложения или для этого нужен шлюз API? Как мне достичь этой архитектуры? Добавление диаграммы архитектуры, чтобы показать, чего я хочу достичь. Любая помощь приветствуется.

2 ответа

Из вашей "архитектурной схемы" видно, что все ваши приложения находятся внутри кластера. Так что не нужно входить. Вы можете просто воспользоваться услугами kubernetes.

Ваше приложение веб-интерфейса должно иметь возможность вызывать конечные точки внутренних служб, в противном случае вы допустили ошибку в конфигурации службы внешнего интерфейса.

Если у вас нет возможности изменить URL-адрес, который приложение внешнего интерфейса вызывает для внутренних служб, вы можете использовать, например, службу kubernetes с CNAME и перенаправить ее на свои внутренние службы.

Вам не нужно входить для подключения бэкэнда от внешнего интерфейса. Предполагая, что оба бэкэнда и фронтэнда работают в одном кластере kubernetes. Фронтенд-сервис может подключаться к бэкэнд-сервису с помощью сервиса DNS

backend-service.<namespace>.svc.cluster.local
Другие вопросы по тегам