Я выполняю шаблон ARM, который создает службу Azure Kubernetes и другие ресурсы из задачи развертывания группы ресурсов Azure.
Мой шаблон ARM имеет в качестве параметров servicePrincipalClientId
и servicePrincipalClientSecret
конфиденциальные данные, которые используются для создания кластера Azure Kubernetes, просто прямо здесь. (Эта ссылка - мой полный шаблон ARM)
Итак, я делаю следующее:
- Я создал
servicePrincipalClientId
иservicePrincipalClientSecret
как переменные конвейера
- Я ранее создал субъект-службу и его данные
servicePrincipalClientId
иservicePrincipalClientSecret
, я использую их для создания подключения к службе, чтобы подключиться к облаку Azure следующим образом:
- У меня есть задача PowerShell для преобразования значений переменных
servicePrincipalClientId
иservicePrincipalClientSecret
в безопасные строки следующим образом:
$env:secretServicePrincipalClientId = ConvertTo-SecureString '$($env:servicePrincipalClientId)' -AsPlainText -Force
$env:secretServicePrincipalClientSecret = ConvertTo-SecureString '$($env:servicePrincipalClientSecret)' -AsPlainText -Force
Чтобы развернуть ресурсы, определенные в шаблоне ARM, я создал задачу развертывания группы ресурсов Azure со следующими параметрами:
Я использую сервисное соединение, созданное для взаимодействия с моей подпиской.
- Необходимое действие: создайте или обновите группу ресурсов.
Шаблон, путь к шаблону ARM, указанный выше.
Переопределить параметры шаблона Я включил сюда все значения параметров шаблона ARM и хочу подчеркнуть, как я ссылаюсь на значения переменных
servicePrincipalClientId
иservicePrincipalClientSecret
:
Здесь я ссылаюсь на переменные secretServicePrincipalClientId
и secretServicePrincipalClientSecret
, которые я использовал для преобразования значений переменных servicePrincipalClientId
и servicePrincipalClientSecret
в качестве защищенных строк выше в моей первой задаче azure DevOps.
-servicePrincipalClientId $($secretServicePrincipalClientId)
-servicePrincipalClientSecret $($secretServicePrincipalClientSecret)
.
.
-serviceCidr "100.0.0.0/16"
-dnsServiceIP "100.0.0.10"
-dockerBridgeCidr "172.17.0.1/16"
.
.
Итак, когда я выполняю конвейер выпуска, я получил эту ошибку в задаче развертывания группы ресурсов Azure.
2019-10-26T20:05:13.3246017Z The detected encoding for file 'd:\a\r1\a\Project\Deployments\ARMTemplates\Infrastructure\AzResourceGroupDeploymentApproach\testing.json' is 'utf-8'
2019-10-26T20:05:13.3410693Z Starting Deployment.
2019-10-26T20:05:13.3412081Z Deployment name is AzureDevOpsDeployment
2019-10-26T20:05:18.1729784Z There were errors in your deployment. Error code: InvalidTemplateDeployment.
2019-10-26T20:05:18.1730624Z ##[error]The template deployment 'AzureDevOpsDeployment' is not valid according to the validation procedure. The tracking id is 'xxxxxxx'. See inner errors for details.
2019-10-26T20:05:18.1731223Z ##[error]Details:
2019-10-26T20:05:18.1732062Z ##[error]ServicePrincipalNotFound: Provisioning of resource(s) for container service KubernetesCluster-aks in resource group testing failed. Message: {
"code": "ServicePrincipalNotFound",
"message": "Service principal clientID: $($secretServicePrincipalClientId) not found in Active Directory tenant ***, Please see https://aka.ms/aks-sp-help for more details."
}. Details:
2019-10-26T20:05:18.1733305Z ##[error]Task failed while creating or updating the template deployment.
2019-10-26T20:05:18.1765718Z ##[section]Finishing: Azure Deployment:Create Or Update Resource Group action on testing
Похоже, субъекта-службы, который я использую для подключения к облаку Azure, не существует, но это неправда. Этот субъект службы существует.
Если я включу прямо в задачу в виде обычного текста значения servicePrincipalClientId
и servicePrincipalClientSecret
-servicePrincipalClientId <servicePrincipalClientId-value>
-servicePrincipalClientSecret <servicePrincipalClientSecret-value>
Задача группы ресурсов Azure работает, и ресурсы в шаблоне ARM развертываются в облаке Azure из Azure DevOps.
- В чем проблема?
Согласно этой ссылке AKS нужна услуга основной, который будет создан.
Также, когда мы создаем службу Azure Kubernetes с использованием
az cli
, субъект-служба создается автоматически.То же самое происходит, когда мы создаем службу Azure Kubernetes на портале Azure.
Итак, я создаю службу Azure Kubernetes из Azure Devops, выполняя шаблон ARM через задачу развертывания группы ресурсов, используя существующие учетные данные субъекта-службы в задаче и в соединении службы.
- Почему мой принципал обслуживания не распознается?
Я пробую эту опцию устранить неполадки и решить проблему, но я боюсь, что проблема не в самом субъекте службы, вместо этого, я думаю, мне нужно было бы сослаться на - servicePrincipalClientId $($secretServicePrincipalClientId)
и -servicePrincipalClientSecret $($secretServicePrincipalClientSecret)
особым образом.
Как я могу это сделать?
Если кто-то может указать мне правильное направление, я был бы признателен