Публичный IP Azure AKS в нестандартной ресурсной группе - PullRequest
0 голосов
/ 13 мая 2019

Я пытался управлять экземпляром Azure Kubernetes Service (AKS) через Terraform. Когда я создаю экземпляр AKS через интерфейс командной строки Azure для этого учебного пособия по MS , затем устанавливаю входной контроллер со статическим общедоступным IP-адресом, для этого учебного пособия по MS все работает нормально. Этот метод неявно создает субъект-службу (SP).

Когда я создаю точную копию кластера AKS через Terraform, я вынужден предоставить субъекту обслуживания явно. Я предоставил этому новому SP «Contributor» доступ ко всей группе ресурсов кластера, но когда я перешел к этапу создания входного контроллера (используя ту же команду, что и в учебном пособии 2, выше: helm install stable/nginx-ingress --set controller.replicaCount=2 --set controller.service.loadBalancerIP="XX.XX.XX.XX"), служба доступа появляется но он никогда не приобретает свой публичный IP. Статус IP остается "" неопределенно долго, и я не могу найти ничего в любом журнале о том, почему. Существуют ли журналы, в которых должно быть указано, почему мой IP-адрес все еще находится на рассмотрении?

Опять же, я совершенно уверен, что, кроме SP, кластер Terraform AKS является точной копией кластера, созданного на основе учебника по MS. Запуск terraform plan не находит различий между ними. Кто-нибудь знает, какое разрешение может понадобиться моему AKS SP или что мне здесь не хватает? Как ни странно, я не могу найти ЛЮБЫЕ разрешения, назначенные неявно созданному участнику через портал Azure, но я не могу думать ни о чем другом, что могло бы вызвать такое поведение.

Не уверен, если это красная сельдь или нет, но другие пользователи жаловались на аналогичную проблему в контексте вопросов, открытых для второго урока. Их исправление всегда кажется «разрушить кластер и повторить попытку», но это не является приемлемым решением в этом контексте. Мне нужен воспроизводимый рабочий кластер, и azurerm_kubernetes_cluster в настоящее время не позволяет создавать экземпляр AKS с неявно созданным SP.

1 Ответ

0 голосов
/ 13 мая 2019

Я собираюсь ответить на свой вопрос для потомков. Оказывается, проблема заключалась в группе ресурсов, где я создал статический публичный IP. Кластеры AKS используют две группы ресурсов: группу, в которой вы явно создали кластер, и вторую группу, которая неявно создается кластером. Эта вторая неявная группа ресурсов всегда получает имя, начинающееся с «MC_» (остальная часть имени является производной от явного RG, имени кластера и региона).

В любом случае, для конфигурации AKS по умолчанию требуется, чтобы в этой неявной группе ресурсов был создан общедоступный IP-адрес. Предполагая, что вы создали кластер AKS с помощью Terraform, его имя будет экспортировано в ${azurerm_kubernetes_cluster.NAME.node_resource_group}.

РЕДАКТИРОВАТЬ 2019-05-23

С тех пор, как мы написали это, мы нашли вариант использования, для которого обходного пути использования группы ресурсов MC_ * было недостаточно. Я открыл заявку в службу поддержки MS, и они направили меня на это решение . Добавьте следующую аннотацию в свой LoadBalancer (или контроллер Ingress) и убедитесь, что AKS SP имеет как минимум права Network Contributor в целевой группе ресурсов (myResourceGroup в приведенном ниже примере):

metadata:
  annotations:
    service.beta.kubernetes.io/azure-load-balancer-resource-group: myResourceGroup

Это решило это полностью для нас.

...