0

我们有以下场景:

当前工作设置

  1. 使用单个 DockerFile 的 Web API 项目
  2. 具有“Azure 应用服务部署”任务的发布管道。

建议的新设置

  1. 使用多容器 Docker Compose 文件的 Web API 项目
  2. 带有“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(托管服务标识)。它这样做是为了在连接到密钥保管库之前获取令牌。

根据其他人发现的一些研究和解决方案,我尝试了以下方法:

  1. 连接"RunAs=App"(无论如何这似乎是默认的无参数构造函数)
  2. "MSI_SECRET"通过从机器中提取环境变量,自己手动构建连接字符串。这总是空白。
  3. 重新启动微星。
  4. 升级和降级AppAuthentication

MSI 似乎配置正确,因为它与我们当前的工作设置完美配合,因此我们可以排除这种情况。值得注意的是,这是系统分配的身份而不是用户分配的身份。

说明哪些服务支持托管标识的文档仅提及“Azure Container Instances”而不是“Azure Managed Container Instances”,这也适用于 Linux/Preview,因此可能不受支持。

支持 Azure 资源托管标识的服务

我们已经花了相当多的时间来完成配置和部署,如果我们能解决最后一个问题,那就太好了。

任何帮助表示赞赏。

4

1 回答 1

2

不幸的是,目前没有对托管身份的多容器支持。多容器功能处于预览阶段,因此它的所有功能还没有工作。

但是,您链接到的文档也不清楚支持的方案,因此我正在努力更新此文档以更好地阐明这一点。完成后,我可以更新此答案。

于 2020-04-27T23:45:04.490 回答