Azure Kubernetes-внутренний балансировщик нагрузки доступ по имени DNS вместо IP-адреса - PullRequest
0 голосов
/ 15 января 2019

постановка задачи

мы планируем использовать службу управления Azure API в качестве обратного прокси-сервера для нашего AKS. Я использовал ссылку на следующий URL для настройки менеджера API Azure с помощью AKS. Хотя он дает информацию о порте узла, он может применяться через внутренний IP-адрес балансировщика нагрузки.

https://fizzylogic.nl/2017/06/16/how-to-connect-azure-api-management-to-your-kubernetes-cluster/

В настоящее время у нас есть несколько сред, таких как dev1, dev2, dev3, dev, uat, stage, prod. мы пытаемся автоматизировать этот шаг настройки, и нам не нужно привязываться к конкретному IP, но нужно указать имя DNS, связанное с внутренним балансировщиком нагрузки для k8s.

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Если вы используете аннотацию в службе для использования внутреннего балансировщика нагрузки, вы получите IP-адрес в виртуальной сети для вашей службы, а не внешний IP-адрес.

аннотации: service.beta.kubernetes.io/azure-load-balancer-internal: «верно»

Затем можно использовать службу external-dns (https://github.com/kubernetes-incubator/external-dns)) для автоматического создания записей DNS для ваших служб в зонах DNS Azure. После этого вы сможете разрешить имя службы DNS.

Хотя это явно не поддерживается, оно также работает с частными зонами DNS.

0 голосов
/ 20 января 2019

Часть проблемы решена @Ben. Я бы предостерег от использования внешнего источника с открытым исходным кодом, поскольку вам может не понравиться создавать зависимость от этой очень важной функции. Требуется дать дополнительное разрешение!

Вам понадобится виртуальный частный ip, и это достигается за счет внутренней аннотации балансировщика нагрузки, и это работает. Я недавно задокументировал конец end tls / ssl с внутренним балансировщиком нагрузки и могу найти его в https://blogs.aspnet4you.com/2019/01/06/end-to-end-tlsssl-offloading-with-application-gateway-and-kubernetes-ingress/.

Имейте в виду, что мое решение работало отлично, пока я не удалил надстройку маршрутизации приложений http. Зачем? Дополнение поставляется с Azure Dns (общедоступным) и общедоступным балансировщиком нагрузки. Оба из них были удалены навсегда, когда я удалил надстройку, но удаление сломало запись DNS, связанную с vip внутреннего балансировщика нагрузки. Я не собирался удалять зону DNS. Моя попытка создать новую зону DNS и добавить запись A с частным IP не сработала. Кубернетес не может решить fqdn. Пробовал с Azure Private DNS, но он также не может решить! Моя попытка использовать configmap с kube-dns не сработала, и это нарушило разрешение dns других вещей, если я включил апстрим! Итак, расследование продолжается!

Мне бы очень хотелось услышать, как вы решили проблему fqdn.

Что касается оптимизма, я думаю, что пользовательский DNS-сервер на базе виртуальной машины может быть хорошим вариантом, и вы, вероятно, выбрали бы его для гибридного решения.

0 голосов
/ 15 января 2019

Должна быть возможность настроить Azure VNET для работы с вашим собственным DNS-сервером: https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances#name-resolution-that-uses-your-own-dns-server. ONE setup APIM будет использовать его для разрешения адресов для всех исходящих запросов. Просто убедитесь, что вы также поддерживаете разрешение публичных адресов, поскольку у APIM мало зависимостей, без которых он не будет работать.

...