[英]How to avoid having to enter image version in deployment yaml and use most recent image from azure container registry
[英]How can I use a SystemAssigned identity when pulling an image from Azure Container Registry into Azure Container Instances?
我想在Azure Container Instances中创建一个容器(或容器组),从Azure Container Registry中提取图像 - 但使用SystemAssigned身份。 因此,我想避免使用 ACR 登录凭据、服务主体或UserAssigned身份。
当我运行此脚本时(PowerShell 中的 Azure CLI) ...
$LOC = "westeurope"
$RG = "myresourcegroup"
$ACRNAME = "myacr"
az configure --defaults location=$LOC group=$RG
$acr = az acr show -n $ACRNAME -o json | ConvertFrom-Json -Depth 10
az container create --name app1 --image $($acr.loginServer+"/app1") `
--assign-identity --role acrpull --scope $acr.id `
--debug
... ACI 似乎没有意识到它应该已经获得 ACR 授权并显示此提示:
Image registry username:
Azure CLI 版本:2.14.0
这有意义吗? ACR 是否支持 ACI 托管身份?
从 2022 年 1 月起,Azure 容器实例支持托管身份以访问 Azure 容器注册表: https://learn.microsoft.com/en-us/azure/container-instances/using-azure-container-registry-mi
在您的代码中,当您使用在 ACI 创建时创建的托管标识创建 Azure 容器以对 ACR 进行身份验证时。 恐怕你不能这样做,因为有限制
创建容器组时,不能使用托管标识从 Azure 容器注册表中拉取映像。 该身份仅在正在运行的容器中可用。
此解决方案将不使用托管标识,重要的是要注意,我们将需要至少在资源组级别上的所有者角色。
主要思想是使用服务主体通过 acrpull 角色获取访问权限。 请参阅以下 PowerShell 脚本:
$resourceGroup = (az group show --name $resourceGroupName | ConvertFrom-Json )
$containerRegistry = (az acr show --name $containerRegistryName | ConvertFrom-Json)
$servicePrincipal = (az ad sp create-for-rbac `
--name "${containerRegistryName}.azurecr.io" `
--scopes $containerRegistry.id `
--role acrpull `
| ConvertFrom-Json )
az container create `
--name $containerInstanceName `
--resource-group $resourceGroupName `
--image $containerImage `
--command-line "tail -f /dev/null" `
--registry-username $servicePrincipal.appId `
--registry-password $servicePrincipal.password
请注意,我们已经创建了一个服务主体,因此我们还需要删除它:
az ad sp delete --id $servicePrincipal.appId
有一个关于如何做到这一点的文档:
@minus_one - 解决方案在我的情况下不起作用。 用于制作容器注册表的操作手册。 它确实需要比此处所述更多的权限... https://github.com/Azure/azure-powershell/issues/3215
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.