0

我使用 Azure 门户创建了 Azure Kubernetes 服务和 Azure 容器注册表。之后,我可以授予授予 AKS 对 ACR 的访问权限,为此我使用了以下脚本:

Login-AzureRmAccount
Set-AzureRmContext -SubscriptionID 'XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXX'
#Get the id of the service principal configured for AKS
$AKS_RESOURCE_GROUP = "DSEU2-AKSRES-SB-DEV-RGP-01"
$AKS_CLUSTER_NAME = "DSEU2-AKSRES-SB-DEV-AKS-01"
$CLIENT_ID=$(az aks show --resource-group $AKS_RESOURCE_GROUP --name     $AKS_CLUSTER_NAME --query "servicePrincipalProfile.clientId" --output tsv)

# Get the ACR registry resource id
$ACR_NAME = "DSWEAKSRESSBDEVACR01"
$ACR_RESOURCE_GROUP = "DSWE-AKSRES-SB-DEV-RGP-01"
$ACR_ID=$(az acr show --name $ACR_NAME --resource-group $ACR_RESOURCE_GROUP --query "id" --output tsv)

#Create role assignment
az role assignment create --assignee $CLIENT_ID --role Reader --scope $ACR_ID

每当我运行上面的 PowerShell 脚本时,我都会得到如下图所示的异常。 在此处输入图像描述

对于上述场景,我遵循了这个文档:Authenticate with Azure Container Registry from Azure Kubernetes Service

4

1 回答 1

1

对于命令az role assignment create,参数的描述为--assignee

表示用户、组或服务主体。支持的格式:对象 ID、用户登录名或服务主体名称。

但是你使用的是 Azure Kubernetes 集群的资源 Id。所以你得到了错误。

以及您发布的链接,该文档显示了 yaml 文件中的秘密以及使用命令创建的秘密kubectl create secret。该密钥仅用于从 Azure 容器注册表中提取映像。

更新

显示 ERROR 时,找不到资源组,因此您应该仔细检查您的资源组。

从您的脚本中,您使用 PowerShell 命令登录并使用 CLI 执行。我认为 CLI 的订阅不会更改。因此,您可以检查您是否在正确的订阅中。PowerShell 命令不会更改 CLI 的订阅。 在此处输入图像描述

所以我建议使用 CLI 命令az account set --subscription

于 2018-08-13T08:14:33.973 回答