연습 - 배포 슬롯 만들기

완료됨

배포 슬롯은 배포 전에 새 앱 버전을 테스트할 수 있는 웹앱 인스턴스입니다. 슬롯을 교환하여 가동 중지 시간 없이 새 버전의 앱을 배포할 수 있습니다.

새 버전의 소셜 미디어 웹앱 배포를 간소화하기 위해 Azure App Service 배포 슬롯을 사용하기로 했다고 가정해 보겠습니다. Azure에서 웹앱을 설정하고 한 개 이상의 배포 슬롯을 구성하려고 합니다.

본 연습에서는 웹앱을 설정하고, 스테이징을 위한 새 배포 슬롯을 추가하고, 여러 버전의 웹앱을 프로덕션 및 스테이징 슬롯에 배포합니다.

중요

이 연습을 수행하려면 사용자의 Azure 구독이 필요하며 요금이 발생할 수 있습니다. Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

웹앱 만들기

먼저 Azure Portal에서 새 웹앱 리소스를 만듭니다.

  1. Azure Portal에 로그인합니다.

  2. 리소스 메뉴 또는 페이지에서 리소스 만들기를 선택합니다. 리소스 만들기 창이 나타납니다.

  3. 리소스 메뉴에서 을 선택하고 결과에서 웹앱을 선택합니다. 웹앱 만들기 창이 나타납니다.

  4. 기본 탭에서 각 설정에 다음 값을 입력합니다.

    설정
    프로젝트 세부 정보
    구독 연습을 완료하는 데 사용할 구독을 선택합니다.
    리소스 그룹 새로 만들기 링크를 선택하고 mslearn-slots를 입력하고 확인을 선택합니다.
    인스턴스 세부 정보
    Name 고유한 이름을 입력합니다.
    게시 코드
    런타임 스택 ASP.NET V4.8
    운영 체제 Windows
    지역 근처에 있는 지역을 선택합니다.
    App Service 계획
    Windows 플랜 기본값을 적용합니다.
    SKU 및 크기 기본값을 적용합니다.
  5. 다음: 배포를 선택합니다.

  6. 다음: 네트워킹을 선택합니다.

  7. 다음: 모니터링을 선택하고 설정에 다음 값을 입력합니다.

    설정
    Application Insights
    Application Insights 사용 아니요로 전환
  8. 검토 및 만들기를 선택한 후 만들기를 선택합니다. 배포가 성공할 때까지 기다립니다.

  9. 배포가 완료되면 리소스로 이동을 선택합니다. 웹앱에 대한 App Service 창이 나타납니다.

Git 배포 구성

다양한 도구를 사용하여 웹앱에 코드를 배포할 수 있지만, 본 연습에서는 로컬 git 리포지토리를 사용하도록 웹앱을 설정합니다.

  1. App Service 메뉴의 배포에서 배포 센터를 선택합니다. 앱 서비스에 대한 배포 센터 창이 나타납니다.

  2. 설정 탭의 소스로컬 Git를 선택한 다음, 명령 모음에서 저장을 선택하여 배포를 설정합니다.

  3. 로컬 Git/FTPS 자격 증명 탭을 선택합니다. 사용자 범위에서 원하는 고유한 사용자 이름 및 암호를 입력한 다음, 명령 모음에서 저장을 선택합니다. 나중에 필요하므로 사용자 이름 및 암호를 기록해 둡니다.

Git 클라이언트 구성 및 웹앱 소스 코드 복제

이제 Cloud Shell에서 Git 클라이언트를 설정하고, 이 클라이언트를 사용하여 샘플 웹앱을 복제합니다.

  1. 페이지 상단에 있는 Azure 전역 컨트롤에서 Cloud Shell 아이콘을 선택하여 Azure Cloud Shell 세션을 시작합니다.

    Screenshot of the Cloud Shell icon in global controls.

  2. Cloud Shell 세션에서 메시지가 표시되면 Bash 환경을 선택하고 구독에 대한 스토리지를 만듭니다.

    참고

    Cloud Shell에서 생성한 파일을 유지하려면 Cloud Shell에 Azure Storage 리소스가 필요합니다. Cloud Shell을 처음 열면 리소스 그룹, 스토리지 계정 및 Azure Files 공유를 만들라는 프롬프트가 표시됩니다. 해당 설정은 이후의 모든 Cloud Shell 세션에 자동으로 사용됩니다.

  3. Cloud Shell에서 다음 명령을 입력하고 <your-username>을 원하는 사용자 이름으로 바꿉니다. 이 구성 값은 Azure 계정과 연결되지 않으므로 원하는 값을 사용할 수 있습니다.

    git config --global user.name <your-username>
    
  4. Cloud Shell에서 다음 명령을 입력하고 <>를 원하는 이메일 주소로 바꿉니다. 이 구성 값은 Azure 계정과 연결되지 않으므로 원하는 값을 사용할 수 있습니다.

    git config --global user.email <your-email-address>
    
  5. 다음 코드를 입력하여 소스 코드에 사용할 demoapp 폴더를 만들고 엽니다.

    mkdir demoapp
    cd demoapp
    
  6. 다음 코드를 입력하여 웹앱의 소스를 복제하고 로컬 복사본을 엽니다.

    git clone https://github.com/Azure-Samples/app-service-web-dotnet-get-started.git
    cd app-service-web-dotnet-get-started
    

프로덕션에 앱을 배포하도록 git remote 구성

Git을 사용하여 소스 코드를 웹앱의 프로덕션 슬롯에 배포하려면 앱의 git URL을 원격 리포지토리로 설정해 보겠습니다.

  1. Azure Portal에서 웹앱이 활성화되어야 합니다. 리소스 메뉴에서 개요를 선택합니다.

  2. 웹앱의 개요 창 Essentials 섹션에는 기본 도메인의 URL이 있습니다. URL에는 웹앱에 대한 배포 이름이 포함됩니다.

    Screenshot of the Essentials section, where you Copy the git clone URL.

    참고 항목

    앞의 스크린샷과 같은 위치에 Git clone URL이 표시되지 않는 경우 포털을 새로 고칩니다.

  3. Git 복제 URL을 마우스로 가리키고 클립보드에 복사 아이콘을 선택합니다. 이 값에는 배포 사용자 이름도 포함됩니다.

  4. Cloud Shell에서 다음 명령을 실행하여 이름 “production”으로 git remote를 구성합니다. <git-clone-url>을 이전 단계에서 클립보드에 복사한 내용으로 바꿉니다.

    cd app-service-web-dotnet-get-started
    git remote add production <git-clone-url>
    
  5. 프로덕션 슬롯에 웹앱을 배포하려면 다음 명령을 실행합니다. 암호를 입력하라는 메시지가 표시되면 이전 작업에서 만든 배포 암호를 입력합니다.

    git push production
    

    터미널 세션에는 배포의 일부로 진행되는 모든 프로세스가 나타납니다. 배포가 완료될 때까지 기다립니다. 배포 성공 알림이 표시됩니다.

  6. Azure Portal의 개요 창이 계속해서 활성 상태여야 합니다. URL을 마우스로 가리킵니다. 두 번 클릭하여 새 브라우저 탭에서 열거나 복사하여 새 브라우저 탭에 붙여넣을 수 있습니다.

    Screenshot of your web app in the production slot.

  7. 웹앱을 표시하는 브라우저 탭을 닫습니다.

새 스테이징 슬롯 만들기

웹앱의 경우 하나의 슬롯, 즉 프로덕션 슬롯을 만들고 이 슬롯에 소스 코드를 배포했습니다. 새 버전의 웹앱을 스테이징할 수 있는 배포 슬롯을 만들어 보겠습니다.

  1. Azure Portal 메뉴에서 을 선택하고 Azure 서비스에서 모든 리소스를 선택합니다. 유형 == App Service를 기준으로 필터를 적용한 다음 적용을 선택합니다.

  2. 결과를 유형을 기준으로 정렬한 다음, 만든 App Service를 선택합니다. 웹앱에 대한 App Service 창이 나타납니다.

  3. App Service 메뉴의 배포에서 배포 슬롯을 선택합니다. App Service에 대한 배포 슬롯 창이 나타납니다.

    Screenshot of the App Service menu with Deployment slots highlighted.

  4. 명령 모음에서 + 슬롯 추가를 선택합니다. 슬롯 추가 창이 나타납니다.

  5. 이름 필드에 Staging을 입력하고, 다음의 설정 복제에 대해 기본값을 적용한 다음, 추가를 선택합니다.

  6. 배포 슬롯을 성공적으로 만든 후 닫기를 선택합니다.

스테이징 슬롯에 대한 git 배포 설정

git 배포를 사용하도록 새 슬롯을 설정해 보겠습니다.

  1. Azure Portal에서 페이지를 선택하고 Azure 서비스에서 모든 리소스를 선택합니다.

  2. 리소스를 리소스 그룹을 기준으로 정렬합니다. 리소스 그룹 mslearn-slots에 두 가지 App Service 유형이 표시됩니다. 배포 슬롯은 포털에서 별도의 앱으로 표시됩니다.

  3. 스테이징 슬롯을 선택합니다. App Service(슬롯)에 대한 개요 창이 나타납니다.

  4. 스테이징 메뉴의 배포에서 배포 센터를 선택합니다.

  5. 설정 탭의 소스로컬 Git를 선택한 다음, 명령 모음에서 저장을 선택하여 스테이징에 대한 배포를 설정합니다.

  6. 결과 배포 센터 창에서 로컬 Git/FTPS 자격 증명 탭을 선택합니다.

  7. 사용자 범위에서 원하는 사용자 이름 및 암호를 입력하고 저장을 선택합니다. Azure에서 사용자 자격 증명이 업데이트됩니다. 나중에 필요하므로 사용자 이름 및 암호를 기록해 둡니다.

스테이징 슬롯에 앱을 배포하도록 git 설정

git 클라이언트를 사용하여 새 슬롯에 소스 코드를 배포하기 위해 git 구성에 remote를 더 추가해 보겠습니다.

  1. App Service 메뉴에서 개요를 선택합니다. 이전 작업에서 만든 사용자 이름에 대한 암호를 저장하라는 메시지가 표시되면 저장을 선택합니다.

  2. 개요Essentials 섹션에서 Git 클론 URL을 마우스로 가리키고 클립보드로 복사아이콘을 선택합니다. URL에는 스테이징 배포 사용자 이름이 포함됩니다.

    참고

    Git 클론 URL이 표시되지 않으면 포털을 새로 고칩니다. 스테이징에 대한 Git 클론 URL은 프로덕션 슬롯에 대한 URL과 약간 다르며 슬롯 이름을 포함합니다.

  3. Cloud Shell에서 ~/demoapp/app-service-web-dotnet-get-started 폴더에 있는지 확인한 후 다음 명령을 실행하여 <git-clone-uri>를 이전 단계에서 복사한 URL로 바꿉니다.

    git remote add staging <git-clone-uri>
    

앱 소스 코드 수정 및 스테이징 슬롯에 앱 배포

다음으로, 웹앱 파일을 약간 변경한 다음 git을 사용하여 새 버전을 스테이징 슬롯에 배포합니다.

  1. Cloud Shell에서 다음 명령을 실행합니다.

    code .
    
  2. 파일 목록에서 aspnet-get-started>> 폴더를 펼치고 Index.cshtml을 선택합니다.

  3. 다음 HTML을 찾습니다.

    <h1>ASP.NET</h1>
    
  4. 해당 코드를 다음 HTML로 바꿉니다.

    <h1>Web App Version 2</h1>
    
  5. 변경 내용을 저장하려면 Ctrl+S를 누른 다음, Ctrl+Q를 눌러 편집기를 닫습니다.

  6. Cloud Shell에서 다음 코드를 실행하여 새 버전의 앱을 git에 커밋하고, 스테이징 슬롯에 배포합니다.

    git add .
    git commit -m "New version of web app."
    git push staging
    

    암호를 묻는 메시지가 표시되면 배포 암호를 입력합니다. Cloud Shell 세션에서 스테이징 디스플레이를 만들고 배포하는 작업에 대한 알림이며 배포 성공을 표시해야 합니다.

스테이징 슬롯 찾아보기

이제 스테이징 배포 슬롯의 URL로 이동하여 새 버전의 웹앱을 볼 수 있습니다.

  1. Azure Portal의 스테이징 슬롯에 대한 개요 창 명령 모음에서 찾아보기를 선택하거나 기본 도메인의 URL을 선택합니다. 웹앱 버전 2를 스테이징하기 위한 홈페이지가 브라우저 탭에 나타납니다.

    Screenshot of the updated web app in the staging slot.

축하합니다. 자체 버전의 웹앱 코드가 있는 스테이징 슬롯이 생성되었으며, 이에 대한 테스트를 실행할 수 있습니다. 프로덕션 슬롯에는 이전 웹앱 버전이 있고 사용자가 아직 새 코드를 볼 수 없습니다.