다음을 통해 공유


관리형 DevOps 풀 네트워킹 구성

관리형 DevOps 풀 에이전트는 격리된 가상 네트워크 또는 기존 가상 네트워크로 실행되도록 구성할 수 있습니다. 이 문서에서는 가상 네트워크에서 에이전트를 실행하도록 관리되는 DevOps 풀을 구성하는 방법을 설명합니다.

사용자 고유의 가상 네트워크에 에이전트 추가

다음과 같은 시나리오를 위해 관리형 DevOps 풀의 에이전트를 사용자 고유의 가상 네트워크에 추가할 수 있습니다.

  • CI/CD 에이전트는 Express Route와 같은 서비스를 통해 회사 네트워크에서만 사용할 수 있는 리소스에 액세스해야 합니다.
  • CI/CD 에이전트는 프라이빗 엔드포인트로 격리된 리소스에 액세스해야 합니다.
  • 회사별 방화벽 규칙을 사용하여 사용자 고유의 VNet을 가져와서 CI/CD 인프라를 네트워크 격리하려고 합니다.
  • 기본 관리형 DevOps 풀 네트워킹 관련 기능으로는 달성할 수 없는 다른 고유한 사용 사례

다음 단계를 사용하여 가상 네트워크에 풀의 에이전트를 추가할 수 있습니다.

  1. 가상 네트워크 및 서브넷 만들기 또는 가져오기
  2. Microsoft.DevOpsInfrastructure/pools에 서브넷 위임
  3. 서브넷을 관리형 DevOps 풀과 연결

이전 단계에서는 풀에서 단독 액세스를 위해 서브넷을 위임하고 서브넷은 다른 풀 또는 리소스에서 사용할 수 없습니다. 여러 풀을 동일한 가상 네트워크에 연결하기 위해 각각 위임되고 자체 풀과 연결된 여러 서브넷을 사용할 수 있습니다.

가상 네트워크 및 서브넷 만들기 또는 가져오기

서브넷에는 연결하려는 풀의 최대 풀 크기를 수용할 수 있는 충분한 주소 공간이 있어야 합니다(서브넷에 5개의 IP 주소 Azure 예약 포함). Express Route를 사용하는 경우 쓰기를 허용하도록 리소스 그룹의 관리 잠금을 일시적으로 삭제하거나 변경해야 합니다.

Important

관리되는 DevOps 풀 및 가상 네트워크는 동일한 지역에 있어야 합니다. 그렇지 않으면 풀을 만들거나 네트워크 구성을 업데이트하려고 할 때 다음과 유사한 오류가 발생합니다. Virtual network MDPVN is in region eastus, but pool mdpnonprodsub is in region australiaeast. These must be in the same region.

DevOpsInfrastructure 서비스 주체에 대한 읽기 권한자 및 네트워크 기여자 액세스 권한 부여

DevOpsInfrastructure 보안 주체가 가상 네트워크에서 다음과 같은 액세스 권한을 가지고 있는지 확인합니다.

  • ReaderNetwork Contributor
  • 또는 사용자 지정 역할에 다음 권한을 추가합니다.
    • Microsoft.Network/virtualNetworks/*/read
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/action
    • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/write
    • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/delete

서비스 연결 링크 액세스에 대한 사용자 지정 역할을 만듭니다. 다음 예제와 같이 Access Control 탭의 리소스 그룹 또는 구독 수준에서 예제 역할을 만들 수 있습니다.

사용자 지정 역할 권한의 스크린샷

DevOpsInfrastructure 보안 주체 액세스를 확인하려면

  1. 가상 네트워크에 대한 액세스 제어(IAM)를 선택하고 액세스 확인을 선택합니다.

    서브넷 위임에 대한 VNet 권한의 스크린샷.

  2. DevOpsInfrastructure를 검색하여 선택합니다.

    AzureDevOpsInfrastructure 보안 주체를 선택하는 스크린샷

  3. 읽기 권한자 액세스를 확인합니다. 액세스 Microsoft.Network/virtualNetworks/subnets/join/actionMicrosoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/actionMicrosoft.Network/virtualNetworks/subnets/serviceAssociationLinks/write 할당되었는지 확인합니다. 사용자 지정 역할이 여기에 표시됩니다.

    VNet 권한의 스크린샷.

  4. DevOpsInfrastructure에 이러한 권한이 없는 경우 가상 네트워크에 대한 액세스 제어(IAM)를 선택하여 추가하고 이 리소스에 대한 액세스 권한 부여를 선택하고 추가합니다.

Microsoft.DevOpsInfrastructure/pools에 서브넷 위임

서브넷을 사용할 서브넷에 Microsoft.DevOpsInfrastructure/pools 위임해야 합니다. 포털에서 서브넷 속성을 열고 서브넷 위임 섹션에서 선택하고 Microsoft.DevOpsInfrastructure/pools 저장을 선택합니다.

서브넷 위임을 구성하는 스크린샷.

이렇게 하면 풀에 대한 단독 액세스를 위해 서브넷을 위임하고 서브넷은 다른 풀 또는 리소스에서 사용할 수 없습니다. 여러 풀을 동일한 가상 네트워크에 연결하려면 각각 위임되고 자체 풀과 연결된 여러 서브넷을 사용해야 합니다. 서브넷 위임에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

서브넷이 위임되면 서브넷을 Microsoft.DevOpsInfrastructure/pools사용하도록 풀을 업데이트할 수 있습니다.

서브넷을 관리형 DevOps 풀과 연결

  1. 새 풀을 만드는 경우 네트워킹 탭으로 이동합니다. 기존 풀을 업데이트하려면 설정>으로 이동하여 기존 가상 네트워크에 삽입된 에이전트를 선택합니다. 구성합니다.

    구성 옵션의 스크린샷.

  2. 위임한 구독, 가상 네트워크서브넷Microsoft.DevOpsInfrastructure/pools선택하고 확인을 선택합니다.

    서브넷을 풀에 연결한 스크린샷

네트워크 업데이트가 완료되면 풀에서 새로 만든 리소스가 위임된 서브넷을 사용합니다.

아웃바운드 연결 제한

아웃바운드 연결을 제한하는 네트워크(NSG, 방화벽 등)에 시스템이 있는 경우 다음 도메인에 액세스할 수 있는지 확인해야 합니다. 그렇지 않으면 관리되는 DevOps 풀이 작동하지 않습니다. 달리 명시되지 않는 한 모두 HTTPS입니다.

  • 서비스에서 사용하는 매우 안전한 엔드포인트는 다음과 같습니다.
    • *.prod.manageddevops.microsoft.com - 관리형 DevOps 풀 엔드포인트
    • rmprodbuilds.azureedge.net - 작업자 이진 파일
    • vstsagentpackage.azureedge.net - Azure DevOps 에이전트 CDN 위치
    • *.queue.core.windows.net - 관리되는 DevOps 풀 서비스와 통신하기 위한 작업자 큐
    • server.pipe.aria.microsoft.com - 일반적인 클라이언트 쪽 원격 분석 솔루션(및 에이전트 풀 유효성 검사 확장에서 사용)
    • azure.archive.ubuntu.com - Linux 머신 프로비전 - HTTPS가 아닌 HTTP입니다.
    • www.microsoft.com - Linux 머신 프로비전
    • security.ubuntu.com - Linux 머신 프로비전
  • 서비스에서 종속되는 보안이 덜하고 개방형 엔드포인트는 다음과 같습니다.
    • 서비스에 필요한 사항:
      • packages.microsoft.com - Linux 머신 프로비전
      • ppa.launchpad.net - Ubuntu 머신 프로비전
      • dl.fedoraproject.org - 특정 Linux 배포판 프로비전
    • Azure DevOps 에이전트에 필요한 사항:
      • dev.azure.com
      • *.services.visualstudio.com
      • *.vsblob.visualstudio.com
      • *.vssps.visualstudio.com
      • *.visualstudio.com 이러한 항목은 필요한 최소 도메인입니다. 문제가 있는 경우 필요한 도메인의 전체 목록은 Azure DevOps 허용 목록을 참조하세요.
  • Azure 관련 엔드포인트: Azure VM은 서브넷을 통해 특정 Azure 기능으로 트래픽을 라우팅할 수 있습니다. 이러한 요청의 경우 Azure를 통해 직접 요청을 라우팅하거나 네트워크를 통해 액세스를 사용하도록 설정하는 옵션이 있습니다.
    1. 서비스 엔드포인트를 통해 실행되도록 Azure 트래픽 구성

      Azure를 통한 트래픽 라우팅은 NSG 또는 방화벽에 처리량을 추가하는 것을 방지하며 다음 옵션에 나열된 도메인을 허용 목록에 추가할 필요가 없습니다.

      예를 들어 데이터 디스크 기능을 사용하면 Azure Storage에 대한 네트워크 호출이 포함됩니다. 네트워크에서 Microsoft.Storage 서비스 엔드포인트를 사용하도록 설정하면 트래픽이 Azure를 통해 직접 라우팅되어 네트워크 규칙을 방지하고 부하가 줄어듭니다.

    2. 서비스 엔드포인트를 통해 트래픽을 라우팅하지 않으려면 특정 기능을 위한 허용 목록에 추가할 도메인입니다.

      • - 데이터 디스크 구성해야 합니다.

컨테이너 내에서 실행되도록 Azure DevOps Pipeline을 구성하는 경우 컨테이너 이미지의 원본(Docker 또는 ACR)도 허용 목록에 추가해야 합니다.

프록시 뒤에서 실행되도록 Azure DevOps 에이전트 구성

이미지에 프록시 서비스를 구성하고 Managed DevOps 풀에서 실행되는 워크로드가 이 프록시 뒤에서 실행되도록 하려면 이미지에 다음 환경 변수를 추가해야 합니다.

  • VSTS_AGENT_INPUT_PROXYURL - 뒤에 실행하도록 구성된 프록시의 URL
  • VSTS_AGENT_INPUT_PROXYUSERNAME - 프록시를 사용하는 데 필요한 사용자 이름
  • VSTS_AGENT_INPUT_PROXYPASSWORD - 프록시를 사용할 암호입니다.

Windows의 경우 이러한 환경 변수는 시스템 환경 변수여야 하며 Linux의 경우 이러한 변수는 /etc/environment 파일에 있어야 합니다. 이미지에 구성된 프록시 서비스를 잘못 또는 사용하지 않고 이러한 시스템 변수를 설정하면 네트워크 연결 문제로 인해 새 에이전트의 프로비저닝이 실패합니다.

Azure Virtual Machine Scale Set 에이전트에서 마이그레이션하고 Azure Virtual Machine Scale Set 에이전트에 설명된 대로 이미지에서 프록시 환경 변수를 이미 사용하고 있는 경우 파이프라인 에이전트 구성 사용자 지정을 변경할 필요가 없습니다.

참고 항목