Azure Spring Apps에 Java Spring Boot 앱 배포
이 문서에서는 Microsoft Entra 계정으로 로그인하여 Java Spring Boot 앱을 Azure Spring Apps에 배포하는 방법을 보여줍니다.
이 문서에서는 로컬로 실행 탭만 사용하여 다음 문서 중 하나를 완료했으며 이제 Azure에 배포하려고 합니다. 이러한 지침은 다음 문서의 Azure에 배포 탭에 있는 지침과 동일합니다.
- Microsoft Entra ID를 사용하여 Java Spring Boot 앱 보호
- Azure Active Directory B2C를 사용하여 Java Spring Boot 앱 보호
- Java Spring Boot 앱이 사용자를 로그인하고 Microsoft Graph에 액세스할 수 있도록 설정
- 역할 및 역할 클레임을 사용하여 Java Spring Boot 앱 보호
- 그룹 및 그룹 클레임을 사용하여 Java Spring Boot 앱 보호
필수 조건
대상 구독에서 Azure Spring Apps 엔터프라이즈 플랜 인스턴스를 처음 배포하는 경우 Azure Marketplace의 엔터프라이즈 플랜의 요구 사항 섹션을 참조하세요.
Azure Spring Apps용 Maven 플러그 인입니다. Maven이 선호하는 개발 도구가 아닌 경우 다른 도구를 사용하는 다음과 같은 유사한 자습서를 참조하세요.
Spring 프로젝트 준비
다음 단계를 수행하여 프로젝트를 준비합니다.
다음 Maven 명령을 사용하여 프로젝트를 빌드합니다.
mvn clean package
다음 명령을 사용하여 샘플 프로젝트를 로컬로 실행합니다.
mvn spring-boot:run
Maven 플러그 인 구성
프로젝트의 루트에서 다음 명령을 실행하여 Azure Spring Apps용 Maven 플러그 인을 사용하여 앱을 구성합니다.
mvn com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
다음 목록에서는 명령 상호 작용을 설명합니다.
- OAuth2 로그인: OAuth2 프로토콜에 따라 Azure에 대한 로그인 권한을 부여해야 합니다.
- 구독 선택: Azure Spring Apps 인스턴스를 만들 구독 목록 번호를 선택합니다. 이 번호는 기본적으로 목록의 첫 번째 구독으로 설정됩니다. 기본 번호를 사용하려면 Enter 키를 누릅니 다.
- Azure Spring Apps 이름 입력: 만들려는 Spring Apps 인스턴스의 이름을 입력합니다. 기본 이름을 사용하려면 Enter 키를 누릅니 다.
- 리소스 그룹 이름 입력: Spring Apps 인스턴스를 만들려는 리소스 그룹의 이름을 입력합니다. 기본 이름을 사용하려면 Enter 키를 누릅니 다.
- SKU: Spring Apps 인스턴스에 사용할 SKU를 선택합니다. 기본 번호를 사용하려면 Enter 키를 누릅니 다.
- 앱 이름 입력(demo): 앱 이름을 제공합니다. 기본 프로젝트 아티팩트 ID를 사용하려면 Enter 키를 누릅니 다.
- 런타임: Spring Apps 인스턴스에 사용할 런타임을 선택합니다. 이 경우 기본 번호를 사용해야 하므로 Enter 키를 누릅니 다.
- 이 앱에 대한 공용 액세스 노출(boot-for-azure): y 키를 누릅니다.
- 위 모든 구성 저장 확인: y 키를 누릅니다. n 키를 누르면 구성이 .pom 파일에 저장되지 않습니다.
다음 예제에서는 배포 프로세스의 출력을 보여줍니다.
Summary of properties:
Subscription id : 12345678-1234-1234-1234-123456789101
Resource group name : rg-ms-identity-spring-boot-webapp
Azure Spring Apps name : cluster-ms-identity-spring-boot-webapp
Runtime Java version : Java 11
Region : eastus
Sku : Standard
App name : ms-identity-spring-boot-webapp
Public access : true
Instance count/max replicas : 1
CPU count : 1
Memory size(GB) : 2
Confirm to save all the above configurations (Y/n):
[INFO] Configurations are saved to: /home/user/ms-identity-java-spring-tutorial/1-Authentication/sign-in/pom. xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:57 min
[INFO] Finished at: 2024-02-14T13:50:44Z
[INFO] ------------------------------------------------------------------------
선택 사항을 확인한 후 플러그 인은 필요한 플러그 인 요소와 설정을 프로젝트의 pom.xml 파일에 추가하여 Azure Spring Apps에서 앱을 실행하도록 구성합니다.
pom.xml 파일의 관련 부분은 다음 예제와 유사해야 합니다.
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-spring-apps-maven-plugin</artifactId>
<version>1.19.0</version>
<configuration>
<subscriptionId>12345678-1234-1234-1234-123456789101</subscriptionId>
<resourceGroup>rg-ms-identity-spring-boot-webapp</resourceGroup>
<clusterName>cluster-ms-identity-spring-boot-webapp</clusterName>
<region>eastus</region>
<sku>Standard</sku>
<appName>ms-identity-spring-boot-webapp</appName>
<isPublic>true</isPublic>
<deployment>
<cpu>1</cpu>
<memoryInGB>2</memoryInGB>
<instanceCount>1</instanceCount>
<runtimeVersion>Java 11</runtimeVersion>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
pom.xml 파일에서 직접 Azure Spring Apps에 대한 구성을 수정할 수 있습니다. 몇 가지 일반적인 구성은 다음 표에 나열되어 있습니다.
속성 | 필수 | 설명 |
---|---|---|
subscriptionId |
false | 구독 ID입니다. |
resourceGroup |
true | Azure Spring Apps 인스턴스에 대한 Azure 리소스 그룹입니다. |
clusterName |
true | Azure Spring Apps 클러스터 이름입니다. Azure Spring Apps 인스턴스가 이미 배포된 구독 및 리소스 그룹을 사용하는 경우 이 기존 클러스터를 사용하여 배포할 수도 있습니다. |
appName |
true | Azure Spring Apps의 앱 이름입니다. |
region |
false | Azure Spring Apps 인스턴스를 호스트할 지역입니다. 기본값은 eastus 입니다. 유효한 지역은 지원되는 지역을 참조 하세요. |
sku |
false | Azure Spring Apps 인스턴스의 가격 책정 계층입니다. 기본값은 Basic 개발 및 테스트 환경에만 적합한 값입니다. |
runtime |
false | 런타임 환경 구성입니다. 자세한 내용은 구성 세부 정보를 참조하세요. |
deployment |
false | 배포 구성입니다. 자세한 내용은 구성 세부 정보를 참조하세요. |
전체 구성 목록은 플러그 인 참조 설명서를 참조하세요. 모든 Azure Maven 플러그 인은 공통 구성 집합을 공유합니다. 이러한 구성은 일반 구성을 참조 하세요. Azure Spring Apps와 관련된 구성은 Azure Spring Apps: 구성 세부 정보를 참조하세요.
나중에 사용할 수 있도록 값과 appName
값을 따로 clusterName
저장해야 합니다.
배포를 위한 앱 준비
Azure Spring Apps에 애플리케이션을 배포하면 리디렉션 URL이 Azure Spring Apps에 배포된 앱 인스턴스의 리디렉션 URL로 변경됩니다. 다음 단계를 사용하여 application.yml 파일에서 이러한 설정을 변경합니다.
다음 예제와 같이 앱의 src\기본\resources\application.yml 파일로 이동하고 배포된 앱의 do기본 이름으로 값을
post-logout-redirect-uri
변경합니다. 예를 들어 이전 단계에서 Azure Spring Apps 인스턴스 및ms-identity-spring-boot-webapp
앱 이름에 대해 선택한cluster-ms-identity-spring-boot-webapp
경우 이제 값에post-logout-redirect-uri
사용해야https://cluster-ms-identity-spring-boot-webapp-ms-identity-spring-boot-webapp.azuremicroservices.io
합니다.post-logout-redirect-uri: https://<cluster-name>-<app-name>.azuremicroservices.io
이 파일을 저장한 후 다음 명령을 사용하여 앱을 다시 빌드합니다.
mvn clean package
Important
애플리케이션의 application.yml 파일은 현재 매개 변수에 클라이언트 암호 client-secret
의 값을 보유합니다. 이 파일에 이 값을 유지하는 것은 좋지 않습니다. Git 리포지토리에 커밋하는 경우에도 위험을 감수할 수 있습니다.
추가 보안 단계로 이 값을 Azure Key Vault에 저장하고 Key Vault에서 비밀을 로드하여 애플리케이션에서 사용할 수 있도록 할 수 있습니다.
Microsoft Entra ID 앱 등록 업데이트
리디렉션 URI가 Azure Spring Apps에서 배포된 앱으로 변경되므로 Microsoft Entra ID 앱 등록에서 리디렉션 URI도 변경해야 합니다. 다음 단계에 따라 이 변경을 수행합니다.
개발자용 Microsoft ID 플랫폼의 앱 등록 페이지로 이동합니다.
검색 상자를 사용하여 앱 등록을 검색합니다(예: .)
java-servlet-webapp-authentication
.이름을 선택하여 앱 등록을 엽니다.
메뉴에서 인증을 선택합니다.
웹 - 리디렉션 URI 섹션에서 URI 추가를 선택합니다.
앱의 URI를 입력하고
/login/oauth2/code/
추가합니다(예https://<cluster-name>-<app-name>.azuremicroservices.io/login/oauth2/code/
: .).저장을 선택합니다.
앱 배포하기
다음 명령을 사용하여 앱을 배포합니다.
mvn azure-spring-apps:deploy
다음 목록에서는 명령 상호 작용에 대해 설명합니다.
- OAuth2 로그인: OAuth2 프로토콜에 따라 Azure에 대한 로그인 권한을 부여해야 합니다.
명령이 실행되면 다음 로그 메시지에서 배포가 성공했음을 확인할 수 있습니다.
[INFO] Deployment(default) is successfully created
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
[INFO] InstanceName:demo-default-x-xxxxxxxxxx-xxxxx Status:Running Reason:null DiscoverStatus:UNREGISTERED
[INFO] InstanceName:demo-default-x-xxxxxxxxx-xxxxx Status:Terminating Reason:null DiscoverStatus:UNREGISTERED
[INFO] Getting public url of app(demo)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-demo.azuremicroservices.io
앱 유효성 검사
배포가 완료되면 출력 애플리케이션 URL을 사용하여 애플리케이션에 액세스합니다. 다음 단계를 수행하여 앱의 로그를 확인해 배포 문제를 조사합니다.
배포 섹션의 출력 페이지에서 출력 애플리케이션 URL에 액세스합니다.
Azure Spring Apps 인스턴스 개요 페이지의 탐색 창에서 로그를 선택하여 앱의 로그를 확인합니다.
자세한 정보
- Microsoft ID 플랫폼(개발자용 Microsoft Entra ID)
- MSAL(Microsoft 인증 라이브러리) 개요
- 빠른 시작: Microsoft ID 플랫폼에 애플리케이션 등록
- 빠른 시작: 웹 API에 액세스하도록 클라이언트 애플리케이션 구성
- Microsoft Entra ID 애플리케이션 동의 환경 이해
- 사용자 및 관리자 동의 이해
- Microsoft Entra ID의 애플리케이션 및 서비스 주체 개체
- 국가별 클라우드
- MSAL 코드 샘플
- Java용 Microsoft Entra ID Spring Boot Starter 클라이언트 라이브러리
- Java용 Microsoft 인증 라이브러리(MSAL4J)
- MSAL4J Wiki
- ID 토큰
- Microsoft ID 플랫폼의 액세스 토큰
다음 단계
자세한 내용 및 기타 배포 옵션은 다음 문서를 참조하세요.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기