Я изучаю варианты обнаружения услуг в моем новом проекте.
Итак, вот как это: У меня есть несколько чистых металлических машин Kubernetes (Linux) , с без облачных провайдеров . У меня есть несколько кластеров Kubernetes, для этого примера давайте назовем их Cluster-1 и Cluster-2 .
Теперь предположим, что у меня есть 10 микросервисов (весенняя загрузка), я хотел бы развернуть их в обоих кластерах. Итак, все 10 микросервисов в обоих кластерах.
Мне нужен механизм обнаружения служб:
Если микросервис мс-1 с Кластеру-1 необходимо вызвать другой микросервис мс-2 , тогда я хочу, чтобы предпочтение связи было в том же кластере, если мс-2 работает и работает в Кластере -1 . Однако, если ms-2 не включен / не запущен в Cluster-1 , то вызов с ms-1 (Cluster-1) должен go ms-2 (Cluster-2).
Очевидно, что это должно поддерживаться для работы в многокластерной географической сети.
I не может достичь этого с помощью механизмов обнаружения служб, которые предлагает нативный Kubernetes.
Я пытался использовать Istio, но обнаружил, что он использует только нативный механизм обнаружения служб Kubernetes. Итак, Istio отсутствует на картинке.
Я решил попробовать Consul и развернуть мои микросервисы с сервисами Kubernetes типа NodePort , надеясь, что Консул сможет разрешить host и nodePort целевой службы как внутри, так и внутри кластера. Скрещенные пальцы !!
Теперь у меня есть в основном 2 вопроса:
Нужно ли использовать Spring-cloud-консул в каждом микросервисе для того, чтобы поговорить с Консулом и получить хост: порт целевой службы?
Я вижу, что Linkerd предоставляет некоторую возможность, с помощью которой микросервисы могут общаться с Linkerd, а Linkerd общается с Consul и разрешает службу от имени spring-cloud. -консул клиента.
Я даже видел этот пост -> https://discourse.linkerd.io/t/linkerd-with-springboot/638
Я хочу узнать больше подробностей о том, как это можно сделать.
Нужен ли вообще Консул? Linkerd предлагает решение для моего требования? Если да, то, пожалуйста, просветите меня, как?
Спасибо за чтение длинного вопроса. Я надеюсь, что получу быстрое и позитивное руководство для продолжения моего проекта.