У нас есть 2 кластера AKS (не частные), развернутые в Западной Европе и Восточной части США, без зон доступности, сети Azure CNI, сетевой политики Azure (не calico), и все подготовлено с помощью Terraform.
Мы пытаемся настроить инфраструктуру для наборов реплик MongoDB, что-то вроде этой статьи: https://docs.couchbase.com/operator/2.0/tutorial-remote-dns.html
Нам нужны модули в каждом кластере, чтобы иметь возможность доступа к IP-адресам службы (IP-адреса кластера), но, насколько мы понимаем, это нелегко достижимо, ClusterIP существуют в виртуальной сети, они не являются частью какой-либо определенной подсети. Это можно обойти? Я уверен, что это распространенный сценарий с запуском кластеров Mongo/RabbitMQ/Redis в разных регионах (мы стремимся добиться репликации данных мастер-мастер).
Я также рассмотрел решение с использованием плагина CoreDNS Kubernetai: https://www.cockreachlabs.com/blog/experience-report-running-across-multiple-kubernetes-clusters/ (решение №4)
Но, к сожалению, это не встроенный пользовательский образ CoreDNS, который использует AKS (1.6.6).
Виртуальные сети для кластера являются одноранговыми, модули могут получать доступ друг к другу через IP-адреса модулей, но мы не можем получить доступ к службам через назначенные им IP-адреса.
VNET West EU: 10.0.0.0/8 Подсеть Pods: 10.240.0.0/16 Подсеть Services: 10.0.0.0/16
VNET East US: 20.0.0.0/8 Подсеть Pods: 20.240.0.0/16 Подсеть Services: 20.0.0.0/16
Пиринг осуществляется в обе стороны, для параметра allow-vnet-access установлено значение true.