簡體   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