В kubernetes у вас уже есть услуга "discovery", которая является kubernetes-service.Он находит модули и служит для них балансировщиком нагрузки.
Допустим, у вас есть конфигурация Zuul, подобная этой:
zuul:
routes:
books-service:
path: /books/**
serviceId: books-service
, которая направляет запросы, соответствующие /books/**
, в службу books-service
.Обычно у вас есть Eureka, которая дает вам реальный адрес books-service
, но не сейчас.
И в этом вам может помочь лента - она позволяет вам вручную настраивать маршрутизацию после того, как Zuul соответствует его запросу.Так что вам нужно добавить это в конфигурацию:
books-service.ribbon.listOfServers: "http://books:8080"
и после того, как Зуул найдет serviceId (books-service
), он перенаправит запрос на books:8080
, а books:8080
простоkubernetes-service:
kind: Service
apiVersion: v1
metadata:
name: books
spec:
selector:
app: spring-books-service
ports:
- protocol: TCP
port: 8080
targetPort: 9376
Можно сказать, что это балансировщик нагрузки, который берет трафик с: 8080 и перенаправляет его на модули с меткой app: spring-books-service
.
Все, что вам нужно сделать дальшеназначать ярлыки модулям (например, с помощью развертываний)
Кстати, вы можете настроить ленту подобным образом в любом приложении, и kubernetes найдет все ваши приложения (модули) с помощью своих служб, поэтому вам не понадобится служба обнаружения ввсе!А поскольку k8s-сервисы гораздо надежнее, чем Eureka, вы можете просто удалить его.