Сервисные соединения Kubernetes в Azure Devops с AAD-связанным кластером AKS - PullRequest
0 голосов
/ 29 октября 2019

Будут ли служебные соединения kubernetes в Azure Devops работать с кластером AKS, который связан с AAD через openidconnect? Вход в такие кластеры проходит через поток openidconnect, который включает в себя логин устройства + браузер. Как это возможно с сервисными подключениями azure devops k8s?

1 Ответ

1 голос
/ 30 октября 2019

Будут ли служебные соединения kubernetes в azure devops работать с кластером AKS, который связан с AAD через openidconnect?

К сожалению, нет, пока что это не поддерживается.

Согласно вашему описанию, в подключении к службе Azure Devops Kubernetes вы хотите подключиться к службе Azure Kubernetes. Это означает, что вы выбрали бы Azure Subscription в Choose authentication. НО, этот метод соединения использует аутентификацию принципала службы (SPA) для аутентификации, которая еще не поддерживается для AKS, который связан с аутентификацией AAD .

Если вы подключаете свой кластер AKS как часть своего развертывания CI / CD в Azure Devops и пытаетесь получить учетные данные кластера. Вы получите предупреждающий ответ, который сообщит вам для входа в систему, поскольку субъект службы не может его обработать :

WARNING: To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code *** to authenticate.

Вы должны ознакомиться с этим сообщением, для входа в него необходимо открыть браузер. Чтобы выполнить аутентификацию кода устройства вручную. Но этого не удалось достичь в Azure Devops.

На нашем форуме был подан такой запрос, который просит нас расширить эту функцию до Поддержка неинтерактивного входа в систему для AAD-интегрированных кластеров . Вы можете голосовать и комментировать там, чтобы продвинуть приоритет этого предложения билетов. Затем наш менеджер по продукту может рассмотреть его в плане разработки как можно скорее.


Хотя это не может быть достигнуто напрямую. Но у вас есть 2 обходных пути, к которым вы можете обратиться.

  • Первый обходной путь - изменить саму аутентификацию DevOps Azure с клиента AAD на клиент сервера.

Используйте команду az aks get-credentials и укажите для нее параметр --admin. Это может помочь в обход аутентификации Azure AD, поскольку позволяет подключаться и получать учетные данные администратора, которые могут работать без Azure AD.

Но я не рекомендую этот метод, потому что субъективно этот метод игнорирует правила аутентификации, установленные в AAD для безопасности. Если вам нужен быстрый способ добиться того, чего вы хотите, и не слишком беспокоиться о безопасности, попробуйте это.

  • Второй - использование учетных записей службы Kubernetes

Вы можете выполнить это doc , чтобы создать учетную запись службы. Затем в Azure Devops мы могли бы использовать эту учетную запись службы для связи с AKS API. Здесь также необходимо учитывать допустимые диапазоны IP-адресов в AKS.

После успешного создания служебной учетной записи выберите Сервисная учетная запись в служебном подключении Azure Devops. :

enter image description here

URL-адрес сервера: Получите его из экземпляра AKS ( адрес сервера API ) в AzureПортал, затем не забудьте добавить https:// перед ним, пока вы вводите его в это служебное соединение.

Секрет: Сгенерируйте его с помощью команды:

kubectl get secret -n <name of secret> -o yaml -n service-accounts

См. Этот документ: Развертывание хранилища в службе Azure Kubernetes (AKS) .

Затем вы можете использовать это подключение службы в задачах Azure Devops.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...