共用方式為


在專用代理程式集區執行 ACR 工作

設定 Azure 受控 VM 集區 (代理程式集區),以在專用計算環境中執行 Azure Container Registry 工作。 在登錄中設定一或多個集區之後,您可以選擇集區來執行工作,以取代服務的預設計算環境。

代理程式集區提供:

  • 虛擬網路支援 - 將代理程式集區指派給 Azure VNet,提供 VNet 中資源的存取權,例如容器登錄、金鑰保存庫或儲存體。
  • 視需要調整 - 增加代理程式集區中計算密集工作的執行個體數目,或調整為零。 計費是以集區配置為基礎。 如需詳細資料,請參閱定價
  • 彈性選項 - 從不同的集區層和調整選項中選擇,以符合工作的工作負載需求。
  • Azure 管理 - Azure 會修補和維護工作集區,提供保留配置,而不需要維護個別 VM。

進階容器登錄服務層級中提供這項功能。 如需登錄服務層級和限制的相關資訊,請參閱 Azure 容器登錄 SKU

重要

此功能目前在預覽階段,但有某些限制。 若您同意補充的使用規定即可取得預覽。 在公開上市 (GA) 之前,此功能的某些領域可能會變更。

預覽限制

  • 工作代理程式集區目前支援 Linux 節點。 目前不支援 Windows 節點。
  • 下列區域提供工作代理程式集區的預覽板: 美國西部 2、美國中南部、美國東部 2、美國東部、美國中部、西歐、北歐、加拿大中部、東亞、瑞士北部、US Gov 亞利桑那州、US Gov 德克薩斯州和 US Gov 維吉尼亞州。
  • 針對每個登錄,所有標準代理程式集區的預設 vCPU (核心) 配額總數為 16,而隔離代理程式集區則為 0。 開啟其他配置的支援要求

必要條件

  • 若要使用本文中的 Azure CLI 步驟,您必須使用 Azure CLI 2.3.1 版或更新版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。 或在 Azure Cloud Shell 中執行。
  • 如果您還沒有容器登錄,請在預覽區域中建立一個 (需要進階層級)。

集區層

代理程式集區層會針對集區中的每個執行個體提供下列資源。

類型 CPU 記憶體 (GB)
S1 standard 2 3
S2 standard 4 8
S3 standard 8 16
I6 隔離 64 216

建立和管理工作代理程式集區

設定預設登錄 (選用)

若要簡化後續的 Azure CLI 命令,請執行 az config 命令以設定預設登錄:

az config set defaults.acr=<registryName>

下列範例假設您已設定預設登錄。 如果沒有,請在每個 az acr 命令中傳遞 --registry <registryName> 參數。

建立代理程式集區

使用 az acr agentpool create 命令建立代理程式集區。 下列範例會建立 S2 集區層 (4 CPU/執行個體)。 根據預設,集區包含 1 個執行個體。

az acr agentpool create \
    --registry MyRegistry \
    --name myagentpool \
    --tier S2

注意

建立代理程式集區和其他集區管理作業需要幾分鐘的時間才能完成。

調整集區

使用 az acr agentpool update 命令擴大或縮減集區規模。 下列範例會將集區調整為 2 個執行個體。 您可以調整為 0 個執行個體。

az acr agentpool update \
    --registry MyRegistry \
    --name myagentpool \
    --count 2

在虛擬網路中建立集區

新增防火牆規則

工作代理程式集區需要存取下列 Azure 服務。 下列防火牆規則必須新增至任何現有的網路安全性群組或使用者定義的路由。

方向 通訊協定 來源 來源連接埠 Destination 目的地連接埠 Used 備註
輸出 TCP VirtualNetwork 任意 AzureKeyVault 443 預設
輸出 TCP VirtualNetwork 任意 儲存體 443 預設
輸出 TCP VirtualNetwork 任意 EventHub 443 預設
輸出 TCP VirtualNetwork 任意 AzureActiveDirectory 443 預設
輸出 TCP VirtualNetwork 任意 AzureMonitor 443,12000 預設 連接埠 12000 是用於診斷的唯一連接埠

注意

如果您的工作需要來自公用網際網路的其他資源,請新增對應的規則。 例如,執行 Docker 建置工作需要額外的規則,以從 Docker Hub 提取基礎映像或還原 NuGet 套件。

使用 MCR 進行部署的客戶可以參考 MCR/MAR 防火牆規則。

進階網路設定

如果標準防火牆/NSG (網路安全性群組) 規則被認為過於寬鬆,而輸出連線需要更精細的控制,請考慮下列方法:

  • 在代理程式集區子網路上啟用服務端點。 這會授與代理程式集區對其服務相依性的存取權,同時維護安全的網路態勢。
  • 請務必注意,仍然需要輸出防火牆/NSG 規則。 這些規則可協助虛擬網路將來源 IP 從公用切換到私人,這是啟用服務端點以外的額外步驟。

如需服務端點的詳細資訊,請參閱這裡

至少需要下列服務端點

  • Microsoft.AzureActiveDirectory
  • Microsoft.ContainerRegistry
  • Microsoft.EventHub
  • Microsoft.KeyVault
  • Microsoft.Storage (或將異地復寫納入考量的對應儲存體區域)

注意

Azure 監視器的服務端點目前不存在。 如果未設定 Azure 監視器的輸出流量,代理程式集區將無法發出診斷記錄,但似乎仍正常運作。 在此情況下,ACR 將無法協助完全針對所遇到的任何問題進行疑難排解,因此在規劃網路設定時,網路管理員務必將此納入考量。

此外,請務必注意,所有 ACR 工作對於一些較常見的使用案例都有預先快取的映像。 工作一次只會快取單一版本,這表示如果使用完整的標記映像參考,則組建代理程式會嘗試提取映像。 例如,常見的使用案例是 cmd: mcr.microsoft.com/acr/acr-cli:<tag>。 不過,預先快取的版本經常更新,這表示機器上的實際版本可能會更高。 在此情況下,網路設定必須針對到目標登錄主機的輸出流量設定路由,上述範例中是 mcr.microsoft.com。 相同的規則適用於任何其他外部公用登錄 (docker.io、quay.io、ghcr.io 等)。

在 VNet 中建立集區

下列範例會在網路 myvnetmysubnet 子網中建立代理程式集區:

# Get the subnet ID
subnetId=$(az network vnet subnet show \
        --resource-group myresourcegroup \
        --vnet-name myvnet \
        --name mysubnetname \
        --query id --output tsv)

az acr agentpool create \
    --registry MyRegistry \
    --name myagentpool \
    --tier S2 \
    --subnet-id $subnetId

在代理程式集區執行工作

下列範例示範如何在佇列工作時指定代理程式集區。

注意

若要在 ACR 工作中使用代理程式集區,請確定集區至少包含 1 個執行個體。

快速工作

使用 az acr build 命令將代理程式集區的快速工作排入佇列,並傳遞 --agent-pool 參數:

az acr build \
    --registry MyRegistry \
    --agent-pool myagentpool \
    --image myimage:mytag \
    --file Dockerfile \
    https://github.com/Azure-Samples/acr-build-helloworld-node.git#main

自動觸發工作

例如,使用 az acr task create 在代理程式集區建立排程的工作,並傳遞 --agent-pool 參數。

az acr task create \
    --registry MyRegistry \
    --name mytask \
    --agent-pool myagentpool \
    --image myimage:mytag \
    --schedule "0 21 * * *" \
    --file Dockerfile \
    --context https://github.com/Azure-Samples/acr-build-helloworld-node.git#main \
    --commit-trigger-enabled false

若要確認工作設定,請執行 az acr task run

az acr task run \
    --registry MyRegistry \
    --name mytask

查詢集區狀態

若要尋找代理程式集區目前排程的執行數目,請執行 az acr agentpool show

az acr agentpool show \
    --registry MyRegistry \
    --name myagentpool \
    --queue-count

下一步

如需在雲端建置和維護容器映像的更多範例,請參閱 ACR 工作教學課程系列