Кажется, первая нарисованная вами схема верна. Но я думаю, что вы запутались в терминологии. Особенно в разнице между ingress
и ingress-controller
.
Ingress
- это тип ресурсов в k8s (например, Service
, Deployment
, ReplicaSet
и т. Д.). Мы используем ingress, если хотим показать некоторые сервисы внешнему миру с привязкой к некоторому пути и хосту (т.е. myapp.com/api -> my-api-service).
Задача ingress-controller
состоит в том, чтобы обрабатывать создание / обновление / удаление входящих ресурсов и реализовывать все функции, необходимые для входа. Под внутренним контроллером капота находится простое развертывание, представляемое как LoadBalancer
или NodePort
, в зависимости от того, где развернуты k8s. И контроллер изображения пересылает полученный запрос далее в один из модулей службы, который соответствует хосту и пути в некоторых из развернутых входных ресурсов.