다음을 통해 공유


배포를 실행하도록 컨테이너 이미지 구성

이 문서에서는 ADE(Azure Deployment Environments)에서 환경 정의를 배포하기 위해 사용자 지정 Bicep 컨테이너 이미지를 빌드하는 방법을 알아봅니다.

이 문서에서는 ADE(Azure Deployment Environments)에 환경 정의를 배포하기 위해 사용자 지정 Terraform 컨테이너 이미지를 빌드하는 방법을 알아봅니다. Terraform IaC(코드 제공 인프라) 프레임워크를 사용하여 인프라를 프로비전하기 위해 사용자 지정 이미지를 구성하는 방법을 알아봅니다.

이 문서에서는 ADE(Azure Deployment Environments) 배포에 Pulumi를 활용하는 방법을 알아봅니다. Pulumi에서 제공하는 샘플 이미지를 사용하는 방법 또는 Pulumi IaC(코드 제공 인프라) 프레임워크를 사용하여 인프라를 프로비전하기 위해 사용자 지정 이미지를 구성하는 방법을 알아봅니다.

ADE는 환경 정의에 사용할 수 있는 사용자 지정 이미지를 만들 수 있는 확장성 모델을 지원합니다. 이 확장성 모델을 사용하려면 사용자 지정 이미지를 만들고 ACR(Azure Container Registry) 또는 Docker Hub와 같은 컨테이너 레지스트리에 저장합니다. 그런 다음 환경 정의에서 이러한 이미지를 참조하여 환경을 배포할 수 있습니다.

환경 정의는 최소한 두 개의 파일, 즉 azuredeploy.json 또는 main.bicep과 같은 템플릿 파일과 environment.yaml이라는 매니페스트 파일로 구성됩니다. ADE는 컨테이너를 사용하여 환경 정의를 배포합니다.

ADE 팀은 핵심 이미지와 ARM(Azure Resource Manager)-Bicep 이미지를 포함하여 시작하는 데 필요한 다양한 이미지를 제공합니다. Runner-Images 폴더에서 이러한 샘플 이미지에 액세스할 수 있습니다.

환경 정의는 최소한 두 개의 파일, 즉 main.tf와 같은 템플릿 파일과 environment.yaml이라는 매니페스트 파일로 구성됩니다. 컨테이너를 사용하여 Terraform을 사용하는 환경 정의를 배포합니다.

환경 정의는 최소한 두 개의 파일, 즉 Pulumi 프로젝트 파일인 Pulumi.yaml과 이름이 environment.yaml인 매니페스트 파일로 구성됩니다. 여기에는 기본 프로그래밍 언어(C#, TypeScript, Python 등)로 작성된 사용자 프로그램이 포함될 수도 있습니다. ADE는 컨테이너를 사용하여 환경 정의를 배포합니다.

필수 조건

ADE에서 컨테이너 이미지 사용

ADE에서 컨테이너 이미지를 사용하려면 다음 방식 중 하나를 사용할 수 있습니다.

  • 샘플 컨테이너 이미지 사용 간단한 시나리오의 경우 ADE에서 제공하는 샘플 ARM-Bicep 컨테이너 이미지를 사용합니다.
  • 사용자 지정 컨테이너 이미지 만들기 더 복잡한 시나리오의 경우 특정 요구 사항을 충족하는 사용자 지정 컨테이너 이미지를 만듭니다.

컨테이너 이미지를 사용할 때 따르는 주요 단계는 다음과 같습니다.

  1. 사용할 이미지 형식(샘플 이미지 또는 사용자 지정 이미지)을 선택합니다.
    • 사용자 지정 이미지를 사용하는 경우 샘플 이미지로 시작한 다음 요구 사항에 맞게 사용자 지정합니다.
  2. 이미지를 빌드합니다.
  3. 이미지를 프라이빗 레지스트리나 공용 레지스트리에 업로드합니다.
  4. 레지스트리에 대한 액세스를 구성합니다.
    • 공용 레지스트리의 경우 익명 풀을 구성합니다.
    • 프라이빗 레지스트리의 경우 DevCenter ACR 권한을 부여합니다.
  5. 환경 정의의 runner 매개 변수에 이미지 위치 추가
  6. 사용자 지정 이미지를 사용하는 환경을 배포합니다.

이 프로세스의 첫 번째 단계는 사용하려는 이미지 형식을 선택하는 것입니다. 해당 탭을 선택하여 프로세스를 확인합니다.

샘플 컨테이너 이미지 사용

ADE는 별도의 구성 없이 ARM과 Bicep을 지원합니다. 카탈로그에 템플릿 파일(예: azuredeploy.jsonenvironment.yaml)을 추가하여 배포 환경에 대한 Azure 리소스를 배포하는 환경 정의를 만들 수 있습니다. ADE는 샘플 ARM-Bicep 컨테이너 이미지를 사용하여 배포 환경을 만듭니다.

environment.yaml 파일에서 runner 속성은 사용하려는 컨테이너 이미지의 위치를 ​​지정합니다. Microsoft 아티팩트 레지스트리에 게시된 샘플 이미지를 사용하려면 해당 식별자 runner를 사용합니다.

다음 예에서는 샘플 ARM-Bicep 컨테이너 이미지를 참조하는 runner를 보여 줍니다.

    name: WebApp
    version: 1.0.0
    summary: Azure Web App Environment
    description: Deploys a web app in Azure without a datastore
    runner: Bicep
    templatePath: azuredeploy.json

ARM-Bicep용 Runner-Images 폴더 이미지 아래의 ADE 샘플 리포지토리에서 샘플 Bicep 컨테이너 이미지를 볼 수 있습니다.

ADE 컨테이너 이미지를 사용하여 Azure 리소스를 배포하는 환경 정의를 만드는 방법에 대한 자세한 내용은 환경 정의 추가 및 구성을 참조하세요.

사용자 지정 이미지를 사용하여 Terraform 이미지를 구성합니다.

Pulumi에서 제공하는 샘플 컨테이너 이미지 사용

Pulumi 팀은 시작하는 데 도움이 되는 미리 빌드된 이미지를 제공하며, 이 이미지는 Runner-Image 폴더에서 볼 수 있습니다. 이 이미지는 Pulumi의 Docker Hub에서 pulumi/azure-deployment-environments로 공개적으로 제공되므로 ADE 환경 정의에서 직접 사용할 수 있습니다.

미리 빌드된 이미지를 활용하는 샘플 environment.yaml 파일은 다음과 같습니다.

name: SampleDefinition
version: 1.0.0
summary: First Pulumi-Enabled Environment
description: Deploys a Storage Account with Pulumi
runner: pulumi/azure-deployment-environments:0.1.0
templatePath: Pulumi.yaml

환경 폴더에서 몇 가지 샘플 환경 정의를 찾을 수 있습니다.

이미지 빌드

Docker CLI를 사용하여 이미지를 빌드할 수 있습니다. 컴퓨터에 Docker Engine이 설치되었는지 확인합니다. 그런 다음 Dockerfile 디렉터리로 이동하여 다음 명령을 실행합니다.

docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}

예를 들어, customImage라는 레지스트리 내의 리포지토리에 이미지를 저장하고 1.0.0 태그 버전으로 업로드하려면 다음을 실행합니다.

docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0

사용자 지정 이미지를 ADE에서 사용할 수 있도록 설정

사용자 지정 이미지를 사용하려면 컨테이너 레지스트리에 저장해야 합니다. 공용 컨테이너 레지스트리나 프라이빗 컨테이너 레지스트리를 사용할 수 있습니다. ACR(Azure Container Registry)이 적극 권장되며, ADE와의 긴밀한 통합 덕분에 공용 익명 풀 액세스를 허용하지 않고도 이미지를 게시할 수 있습니다. ADE에서 사용할 수 있도록 하려면 사용자 지정 컨테이너 이미지를 빌드하고 컨테이너 레지스트리에 푸시해야 합니다.

Docker Hub와 같은 다른 컨테이너 레지스트리에 이미지를 저장하는 것도 가능하지만, 이 경우에는 공개적으로 액세스할 수 있어야 합니다.

주의

익명(인증되지 않은) 풀 액세스가 가능한 레지스트리에 컨테이너 이미지를 저장하면 공개적으로 액세스할 수 있습니다. 이미지에 중요한 정보가 포함된 경우 해당 작업을 수행하지 마세요. 대신 익명 풀 액세스를 사용하지 않도록 설정하여 ACR(Azure Container Registry)에 저장하세요.

ACR에 저장된 사용자 지정 이미지를 사용하려면 ADE가 해당 이미지에 액세스할 수 있는 적절한 권한이 있는지 확인해야 합니다. ACR 인스턴스를 만들면 기본적으로 보안이 적용되며 인증된 사용자만 액세스할 수 있습니다.

Pulumi를 사용하여 Azure Container Registry를 만들고 여기에 이미지를 게시할 수 있습니다. Azure 계정에 필요한 모든 리소스를 만드는 독립형 Pulumi 프로젝트에 대한 프로비전/사용자 지정 이미지 예를 참조하세요.

각 방식에 대해 자세히 알아보려면 해당 탭을 선택합니다.

보호된 액세스가 가능한 프라이빗 레지스트리 사용

기본적으로 Azure Container Registry에서 콘텐츠를 끌어오거나 푸시하는 액세스는 인증된 사용자만 사용할 수 있습니다. 특정 네트워크에서의 액세스를 제한하고 특정 역할을 할당하면 ACR에 대한 액세스를 더욱 안전하게 보호할 수 있습니다.

Azure CLI, Azure Portal, PowerShell 명령 등을 통해 ACR 인스턴스를 만들려면 빠른 시작 중 하나를 따르세요.

네트워크 액세스 제한

ACR에 대한 네트워크 액세스를 보호하려면 고유의 네트워크에 대한 액세스를 제한하거나 공용 네트워크 액세스를 완전히 사용하지 않도록 설정할 수 있습니다. 네트워크 액세스를 제한하는 경우 신뢰할 수 있는 Microsoft 서비스가 이 컨테이너 레지스트리에 액세스하도록 허용 방화벽 예외를 사용하도록 설정해야 합니다.

공용 네트워크에서의 액세스를 사용하지 않도록 설정하려면 다음을 수행합니다.

  1. ACR 인스턴스를 만들거나 기존 인스턴스를 사용합니다.

  2. Azure Portal에서 구성하려는 ACR로 이동합니다.

  3. 왼쪽 메뉴의 설정에서 네트워킹을 선택합니다.

  4. 네트워킹 페이지의 공용 액세스 탭에서 공용 네트워크 액세스 아래에 있는 사용 안 함을 선택합니다.

    공용 액세스와 사용 안 함이 강조 표시된 ACR 네트워크 설정을 보여 주는 Azure Portal의 스크린샷.

  5. 방화벽 예외에서 신뢰할 수 있는 Microsoft 서비스가 이 컨테이너 레지스트리에 액세스하도록 허용이 선택되어 있는지 확인한 다음 저장을 선택합니다.

    신뢰할 수 있는 Microsoft 서비스가 이 컨테이너 레지스트리에 액세스하도록 허용하고 저장이 강조 표시된 ACR 네트워크 설정의 스크린샷.

AcrPull 역할 할당

컨테이너 이미지를 사용하여 환경을 만들려면 프로젝트와 환경 유형을 포함한 ADE 인프라가 필요합니다. 각 프로젝트에는 하나 이상의 프로젝트 환경 유형이 있으며, 배포될 환경을 정의하는 컨테이너 이미지에 대한 읽기 권한이 필요합니다. ACR 내 이미지에 안전하게 액세스하려면 각 프로젝트 환경 유형에 AcrPull 역할을 할당합니다.

프로젝트 환경 유형에 AcrPull 역할을 할당하려면 다음을 수행합니다.

  1. Azure Portal에서 구성하려는 ACR로 이동합니다.

  2. 왼쪽 메뉴에서 IAM(액세스 제어)을 선택합니다.

  3. 추가>역할 할당 추가를 선택합니다.

  4. 다음 역할을 할당합니다. 세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

    설정
    역할 AcrPull을 선택합니다.
    액세스 할당 대상: 사용자, 그룹 또는 서비스 주체를 선택합니다.
    멤버 컨테이너의 이미지에 액세스해야 하는 프로젝트 환경 유형의 이름을 입력합니다.

    프로젝트 환경 유형은 다음 예와 같이 표시됩니다.

    멤버 선택 창에서 이름의 일부가 강조 표시된 프로젝트 환경 유형 목록을 보여 주는 스크린샷.

이 구성에서 ADE는 시스템에 할당된 것이든 사용자에게 할당된 것이든 PET에 대해 관리 ID를 사용합니다.

이 역할 할당은 모든 프로젝트 환경 유형에 대해 이루어져야 합니다. Azure CLI를 통해 자동화할 수 있습니다.

이미지를 레지스트리에 푸시할 준비가 되면 다음 명령을 실행합니다.

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

스크립트를 사용하여 컨테이너 이미지 빌드

사용자 지정 이미지를 빌드하여 컨테이너 레지스트리에 직접 푸시하는 대신, 스크립트를 사용하여 이미지를 빌드하여 지정된 컨테이너 레지스트리에 푸시할 수 있습니다.

Microsoft에서는 사용자 지정 이미지를 빌드하고 레지스트리에 푸시하는 데 도움이 되는 빠른 시작 스크립트를 제공합니다. 스크립트는 이미지를 빌드하고 리포지토리 ade 및 태그 latest 아래의 지정된 ACR(Azure Container Registry)에 푸시합니다.

스크립트를 사용하려면 다음을 수행해야 합니다.

  1. ADE 확장성 모델을 지원하도록 Dockerfile 및 스크립트 폴더를 만듭니다.
  2. 사용자 지정 이미지에 대한 레지스트리 이름 및 디렉터리를 제공합니다.
  3. Azure CLI 및 Docker Desktop을 설치하고 PATH 변수에 있도록 합니다.
  4. Docker Desktop을 실행합니다.
  5. 지정된 레지스트리에 푸시할 수 있는 권한이 있습니다.

여기에서 스크립트를 볼 수 있습니다.

PowerShell에서 다음 명령을 사용하여 스크립트를 호출할 수 있습니다.

.\quickstart-image-build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}'

또한 특정 리포지토리 및 태그 이름으로 푸시하려는 경우 다음을 실행할 수 있습니다.

.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{YOUR_TAG}'

이미지를 환경 정의에 연결

배포에서 사용자 지정 이미지를 사용하기 위해 환경 정의를 작성할 때 매니페스트 파일(environment.yaml 또는 manifest.yaml)에서 runner 속성을 편집합니다.

runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"

ADE 컨테이너 이미지를 사용하여 Azure 리소스를 배포하는 환경 정의를 만드는 방법에 대해 자세히 알아보려면 환경 정의 추가 및 구성을 참조하세요.