1

使用自定义映像(来自 Centos 7 基础映像)为容器部署了 Azure 应用服务。根据以下文档,Azure 应设置一个环境变量,用于创建 REST API 请求以获取访问令牌:

  • IDENTITY_ENDPOINT - 本地令牌服务的 URL。

但是,在容器内部检查时,未设置此变量:

[root@f22dfd74be31 ~]# echo $IDENTITY_ENDPOINT
(empty result here)

我也尝试过调用 az cli,但也失败了:

[root@f22dfd74be31 ~]# az login -i
AzureConnectionError: Failed to connect to MSI. Please make sure MSI is configured correctly 
and check the network connection.
Error detail: HTTPConnectionPool(host='169.254.169.254', port=80): Max retries exceeded with 
url: /metadata/identity/oauth2/token?resource=https%3
A%2F%2Fmanagement.core.windows.net%2F&api-version=2018-02-01 (Caused by 
NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f9e0c4
c72e8>: Failed to establish a new connection: [Errno 110] Connection timed out',))

我已经成功地将托管标识用于虚拟机和应用服务(代码部署而不是容器),它是否支持容器应用服务和自定义容器?

4

2 回答 2

2

使用容器的应用服务时,“平台”环境变量(包括托管标识和应用设置)仅在容器初始化时可用。为了使这些变量可以从容器中访问,必须在容器启动脚本中加入以下行(从 Dockerfile ENTRYPOINT 调用):

eval $(printenv | sed -n "s/^\([^=]\+\)=\(.*\)$/export \1=\2/p" | sed 's/"/\\\"/g' | sed '/=/s//="/' | sed 's/$/"/' >> /etc/profile)
于 2020-12-28T17:57:58.627 回答
0

它应该支持 MSI,请确保启用 MSI,如下所示。

在此处输入图像描述

此外,本文档中的第 4 步还提到了启用 MSI 的 CLI 命令。

az webapp identity assign --resource-group AppSvc-DockerTutorial-rg --name <app-name> --query principalId --output tsv
于 2020-12-28T01:47:04.243 回答