я создал частный кластер на AKS и развернул в нем некоторые рабочие нагрузки, но не знаю, как подключиться к службам. Все они являются службами NodePort, как TCP, так и UDP.
Первоначально я думал, что конечная точка, предоставляемая AKS, может использоваться для взаимодействия с кластером в целом, но это не тот случай --здесь представлен только API Kubernetes (возможно, поэтому они называют его API endpoint)
Я также пытался использовать общедоступный IP-адрес VMSS, но это тоже не сработало. Использование IP-адреса экземпляра работает, но IP-адреса со временем будут меняться, верно?
В конце концов я решил использовать контроллер входящего трафика и проксировать трафик, но, поскольку я использую смешанные протоколы, мне потребуется два. Не говоря уже о том, что это кажется слишком сложным, чтобы быть разумным решением этой проблемы.
Как предоставить доступ к службам в частном кластере AKS? Я думаю, это должна быть довольно распространенная проблема, но я не нашел четкого решения
Если кто-то когда-либо окажется в такой ситуации, мы в конечном итоге будем использовать ExternalDNS и частную зону, поскольку мы все равно используем NodePorts.
Это дает нам стабильную конечную точку, которая будет автоматически обновляться при изменении IP-адреса одного из узлов.
Следует отметить, что документация подразумевает, что назначение ролей по подписке не требуется. (По умолчанию создайте -для -грантов rbac Contributor
в подписке на службу. принципал, который--пропускает -назначение избегает ), но это не сработало для меня, ExternalDNS получил отказ в разрешении при попытке прочитать частные зоны.
Я попробовал несколько разных комбинаций, но в итоге дал Private DNS Zone Contributor
на подписку и пропустил все назначения для зоны и группы ресурсов.
Также хочу обратить внимание на то, что есть два провайдера для Azure, azure
для публичного DNS и azure-private-dns
для частного DNS, и они немного отличаются по конфигурации.