Azure Spring Apps에서 스테이징 환경 설정
참고 항목
Azure Spring Apps는 Azure Spring Cloud 서비스의 새 이름입니다. 서비스에 새 이름이 지정되었지만, 자산을 업데이트하는 동안 스크린샷, 비디오, 다이어그램과 같은 일부 위치에서는 당분간 이전 이름이 표시됩니다.
이 문서의 적용 대상: ✔️ Java ❌ C#
이 문서의 적용 대상:❌ 기본 ✔️ 표준 ✔️ 엔터프라이즈
이 문서는 Azure Spring Apps에서 파란색-녹색 배포 패턴을 사용하여 스테이징 배포를 설정하는 방법을 설명합니다. 파란색-녹색 배포는 새로운(녹색) 버전이 배포되는 동안 기존(파란색) 버전을 유지하도록 하는 Azure DevOps의 지속적인 업데이트 패턴입니다. 이 문서에서는 프로덕션 배포를 변경하지 않고 스테이징 배포를 프로덕션에 배치하는 방법을 설명합니다.
필수 조건
- 표준 플랜의 기존 Azure Spring Apps 인스턴스
- Azure CLI
이 문서에서는 Spring Initializr에서 빌드된 애플리케이션을 사용합니다. 이 예제에 다른 애플리케이션을 사용하려는 경우 애플리케이션의 공용 주소 부분을 간단하게 변경해서 스테이징 배포를 프로덕션 배포와 구분합니다.
팁
Azure Cloud Shell은 이 문서의 지침을 실행하는 데 사용할 수 있는 무료 대화형 셸입니다. 최신 버전의 Git, JDK, Maven 및 Azure CLI를 포함하는 미리 설치된 공통 Azure 도구를 포함합니다. Azure 구독에 로그인되어 있으면 Cloud Shell 인스턴스를 시작하세요. 자세한 내용은 Azure Cloud Shell 개요를 참조하세요.
Azure Spring Apps에서 파란색-녹색 배포를 설정하려면 다음 섹션의 지침을 따릅니다.
Azure CLI 확장 설치
다음 명령을 사용하여 Azure CLI용 Azure Spring Apps 확장을 설치합니다.
az extension add --name spring
앱 및 배포 준비
애플리케이션을 빌드하려면 다음 단계를 수행합니다.
샘플 앱의 코드를 생성하려면 이 구성으로 Spring Initializr를 사용하세요.
코드를 다운로드합니다.
다음 HelloController.java 원본 파일을 *\src\main\java\com\example\hellospring* 폴더에 추가합니다.
package com.example.hellospring; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; @RestController public class HelloController { @RequestMapping("/") public String index() { return "Greetings from Azure Spring Apps!"; } }
.jar 파일을 빌드합니다.
mvn clean package -DskipTests
Azure Spring Apps 인스턴스에서 앱을 만듭니다.
az spring app create \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name demo \ --runtime-version Java_17 \ --assign-endpoint
Azure Spring Apps에 앱을 배포합니다.
az spring app deploy \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name demo \ --artifact-path target\hellospring-0.0.1-SNAPSHOT.jar
스테이징 배포의 코드를 수정합니다.
package com.example.hellospring; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; @RestController public class HelloController { @RequestMapping("/") public String index() { return "Greetings from Azure Spring Apps! THIS IS THE GREEN DEPLOYMENT"; } }
.jar 파일을 다시 빌드합니다.
mvn clean package -DskipTests
녹색 배포를 만듭니다.
az spring app deployment create \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --app demo \ --name green \ --runtime-version Java_17 \ --artifact-path target\hellospring-0.0.1-SNAPSHOT.jar
앱 및 배포 보기
다음 단계를 사용하여 배포된 앱을 확인합니다.
Azure Portal에서 Azure Spring Apps 인스턴스로 이동합니다.
탐색 창에서 앱 창을 열어 서비스 인스턴스에 대한 앱을 봅니다.
세부 정보를 볼 앱을 선택합니다.
배포를 열어 앱의 모든 배포를 확인합니다. 그리드는 프로덕션 및 스테이징 배포를 모두 표시합니다.
URL을 선택하여 현재 배포된 애플리케이션을 엽니다.
프로덕션을 상태 열에서 선택하여 기본 앱을 표시합니다.
준비를 상태 열에서 선택하여 스테이징 앱을 확인합니다.
팁
테스트 엔드포인트가 슬래시(/)로 끝나는지 확인하여 CSS 파일이 올바르게 로드되는지 확인합니다. 브라우저에서 페이지를 보기 위해 로그인 자격 증명을 입력해야 하는 경우, URL 디코드를 사용하여 테스트 엔드포인트를 디코드합니다. URL 디코딩은 형식 https://\<username>:\<password>@\<cluster-name>.test.azuremicroservices.io/demo/green
의 URL을 반환합니다. 이 형식을 사용하여 엔드포인트에 액세스합니다. 테스트 엔드포인트에 대한 기본 인증을 사용하지 않도록 설정하려면 다음 Azure CLI 명령을 실행합니다. az spring app update --resource-group <resource-group-name> --service <Azure-Spring-Apps-instance-name> --name demo --disable-test-endpoint-auth true
참고 항목
구성 서버 설정은 스테이징 환경과 프로덕션 환경에 모두 적용됩니다. 예를 들어 구성 서버의 앱 데모에 대한 컨텍스트 경로(server.servlet.context-path)를 somepath로 설정했다면 녹색 배포로 가는 경로가 https://\<username>:\<password>@\<cluster-name>.test.azuremicroservices.io/demo/green/somepath/...
로 변경됩니다.
이 지점에서 공개 앱 데모를 방문하면 새로운 변경 없이 이전 페이지가 표시됩니다.
녹색 배포를 프로덕션 환경으로 설정
스테이징 환경에서 변경 내용을 확인한 후 프로덕션 환경으로 푸시할 수 있습니다. 앱>배포 페이지에서 현재 프로덕션 중인 애플리케이션을 선택합니다.
녹색 배포의 등록 상태 뒤에 있는 줄임표를 선택하고 프로덕션으로 설정을 선택합니다.
앱의 URL에 변경 내용이 표시되는지 확인합니다.
참고 항목
녹색 배포를 프로덕션 환경으로 설정한 후에는 이전 배포가 스테이징 배포가 됩니다.
스테이징 배포 수정
변경에 만족하지 않는 경우 애플리케이션 코드를 수정하고, 새 .jar 패키지를 빌드한 후, Azure CLI를 사용하여 녹색 배포에 업로드할 수 있습니다.
az spring app deploy \
--resource-group <resource-group-name> \
--service <service-instance-name> \
--name demo \
--deployment green \
--artifact-path demo.jar
스테이징 배포 삭제
Azure Portal에서 스테이징 배포를 삭제하려면 스테이징 배포에 대한 페이지로 이동하여 삭제 단추를 선택합니다.
또는 다음 명령을 실행하여 Azure CLI에서 스테이징 배포를 삭제합니다.
az spring app deployment delete \
--resource-group <resource-group-name> \
--service <service-instance-name> \
--name <staging-deployment-name> \
--app demo