전용 에이전트 풀에서 ACR 작업 실행

전용 컴퓨팅 환경에서 Azure Container Registry 작업을 실행할 수 있도록 Azure 관리형 VM 풀(‘에이전트 풀’)을 설정합니다. 레지스트리에서 풀을 하나 이상 구성하면 서비스의 기본 컴퓨팅 환경 대신 작업을 실행할 풀을 선택할 수 있습니다.

에이전트 풀은 다음을 제공합니다.

  • 가상 네트워크 지원 - Azure VNet에 에이전트 풀을 할당하여 컨테이너 레지스트리, 키 자격 증명 모음, 스토리지 등과 같은 VNet의 리소스에 대한 액세스를 제공합니다.
  • 필요에 따라 스케일링 - 컴퓨팅을 많이 사용하는 작업에 대해 에이전트 풀의 인스턴스 수를 늘리거나 0으로 스케일링합니다. 요금은 풀 할당을 기준으로 청구됩니다. 자세한 내용은 가격 책정을 참조하세요.
  • 유연한 옵션 - 작업 워크로드 요구 사항에 맞게 다양한 풀 계층 및 스케일링 옵션 중에서 선택합니다.
  • Azure 관리 - 작업 풀을 Azure에서 패치하고 유지 관리하여 예약된 할당을 제공하므로 개별 VM을 유지 관리할 필요가 없습니다.

이 기능은 프리미엄 컨테이너 레지스트리 서비스 계층에서 사용할 수 있습니다. 레지스트리 서비스 계층 및 제한에 대한 자세한 내용은 Azure Container Registry SKU를 참조하세요.

Important

이 기능은 현재 미리 보기로 제공되며 일부 제한 사항이 적용됩니다. 추가 사용 약관에 동의하는 조건으로 미리 보기를 사용할 수 있습니다. 이 기능의 몇 가지 측면은 일반 공급(GA) 전에 변경될 수 있습니다.

미리 보기 제한 사항

  • 작업 에이전트 풀에서는 현재 Linux 노드를 지원합니다. Windows 노드는 현재 지원되지 않습니다.
  • 작업 에이전트 풀은 미국 서부 2, 미국 중남부, 미국 동부 2, 미국 동부, 미국 중부, 서유럽, 북유럽, 캐나다 중부, 동아시아, 스위스 북부, USGov 애리조나, USGov 텍사스, USGov 버지니아 지역에서 미리 보기로 제공됩니다.
  • 각 레지스트리에 대해 기본 총 vCPU(코어) 할당량은 모든 표준 에이전트 풀의 경우 16개, 격리 에이전트 풀의 경우 0개입니다. 추가 할당이 필요하면 지원 요청을 엽니다.

필수 조건

  • 이 문서의 Azure CLI 단계를 사용하려면 Azure CLI 버전 2.3.1 이상이 필요합니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요. 또는 Azure Cloud Shell에서 실행합니다.
  • 컨테이너 레지스트리가 아직 없는 경우 미리 보기 지역에서 만듭니다(프리미엄 계층 필요).

풀 계층

에이전트 풀 계층에서는 풀의 인스턴스당 다음과 같은 리소스를 제공합니다.

계층 Type CPU 메모리(GB)
S1 표준 2 3
S2 표준 4 8
S3 표준 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 서비스에 액세스해야 합니다. 기존 네트워크 보안 그룹이나 사용자 정의 경로에 다음 방화벽 규칙을 추가해야 합니다.

방향 프로토콜 원본 원본 포트 대상 대상 포트 사용됨 설명
아웃바운드 TCP VirtualNetwork 모두 AzureKeyVault 443 기본값
아웃바운드 TCP VirtualNetwork 모두 스토리지 443 기본값
아웃바운드 TCP VirtualNetwork 모두 EventHub 443 기본값
아웃바운드 TCP VirtualNetwork 모두 AzureActiveDirectory 443 기본값
아웃바운드 TCP VirtualNetwork 모두 AzureMonitor 443,12000 기본값 12000 포트는 진단에 사용되는 고유한 포트입니다.

참고 항목

작업에 퍼블릭 인터넷의 추가 리소스가 필요한 경우 해당 규칙을 추가합니다. 예를 들어 Docker Hub에서 기본 이미지를 가져오는 Docker 빌드 작업을 실행하거나 NuGet 패키지를 복원하려면 추가 규칙이 필요합니다.

MCR을 기준으로 배포를 수행하는 고객은 MCR/MAR 방화벽 규칙을 참조할 수 있습니다.

고급 네트워크 구성

표준 방화벽/NSG(네트워크 보안 그룹) 규칙이 너무 허용 범위가 큰 것으로 간주되고 아웃바운드 연결에 대해 보다 세분화된 제어가 필요한 경우 다음 접근 방식을 고려합니다.

  • 에이전트 풀 서브넷에서 서비스 엔드포인트를 사용하도록 설정합니다. 이렇게 하면 보안 네트워크 상태를 유지하면서 에이전트 풀에 해당 서비스 종속성에 대한 액세스 권한이 부여됩니다.
  • 아웃바운드 방화벽/NSG 규칙은 여전히 필요합니다. 이러한 규칙은 Virtual Network가 원본 IP를 퍼블릭에서 프라이빗으로 전환하는 기능을 용이하게 하며, 이는 서비스 엔드포인트를 사용하도록 설정하는 것 이상의 추가적인 단계입니다.

서비스 엔드포인트에 대한 자세한 내용은 여기에 설명되어 있습니다.

최소한 다음 서비스 엔드포인트가 필요합니다.

  • Microsoft.AzureActiveDirectory
  • Microsoft.ContainerRegistry
  • Microsoft.EventHub
  • Microsoft.KeyVault
  • Microsoft.Storage(또는 지역 복제를 고려하는 해당 스토리지 지역)

참고 항목

현재 Azure Monitor에 대한 서비스 엔드포인트가 없습니다. Azure Monitor에 대한 아웃바운드 트래픽이 구성되지 않은 경우 에이전트 풀은 진단 로그를 내보낼 수 없지만 여전히 정상적으로 작동하는 것처럼 보일 수 있습니다. 이 경우 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 작업 자습서 시리즈를 확인하세요.