我尝试使用Azure Management API创建Kubernetes集群。
var credentials = SdkContext.AzureCredentialsFactory
.FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION"));
var azure = Azure
.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(credentials)
.WithDefaultSubscription();
var kubernetesCluster = azure.KubernetesClusters.Define("aks").WithRegion(Region.EuropeWest)
.WithNewResourceGroup("aksResourceGroup").WithLatestVersion().WithRootUsername("aksUsername")
.WithSshKey(sshPublicKey).WithServicePrincipalClientId("clientId")
.WithServicePrincipalSecret("secret").DefineAgentPool("ap").WithVirtualMachineCount(1)
.WithVirtualMachineSize(ContainerServiceVirtualMachineSizeTypes.StandardA0).Attach()
.WithDnsPrefix("dns-aks").Create();
在最后一行中,抛出CloudException并显示以下消息:找不到Subscription []。
即使抛出异常,也会创建资源组但它是空的。
我已使用Azure CLI使用该服务主体登录,并且已运行
az account list
以下回复:
[
{
"cloudName": "AzureCloud",
"id": "SUBSCRIPTION ID FROM EXCEPTION ABOVE",
"isDefault": true,
"name": "Pay-As-You-Go",
"state": "Enabled",
"tenantId": "xxx",
"user": {
"name": "xxxx",
"type": "servicePrincipal"
}
}
]
应用程序注册存在于Azure Active Directory>应用注册>所有应用。我甚至授予了所有可能API的权限。
为了收到该异常消息,我有什么问题吗?
答案 0 :(得分:1)
根据错误日志,您似乎没有为服务主体设置默认订阅。您可以使用az account set --subscription <name or id>
进行设置。
如果仍然无效,我建议您使用以下代码。
var azure = Azure
.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(credentials)
.withSubscription("subscription id")
注意:您应该在订阅级别上提供服务主体所有者角色。见link。但似乎你已经做到了,但我建议你再次检查。