Istio Service discovery - PullRequest
       21

Istio Service discovery

0 голосов
/ 09 февраля 2020

Я опробую очень простую настройку Istio для установки Docker Desktop Kubernetes.

У меня есть 2 загрузочных микро-сервиса Spring, и я развернул эти 2 службы в моем "кластере" K8s без какой-либо репликации , Все, что у меня есть в моем YAML-файле, это Служба и Развертывание для обеих служб.

Я установил istio и вижу, что в моем модуле есть 2 контейнера. Одно из них - приложение с загрузочной пружиной, другое - коляска istio.

Я делаю вызов по отдыху из службы 2 в службу 1, как это, и все работает нормально.

restTemplate.exchange("http://service1:8080/getSomeString", HttpMethod.GET, null, String.class, new Object()).getBody();

Однако теперь, если я отключаю инъекцию коляски и заново использую сервисы, она все равно работает нормально. По сути, именно Kubernetes решает, где находится service1, и выполняет остальной вызов, а не istio.

Как мне выполнить обнаружение служб с использованием istio?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Istio - это Сервис Me sh, поэтому он не отвечает за обнаружение сервиса. Сервис me sh добавляет функциональность Сервису -> Сервисный трафик c (мониторинг, маршрутизация и т. Д. c). Поэтому, когда вы работаете в кластере Kubernetes, Kubernetes продолжает отвечать за обнаружение сервисов, как вы заметили.

Как говорит ответ Arghya, с помощью Istio вы можете применить VirtualService поверх этого, что позволяет вам выполнять «умные» дополнительные функции, такие как настраиваемые маршруты, но это никоим образом не заменяет и не изменяет функциональность базового обнаружения службы Kubertetes.

На мой взгляд, VirtualService - это запутанный термин, потому что, похоже, он каким-то образом заменяет существующие функции Kubernete. Я предпочитаю думать о VirtualService как о "Custom Routing".

Кстати, вам нужен только виртуальный сервис, если он вам нужен. Под этим я подразумеваю, что в вашем кластере может быть определено 1000 сервисов (используя обычную конструкцию Kubernetes Service). Но, возможно, вы хотите применить пользовательские правила маршрутизации только к одной службе - это нормально, вы просто определяете 1 VirtualService в Istio для этого.

1 голос
/ 09 февраля 2020

В Istio вы можете использовать виртуальный сервис для traffi c management . Адресация нескольким службам приложений через одну виртуальную службу. Если ваш me sh использует, например, Kubernetes, вы можете настроить виртуальную службу для обработки всех служб в указанном c пространстве имен. Сопоставление одной виртуальной службы с несколькими «реальными» службами особенно полезно для облегчения превращения монолитного приложения c в составную службу, построенную из отдельных микросервисов, не требуя от пользователей адаптации к переходу. В ваших правилах маршрутизации можно указать «вызовы этих URI-адресов monolith.com go для микросервиса A» и т. Д. Вы можете увидеть пример того, как это работает.

...