【发布时间】:2020-04-26 18:18:49
【问题描述】:
我们有以下场景:
当前工作设置
- 使用单个 DockerFile 的 Web API 项目
- 带有“Azure 应用服务部署”任务的发布管道。
建议的新设置
- 使用多容器 Docker Compose 文件的 Web API 项目
- 带有“Azure Web App for Containers”任务的发布管道。
部署新设置后,我们会收到以下错误消息:
ERROR - multi-container unit was not started successfully
Unhandled exception. System.AggregateException: One or more errors occurred.
(Parameters: Connection String: XXX, Resource: https://vault.azure.net, Authority:
https://login.windows.net/xxxxx. Exception Message:
Tried to get token using Managed Service Identity.
Access token could not be acquired. Connection refused)
引发的异常是因为它无法连接到 Azure MSI(托管服务标识)。它这样做是为了在连接到密钥保管库之前获取令牌。
根据其他人发现的一些研究和解决方案,我尝试了以下方法:
- 与
"RunAs=App"连接(这似乎是默认的无参数构造函数) - 通过从机器中拉出
"MSI_SECRET"环境变量自己手动建立连接字符串。这始终是空白的。 - 正在重新启动 MSI。
- 升级和降级
AppAuthentication包
MSI 似乎配置正确,因为它与我们当前的工作设置完美配合,因此我们可以排除这种情况。 值得注意的是,这是系统分配的身份,而不是用户分配的身份。
说明哪些服务支持托管标识的文档仅提及“Azure Container Instances”而不是“Azure Managed Container Instances”,这也适用于 Linux/Preview,因此可能不受支持。
Services that support managed identities for Azure resources
我们在配置和部署方面花费了大量时间,如果我们能解决最后一个问题,那就太好了。
任何帮助表示赞赏。
【问题讨论】:
标签: docker docker-compose azure-devops azure-managed-identity azure-pipelines-release-task