Будут ли служебные соединения 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. :
URL-адрес сервера: Получите его из экземпляра AKS ( адрес сервера API ) в AzureПортал, затем не забудьте добавить https://
перед ним, пока вы вводите его в это служебное соединение.
Секрет: Сгенерируйте его с помощью команды:
kubectl get secret -n <name of secret> -o yaml -n service-accounts
См. Этот документ: Развертывание хранилища в службе Azure Kubernetes (AKS) .
Затем вы можете использовать это подключение службы в задачах Azure Devops.