Bicep部署后Azure App Service托管标识重置问题排查与解决
问题:Azure App Service部署后ACR拉取镜像的托管标识被清空/重置
我们在使用Azure App Service时遇到以下问题:用于从Azure Container Registry (ACR)拉取容器镜像的托管标识,在Bicep部署后被清空或重置。
原Bicep配置
我们使用的资源版本为 Microsoft.Web/sites@2023-12-01,相关配置如下:
linuxFxVersion: 'DOCKER|test.azurecr.io/dummy/app:1.0.0' acrUseManagedIdentityCreds: true acrUserManagedIdentityID: identityId
尝试过的操作
曾尝试将identityId改为使用主体ID而非资源ID,但触发了另一个错误。
提问
是否有人遇到过此问题?或有调试/修复建议?该问题是否与资源版本或配置有关?
编辑:最终解决方法
针对ACR的配置调整
添加DOCKER_REGISTRY_SERVER_URL应用设置,并移除acrUserManagedIdentityID参数,配置如下:
linuxFxVersion: 'DOCKER|test.azurecr.io/dummy/app:1.0.0' acrUseManagedIdentityCreds: true appSettings: [ { name: 'DOCKER_REGISTRY_SERVER_URL' value: 'https://test.azurecr.io' } ]
针对Docker Hub的直接拉取配置
观察linuxFxVersion的行为后,我们配置了直接从Docker Hub拉取镜像的设置:
linuxFxVersion: 'DOCKER|index.docker.io/dummy/app:1.0.0' appSettings: [ { name: 'DOCKER_REGISTRY_SERVER_PASSWORD' value: '@Microsoft.KeyVault(SecretUri=${keyVaultSecretUri}/dummy-docker-key/)' } { name: 'DOCKER_REGISTRY_SERVER_USERNAME' value: 'dummy' } { name: 'DOCKER_REGISTRY_SERVER_URL' value: 'https://index.docker.io/v1' } ]
注意事项
注意到DOCKER_REGISTRY_SERVER_URL中需要包含/v1,但linuxFxVersion中不需要,这一点容易混淆,不过最终配置可以正常工作。希望官方文档能明确说明该参数的行为,包括输入URL时的格式要求。
内容的提问来源于stack exchange,提问作者Jasper Pol
相关产品推荐
相关产品推荐

