Вызов внешних служб с разными исходными IP-адресами из модуля Azure-AKS - PullRequest
0 голосов
/ 12 марта 2019

Мы пытаемся развернуть наше мульти-микросервисное приложение в аксе для большой компании.Но команда инфраструктуры компании просит нас запрашивать их услуги с определенными частными IP-адресами.У нас есть vpn-соединение между сетью компании и виртуальной сетью Azure.

Например, мы звоним по адресу company-service-1, company-service-2 и company-service-3 из одной из наших микросервисных служб.говорит, что вызовите company-service-1 с исходным IP-адресом XXX.XXX.XXX.121, вызовут company-service-2 с исходным ip XXX.XXX.XXX.122 и вызовут company-service-3 с помощью XXX.XXX.XXX.123 источник ip.Они определили правила брандмауэра для этих ips и не изменяют их из-за некоторых ограничений безопасности.

Мы могли бы сделать это путем определения различных сетевых интерфейсов для виртуальной машины и создания некоторых ip-маршрутизаций, таких как «ip route add XXX.XXX.XXX.YYY / 32 через XXX.XXX.XXX.1 src XXX.XXX.XXX.123 ".Но в этот момент мы боремся с ограничением добавления сетевого интерфейса.Потому что, в конце концов, мы собираемся вызвать 20 разных сервисов с разными ips.Кроме того, у нас может быть более одного кластера aks, поэтому этот подход не годится.

И мы пытаемся сделать это через выходные балансировщики нагрузки, как говорит Microsoft.Мы пытаемся добавить некоторый loadbalancer через aks, и кажется, что он получает истинные IP-адреса.Но проблема в том, что мы не можем определить определенные IP-адреса для определенных внешних конечных точек.Каждый запрос от pods пытается напрямую перейти на веб-сервисы компании без посещения балансировщиков нагрузки и возврата с брандмауэром с ошибкой.

Load Balancers inside aks

Мы создали балансировщики нагрузки с помощью yamlниже.Это внутренние балансировщики нагрузки, потому что, когда мы пытаемся создать публичный балансировщик нагрузки, мы не можем назначить ему определенные IP-адреса или, может быть, нам что-то не хватает.Мы также попробовали это с общедоступным балансировщиком нагрузки, но не повезло.

Internal Load Balancer Yaml

Кроме того, мы пытаемся сделать это с помощью функций Istio - выход, мы устанавливаем istio синъекция в коляску и помеченное пространство имен для тестаМы создали virtualService, ServiceEntry, Gateway и DestionationRule, но не можем найти способ дать конкретный балансировщик нагрузки или определенный ip для определенных внешних хостов.

ServiceEntry, Gateway, VirtualService, DestinationRule yaml

Мы прочитали много документов со страниц Azure и Istio и провели много поисков.Мы перепробовали много вещей, которые я не могу написать здесь.Я думаю, это не должно быть такой сложной темой, и должен быть правильный способ сделать это.Боюсь, мы потеряемся.В нашей внутренней команде нет директора по инфраструктуре, и мы впервые работаем с Azure и azure-aks.

Мы открыты для всех идей и заранее благодарим вас за все из них.

Среда: мы используем службы Azure Kubernetes.Версия сервера: version.Info {Major: "1", Minor: "10", GitVersion: "v1.10.13", GitCommit: "954ff68d59e9dc62fa8252ffa9023a90ff8a358c", GitTreeState: "clean", BuildDate: "2019-02-13T11: 03:32Z ", GoVersion:" go1.9.3 ", компилятор:" gc ", платформа:" linux / amd64 "}

Размер кластера: 1 узел (тестовая среда) Общее описание рабочих нагрузок в кластере: anприложение включает в себя несколько загрузочных микросервисов java-spring

...