Share via


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

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

代理程式集區提供:

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

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

重要

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

預覽限制

  • 工作代理程式集區目前支援 Linux 節點。 目前不支援 Windows 節點。
  • 工作代理程式集區可在下列區域中預覽:美國西部 2、美國中南部、美國東部 2、美國東部、美國中部、西歐、北歐、加拿大中部、東亞、瑞士北部、USGov 亞利桑那、USGov 得克薩斯州和 USGov 維吉尼亞州。
  • 針對每個登錄,所有標準代理程式集區的預設 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 預設

注意

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

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

在 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 工作教學課程系列