azure - 从 Azure Kubernetes 服务使用 Azure 容器注册表进行身份验证时的问题
问题描述
我使用 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
解决方案
对于命令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
。
推荐阅读
- javascript - 如何更新服务器成员缓存?
- python-3.x - Cpython、IronPython、Jython 有什么用?是在 Python 到机器码的代码转换过程中使用的吗?
- vaadin - 如何通过按钮将紧凑应用到 Vaadin 14 中的网格
- css - Flexbox 容器覆盖按钮
- javascript - 如何删除特定的事件监听器?
- javascript - Material-UI Pickers 时间没有变化?
- c++ - 尝试使用 windres 编译 .rc 文件时出现问题
- python - 大型 yaml 加载导致 MemoryError
- javascript - 多个表单验证,除了最后一个卡在 Vue 中的 Pending 状态
- nginx - 使用 Helm 图表安装 Nginx Ingress Controller