我们有以下场景:
当前工作设置
- 使用单个 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"
通过从机器中提取环境变量,自己手动构建连接字符串。这总是空白。- 重新启动微星。
- 升级和降级
AppAuthentication
包
MSI 似乎配置正确,因为它与我们当前的工作设置完美配合,因此我们可以排除这种情况。值得注意的是,这是系统分配的身份而不是用户分配的身份。
说明哪些服务支持托管标识的文档仅提及“Azure Container Instances”而不是“Azure Managed Container Instances”,这也适用于 Linux/Preview,因此可能不受支持。
我们已经花了相当多的时间来完成配置和部署,如果我们能解决最后一个问题,那就太好了。
任何帮助表示赞赏。