Azure Spring Apps에 대한 애플리케이션 배포 자동화

참고 항목

Azure Spring Apps는 Azure Spring Cloud 서비스의 새 이름입니다. 서비스에 새 이름이 지정되었지만, 자산을 업데이트하는 동안 스크린샷, 비디오, 다이어그램과 같은 일부 위치에서는 당분간 이전 이름이 표시됩니다.

이 문서의 적용 대상: ✔️ 기본/표준 ✔️ Enterprise

이 문서에서는 Azure Pipelines에 대한 Azure Spring Apps 태스크를 사용하여 애플리케이션을 배포하는 방법을 보여 줍니다.

연속 통합 및 지속적인 업데이트 도구를 사용하면 최소한의 노력과 위험으로 기존 애플리케이션에 업데이트를 신속하게 배포할 수 있습니다. Azure DevOps는 이러한 핵심 작업을 구성하고 제어하는 데 도움이 됩니다.

다음 비디오에서는 Azure Pipelines를 포함하여 선택한 도구를 사용한 엔드투엔드 자동화를 설명합니다.


Azure Resource Manager 서비스 연결 만들기

먼저 Azure DevOps 프로젝트에 대한 Azure Resource Manager 서비스 연결을 만듭니다. 지침은 Microsoft Azure에 연결을 참조하세요. Azure Spring Apps 서비스 인스턴스에 사용 중인 것과 동일한 구독을 선택해야 합니다.

앱 빌드 및 배포

이제 일련의 태스크를 사용하여 프로젝트를 빌드하고 배포할 수 있습니다. 다음 Azure Pipelines 템플릿은 변수, 애플리케이션을 빌드하기 위한 .NET Core 태스크 및 애플리케이션 배포를 위한 Azure Spring Apps 태스크를 정의합니다.

variables:
  workingDirectory: './steeltoe-sample'
  planetMainEntry: 'Microsoft.Azure.SpringCloud.Sample.PlanetWeatherProvider.dll'
  solarMainEntry: 'Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.dll'
  planetAppName: 'planet-weather-provider'
  solarAppName: 'solar-system-weather'
  serviceName: '<your service name>'

steps:
# Restore, build, publish and package the zipped planet app
- task: DotNetCoreCLI@2
  inputs:
    command: 'publish'
    publishWebProjects: false
    arguments: '--configuration Release'
    zipAfterPublish: false
    modifyOutputPath: false
    workingDirectory: $(workingDirectory)

# Deploy the planet app
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<Service Connection Name>'
    Action: 'Deploy'
    AzureSpringCloud: $(serviceName)
    AppName: 'testapp'
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(workingDirectory)/src/$(planetAppName)/publish-deploy-planet.zip
    RuntimeVersion: 'NetCore_31'
    DotNetCoreMainEntryPath: $(planetMainEntry)

# Deploy the solar app
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<Service Connection Name>'
    Action: 'Deploy'
    AzureSpringCloud: $(serviceName)
    AppName: 'testapp'
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(workingDirectory)/src/$(solarAppName)/publish-deploy-solar.zip
    RuntimeVersion: 'NetCore_31'
    DotNetCoreMainEntryPath: $(solarMainEntry)

Azure Spring Apps 인스턴스 및 Azure DevOps 프로젝트 설정

먼저 다음 단계에서 Azure DevOps와 함께 사용할 기존 Azure Spring Apps 인스턴스를 설정합니다.

  1. Azure Spring Apps 인스턴스로 이동한 다음, 새 앱을 만듭니다.
  2. Azure DevOps 포털로 이동한 다음 선택한 조직에서 새 프로젝트를 만듭니다. Azure DevOps 조직이 없으면 무료로 만들 수 있습니다.
  3. Repos를 선택한 다음 Spring Boot 데모 코드를 리포지토리로 가져옵니다.

Azure Resource Manager 서비스 연결 만들기

다음으로 Azure DevOps 프로젝트에 대한 Azure Resource Manager 서비스 연결을 만듭니다. 지침은 Microsoft Azure에 연결을 참조하세요. Azure Spring Apps 서비스 인스턴스에 사용 중인 것과 동일한 구독을 선택해야 합니다.

앱 빌드 및 배포

이제 일련의 태스크를 사용하여 프로젝트를 빌드하고 배포할 수 있습니다. 다음 섹션에서는 Azure DevOps를 사용하여 앱을 배포하기 위한 다양한 옵션을 보여 줍니다.

파이프라인을 사용하여 배포

파이프라인을 사용하여 배포하려면 다음 단계를 따릅니다.

  1. 파이프라인을 선택한 다음 Maven 템플릿으로 새 파이프라인을 만듭니다.

  2. azure-pipelines.yml 파일을 편집하여 mavenPomFile 필드를 'complete/pom.xml'로 설정합니다.

  3. 오른쪽에서 도우미 표시를 선택한 다음 Azure Spring Apps 템플릿을 선택합니다.

  4. Azure 구독에 대해 만든 서비스 연결을 선택한 다음, Azure Spring Apps 인스턴스 및 앱 인스턴스를 선택합니다.

  5. 스테이징 배포 사용을 사용하지 않도록 설정합니다.

  6. 패키지 또는 폴더complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar로 설정합니다.

  7. 추가를 선택하여 이 태스크를 파이프라인에 추가합니다.

    파이프라인 설정은 다음 이미지와 일치해야 합니다.

    새 파이프라인 설정을 보여 주는 Azure DevOps의 스크린샷.

    다음 파이프라인 템플릿을 사용하여 프로젝트를 빌드하고 배포할 수도 있습니다. 이 예제에서는 먼저 애플리케이션을 빌드하기 위한 Maven 태스크를 정의한 다음 Azure Pipelines용 Azure Spring Apps 태스크를 사용하여 JAR 파일을 배포하는 두 번째 태스크를 정의합니다.

    steps:
    - task: Maven@3
      inputs:
        mavenPomFile: 'complete/pom.xml'
    - task: AzureSpringCloud@0
      inputs:
        azureSubscription: '<your service connection name>'
        Action: 'Deploy'
        AzureSpringCloud: <your Azure Spring Apps service>
        AppName: <app-name>
        DeploymentType: 'Artifacts'
        UseStagingDeployment: false
        DeploymentName: 'default'
        Package: ./target/your-result-jar.jar
    
  8. 저장 및 실행을 선택한 다음 작업이 완료될 때까지 기다립니다.

파란색-녹색 배포

이전 섹션에 표시된 배포는 배포 즉시 애플리케이션 트래픽을 수신합니다. 이를 통해 고객 트래픽을 수신하기 전에 프로덕션 환경에서 애플리케이션을 테스트할 수 있습니다.

파이프라인 파일 편집

이전에 표시된 것과 동일한 방식으로 애플리케이션을 빌드하고 스테이징 배포에 배포하려면 다음 템플릿을 사용합니다. 이 예에서는 스테이징 배포가 이미 있어야 합니다. 대체 접근 방식은 파란색-녹색 배포 전략을 참조하세요.

steps:
- task: Maven@3
  inputs:
    mavenPomFile: 'pom.xml'
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Deploy'
    AzureSpringCloud: <your Azure Spring Apps service>
    AppName: <app-name>
    DeploymentType: 'Artifacts'
    UseStagingDeployment: true
    Package: ./target/your-result-jar.jar
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Set Production'
    AzureSpringCloud: <your Azure Spring Apps service>
    AppName: <app-name>
    UseStagingDeployment: true

릴리스 섹션 사용

다음 단계는 릴리스 섹션에서 파란색-녹색 배포를 사용하도록 설정하는 방법을 보여 줍니다.

  1. 파이프라인을 선택하고 Maven 빌드 및 게시 아티팩트를 위한 새 파이프라인을 만듭니다.

    1. 코드 위치로 Azure Repos Git을 선택합니다.
    2. 코드가 있는 리포지토리를 선택합니다.
    3. Maven 템플릿을 선택하고 파일을 수정하여 mavenPomFile 필드를 complete/pom.xml로 설정합니다.
    4. 오른쪽에서 도우미 표시를 선택하고 빌드 아티팩트 게시 템플릿을 선택합니다.
    5. 게시할 경로complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar로 설정합니다.
    6. 저장 및 실행을 선택합니다.
  2. 릴리스를 선택한 다음 릴리스 만들기를 선택합니다.

  3. 새 파이프라인을 추가하고 빈 작업을 선택하여 작업을 만듭니다.

  4. 단계에서 1 작업, 0 태스크 줄을 선택합니다.

    작업 1개, 작업 0개 링크가 강조 표시된 파이프라인 탭을 보여 주는 Azure DevOps의 스크린샷.

    1. 작업에 태스크를 추가하려면 +를 선택합니다.
    2. Azure Spring Apps 템플릿을 검색한 다음 추가를 선택하여 작업에 태스크를 추가합니다.
    3. Azure Spring Apps 배포:를 선택하여 태스크를 편집합니다.
    4. 이 태스크를 앱 정보로 채운 다음 스테이징 배포 사용을 사용하지 않도록 설정합니다.
    5. 새 스테이징 배포가 없는 경우 만들기를 사용하도록 설정한 다음 배포에 이름을 입력합니다.
    6. 이 태스크를 저장하려면 저장을 선택합니다.
    7. 확인을 선택합니다.
  5. 파이프라인을 선택한 다음 아티팩트 추가를 선택합니다.

    1. 원본(빌드 파이프라인)에서 이전에 만든 파이프라인을 선택합니다.
    2. 추가를 선택한 다음, 저장을 선택합니다.
  6. 단계에서 1 작업, 1 태스크를 선택합니다.

  7. 1단계에서 Azure Spring Apps 배포 태스크로 이동한 다음 패키지 또는 폴더 옆에 있는 줄임표를 선택합니다.

  8. 대화 상자에서 spring-boot-complete-0.0.1-SNAPSHOT.jar을 선택한 다음 확인을 선택합니다.

    파일 또는 폴더 선택 대화 상자를 보여 주는 Azure DevOps의 스크린샷.

  9. +를 선택하여 다른 Azure Spring Apps 태스크를 작업에 추가합니다.

  10. 작업을 프로덕션 배포 설정으로 변경합니다.

  11. 저장을 선택한 다음 릴리스 만들기를 선택하여 배포를 자동으로 시작합니다.

앱의 현재 릴리스 상태를 확인하려면 버전 보기를 선택합니다. 이 태스크가 완료되면 Azure Portal을 방문하여 앱 상태를 확인합니다.

소스에서 배포

별도의 빌드 단계 없이 Azure에 직접 배포하려면 다음 파이프라인 템플릿을 사용합니다.

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Deploy'
    AzureSpringCloud: <your Azure Spring Apps service>
    AppName: <app-name>
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(Build.SourcesDirectory)

사용자 지정 이미지에서 배포

기존 컨테이너 이미지에서 직접 배포하려면 다음 파이프라인 템플릿을 사용합니다.

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Deploy'
    AzureSpringCloud: '<your Azure Spring Apps service>'
    AppName: '<app-name>'
    DeploymentType: 'CustomContainer'
    UseStagingDeployment: false
    DeploymentName: 'default'
    ContainerRegistry: 'docker.io'  # or your Azure Container Registry, e.g: 'contoso.azurecr.io'
    RegistryUsername: '$(username)'
    RegistryPassword: '$(password)'
    ContainerImage: '<your image tag>'

작성기 배포 및 지정(엔터프라이즈 계획에만 해당)

Azure Spring Apps 엔터프라이즈 계획을 사용하는 경우 다음 예제와 같이 builder 옵션을 사용하여 배포 작업에 사용할 작성기를 지정할 수도 있습니다. 자세한 내용은 Tanzu Build Service 사용을 참조하세요.

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your-service-connection-name>'
    Action: 'Deploy'
    AzureSpringCloud: '<your-Azure-Spring-Apps-service-instance-name>'
    AppName: '<app-name>'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: './target/your-result-jar.jar'
    Builder: '<your-Tanzu-Build-Service-Builder-resource>'

다음 단계