繁体   English   中英

将 Azure Web 应用程序用于具有托管标识的容器

[英]Using Azure Web App for Containers with managed identity

为具有自定义映像的容器部署了 Azure 应用服务(来自 Centos 7 基础映像)。 根据以下文档,有一个环境变量应由 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',))

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

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

eval $(printenv | sed -n "s/^\([^=]\+\)=\(.*\)$/export \1=\2/p" | sed 's/"/\\\"/g' | sed '/=/s//="/' | sed 's/$/"/' >> /etc/profile)

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

在此处输入图像描述

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

az webapp identity assign --resource-group AppSvc-DockerTutorial-rg --name <app-name> --query principalId --output tsv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM