Azure Container Apps에 Java Spring Boot 앱 배포
이 문서에서는 Microsoft Entra 계정으로 로그인하여 Java Spring Boot 앱을 Azure Container 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 계정. 아직 없는 경우 무료 계정을 만들 수 있습니다. 계속하려면 Azure 구독에 대한
Contributor
또는Owner
권한이 필요합니다. 자세한 내용은 Azure Portal을 사용하여 Azure 역할 할당을 참조하십시오. - Azure CLI
- Azure Container Apps CLI 확장, 버전
0.3.47
이상 최신 버전을 설치하려면 명령을 사용합니다az extension add --name containerapp --upgrade --allow-preview
. - Java 개발 키트 버전 17 이상.
- Maven
Spring 프로젝트 준비
다음 단계를 수행하여 프로젝트를 준비합니다.
다음 Maven 명령을 사용하여 프로젝트를 빌드합니다.
mvn clean verify
다음 명령을 사용하여 샘플 프로젝트를 로컬로 실행합니다.
mvn spring-boot:run
설정
CLI에서 Azure에 로그인하려면 다음 명령을 실행하고 프롬프트에 따라 인증 프로세스를 완료합니다.
az login
최신 버전의 CLI를 실행하고 있는지 확인하려면 업그레이드 명령을 실행합니다.
az upgrade
그런 다음 CLI용 Azure Container Apps 확장을 설치하거나 업데이트합니다.
Azure CLI에서 명령을 실행할 az containerapp
때 누락된 매개 변수에 대한 오류가 발생하는 경우 최신 버전의 Azure Container Apps 확장이 설치되어 있는지 확인합니다.
az extension add --name containerapp --upgrade
참고 항목
2024년 5월부터 Azure CLI 확장 기능은 기본적으로 미리 보기 기능을 사용하도록 설정하지 않습니다. Container Apps 미리 보기 기능에 액세스하려면 --allow-preview true
를 사용하여 Container Apps 확장을 설치합니다.
az extension add --name containerapp --upgrade --allow-preview true
이제 현재 확장 또는 모듈이 설치되었으므로 Microsoft.App
및 Microsoft.OperationalInsights
네임스페이스를 등록합니다.
참고 항목
Azure Container Apps 리소스가 Microsoft.Web
네임스페이스에서 Microsoft.App
네임스페이스로 마이그레이션되었습니다. 자세한 내용은 2022년 3월 Microsoft.Web에서 Microsoft.App으로 네임스페이스 마이그레이션을 참조하세요.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Azure Container Apps 환경 만들기
이제 Azure CLI 설정이 완료되었으므로 이 문서 전체에서 사용되는 환경 변수를 정의할 수 있습니다.
bash 셸에서 다음 변수를 정의합니다.
export RESOURCE_GROUP="ms-identity-containerapps"
export LOCATION="canadacentral"
export ENVIRONMENT="env-ms-identity-containerapps"
export API_NAME="ms-identity-api"
export JAR_FILE_PATH_AND_NAME="./target/ms-identity-spring-boot-webapp-0.0.1-SNAPSHOT.jar"
리소스 그룹을 만듭니다.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION \
자동 생성된 Log Analytics 작업 영역을 사용하여 환경을 만듭니다.
az containerapp env create \
--name $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location $LOCATION
컨테이너 앱 환경의 기본 도메인을 표시합니다. 이후 섹션에서 사용할 이 도메인을 적어둡니다.
az containerapp env show \
--name $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--query properties.defaultDomain
배포를 위한 앱 준비
Azure Container Apps에 애플리케이션을 배포하면 리디렉션 URL이 Azure Container Apps에 배포된 앱 인스턴스의 리디렉션 URL로 변경됩니다. 다음 단계를 사용하여 application.yml 파일에서 이러한 설정을 변경합니다.
다음 예제와 같이 앱의 src\main\resources\application.yml 파일로 이동하고 배포된 앱의 도메인 이름으로 값을
post-logout-redirect-uri
변경합니다. 실제 값으로<default-domain-of-container-app-environment>
바꾸어<API_NAME>
야 합니다. 예를 들어 이전 단계의 Azure Container App 환경 및ms-identity-api
앱 이름에 대한 기본 도메인을 사용하여 값에post-logout-redirect-uri
사용합니다https://ms-identity-api.<default-domain>
.post-logout-redirect-uri: https://<API_NAME>.<default-domain-of-container-app-environment>
이 파일을 저장한 후 다음 명령을 사용하여 앱을 다시 빌드합니다.
mvn clean package
Important
애플리케이션의 application.yml 파일은 현재 매개 변수에 클라이언트 암호 client-secret
의 값을 보유합니다. 이 파일에 이 값을 유지하는 것은 좋지 않습니다. Git 리포지토리에 파일을 커밋하는 경우에도 위험을 감수할 수 있습니다. 권장되는 방법은 Azure Container Apps의 비밀 관리를 참조 하세요.
Microsoft Entra ID 앱 등록 업데이트
리디렉션 URI가 Azure Container Apps에서 배포된 앱으로 변경되므로 Microsoft Entra ID 앱 등록에서도 리디렉션 URI를 변경해야 합니다. 다음 단계에 따라 이 변경을 수행합니다.
개발자용 Microsoft ID 플랫폼의 앱 등록 페이지로 이동합니다.
검색 상자를 사용하여 앱 등록을 검색합니다(예: .)
java-servlet-webapp-authentication
.이름을 선택하여 앱 등록을 엽니다.
메뉴에서 인증을 선택합니다.
웹 - 리디렉션 URI 섹션에서 URI 추가를 선택합니다.
앱의 URI를 입력하고
/login/oauth2/code/
추가합니다(예https://<containerapp-name>.<default domain of container app environment>/login/oauth2/code/
: .).저장을 선택합니다.
앱 배포하기
Azure Container Apps에 JAR 패키지를 배포합니다.
참고 항목
필요한 경우 Java 빌드 환경 변수에서 JDK 버전을 지정할 수 있습니다. 자세한 내용은 Azure Container Apps에서 Java용 빌드 환경 변수를 참조 하세요.
이제 az containerapp up
CLI 명령을 사용하여 WAR 파일을 배포할 수 있습니다.
az containerapp up \
--name $API_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--environment $ENVIRONMENT \
--artifact <JAR_FILE_PATH_AND_NAME> \
--ingress external \
--target-port 8080 \
--query properties.configuration.ingress.fqdn
참고 항목
기본 JDK 버전은 17입니다. 애플리케이션과의 호환성을 위해 JDK 버전을 변경해야 하는 경우 --build-env-vars BP_JVM_VERSION=<YOUR_JDK_VERSION>
인수를 사용하여 버전 번호를 조정할 수 있습니다.
더 많은 빌드 환경 변수는 Azure Container Apps에서 Java용 빌드 환경 변수를 참조 하세요.
앱 유효성 검사
이 예제 containerapp up
에서 명령은 앱의 --query properties.configuration.ingress.fqdn
URL이라고도 하는 FQDN(정규화된 도메인 이름)을 반환하는 인수를 포함합니다. 다음 단계를 수행하여 앱의 로그를 확인해 배포 문제를 조사합니다.
배포 섹션의 출력 페이지에서 출력 애플리케이션 URL에 액세스합니다.
Azure Container 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 플랫폼의 액세스 토큰
다음 단계
자세한 내용 및 기타 배포 옵션은 다음 문서를 참조하세요.