适用于Azure Web App的Azure容器注册表授权

gkl3eglg  于 2023-08-07  发布在  其他
关注(0)|答案(2)|浏览(92)

有没有一种方法可以从Azure容器注册表中提取图像,而无需使用以下应用程序设置?
DOCKER_REGISTRY_SERVER_URL DOCKER_REGISTRY_SERVER_PASSWORD
我尝试为我的应用服务提供适当的RBAC,并在容器部署DevOps任务上使用Azure Web App,但这不起作用。
目前,我已经通过使用管理员用户/密码为CD设置了它,但这不是我想投入生产的选项。
我得到的错误消息(当我没有设置DOCKER_REGISTRY_SERVER_URL和DOCKER_REGISTRY_SERVER_PASSWORD时):
2020-06- 18 T11:01:51.313Z INFO -从Docker hub中提取镜像:xx.azurecr.io/xx:xx
2020-06- 18 T11:01:51.545Z错误- DockerApiException:Docker API响应状态码=InternalServerError,response={“message”:“Get https://xx.azurecr.io/v2/xx/manifests/xx:未经授权:需要身份验证”}
2020-06- 18 T11:01:51.553Z错误-图像提取失败:验证docker镜像配置和凭据(如果使用私有存储库)

mm9b1k5b

mm9b1k5b1#

应用程序设置中的环境变量:
DOCKER_REGISTRY_SERVER_URL DOCKER_REGISTRY_SERVER_PASSWORD
当您需要从Azure容器注册表中提取映像时,这些都是必要的。您需要知道应用程序设置中ACR的凭据与Web应用程序的托管身份之间的正确顺序。
Web App的托管标识用于在Web App运行时访问Web App内的其他资源。注意,Web App正在运行。这意味着图像已经从ACR中提取。因此,您可以看到,ACR的凭据将在托管身份之前使用。如果不设置凭证,则无法拉取镜像,导致Web App无法正常运行。此时,托管身份没有意义。

p3rjfoxz

p3rjfoxz2#

要使其使用托管标识,您需要设置Web应用的以下属性:

"siteConfig": {
  "acrUseManagedIdentityCreds": true
}

字符串
这样,你仍然需要DOCKER_REGISTRY_SERVER_URL来指向你的Azure容器注册表,但你不需要提供密码。显然,您的托管身份将需要在注册表上分配AcrPull角色。

相关问题