이 빠른 시작에서는 Java 구성 요소를 사용하여 구성 관리, 서비스 검색, 상태, 메트릭을 처리하는 Azure Container Apps에서 애플리케이션을 배포하는 방법을 알아봅니다. 이 예제에서 사용된 샘플 애플리케이션은 마이크로 서비스 아키텍처 패턴을 사용하는 Java PetClinic입니다. 다음 다이어그램은 Azure Container Apps에서 PetClinic 애플리케이션의 아키텍처를 보여 줍니다.
PetClinic 애플리케이션에는 다음과 같은 기능이 포함되어 있습니다.
- 프런트 엔드는 API 게이트웨이 앱에서 호스팅되는 독립 실행형 Node.js 웹앱입니다.
- API 게이트웨이는 요청을 백 엔드 서비스 앱으로 라우팅합니다.
- 백 엔드 앱은 Spring Boot로 빌드됩니다.
- 각 백 엔드 앱은 HyperSQL 데이터베이스를 영구 저장소로 사용합니다.
- 앱은 서비스 레지스트리, 구성 서버, 관리 서버를 포함하여 Azure Container Apps에서 관리 Java 구성 요소를 사용합니다.
- 구성 서버는 Git 리포지토리에서 데이터를 읽습니다.
- Log Analytics 작업 영역은 서버 데이터를 기록합니다.
이 자습서에서는 다음을 수행합니다.
- 구성 서버, Eureka 서버, 관리 서버, 관리 구성 요소 만들기
- 일련의 마이크로 서비스 앱 만들기
- 마이크로 서비스 앱에 서버 구성 요소 바인딩
- 앱 컬렉션 배포
- 배포된 앱 검토
이 문서의 끝부분에는 3개의 다른 Java 구성 요소와 함께 작동하도록 구성된 웹 애플리케이션 1개와 백 엔드 애플리케이션 3개를 배포합니다. 그런 다음 Azure Portal을 통해 각 구성 요소를 관리할 수 있습니다.
필수 구성 요소
- Azure 계정: Azure 계정이 없는 경우 무료로 계정을 만드세요. 이 빠른 시작을 사용하려면 Azure 구독에 대한 기여자 또는 소유자 권한이 필요합니다. 자세한 내용은 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.
- Azure CLI: Azure CLI를 설치합니다.
- Azure Container Apps CLI 확장. 버전 0.3.47 이상을 사용합니다.
az extension add --name containerapp --upgrade --allow-preview명령을 사용하여 최신 버전을 설치하세요.
설정
환경 변수, 리소스 그룹, Azure Container Apps 환경을 만들려면 다음 단계를 따르세요.
환경 변수는 사용자 지정 값을 포함하므로 다음 명령을 실행하기 전에
<>로 둘러싸인 자리 표시자 값을 사용자 지정 값으로 변경합니다.export RESOURCE_GROUP=<RESOURCE_GROUP> export LOCATION=<LOCATION> export CONTAINER_APP_ENVIRONMENT=<CONTAINER_APPS_ENVIRONMENT>이제 마이크로 서비스 앱의 설정을 포함하는 더 많은 환경 변수를 만듭니다. 이러한 값은 마이크로 서비스를 배포하는 데 사용하는 Java 구성 요소 및 Azure Container Apps의 이름과 구성을 정의하는 데 사용됩니다. 다음 명령을 사용하여 이러한 환경 변수를 만듭니다.
export CONFIG_SERVER_COMPONENT=configserver export ADMIN_SERVER_COMPONENT=admin export EUREKA_SERVER_COMPONENT=eureka export CONFIG_SERVER_URI=https://github.com/spring-petclinic/spring-petclinic-microservices-config.git export CUSTOMERS_SERVICE=customers-service export VETS_SERVICE=vets-service export VISITS_SERVICE=visits-service export API_GATEWAY=api-gateway export CUSTOMERS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-customers-service export VETS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-vets-service export VISITS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-visits-service export API_GATEWAY_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-api-gateway다음 명령을 사용하여 Azure CLI에 로그인하고 활성 구독을 선택합니다.
az login다음 명령을 사용하여 Azure 서비스를 구성하는 리소스 그룹을 만듭니다.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION다음 명령을 사용하여 Java 구성 요소와 컨테이너 앱을 모두 호스팅하는 Azure Container Apps 환경을 만듭니다.
az containerapp env create \ --resource-group $RESOURCE_GROUP \ --name $CONTAINER_APP_ENVIRONMENT \ --location $LOCATION
Java 구성 요소 만들기
이제 앱을 지원하는 다음 Java 구성 요소를 만듭니다.
- Config Server. 마이크로 서비스 앱에 대한 구성 설정을 관리하는 데 사용됩니다.
- Eureka 서버. 서비스 레지스트리와 검색을 관리하는 데 사용됩니다.
- 관리 서버. 마이크로 서비스 앱의 상태와 메트릭을 모니터링하고 관리하는 데 사용됩니다.
이러한 서버 구성 요소를 만들려면 다음 단계를 따르세요.
다음 명령을 사용하여 Java 구성 요소에 대한 구성 서버를 만듭니다.
az containerapp env java-component config-server-for-spring create \ --resource-group $RESOURCE_GROUP \ --name $CONFIG_SERVER_COMPONENT \ --environment $CONTAINER_APP_ENVIRONMENT \ --configuration spring.cloud.config.server.git.uri=$CONFIG_SERVER_URI다음 명령을 사용하여 Java 구성 요소에 대한 Eureka 서버를 만듭니다.
az containerapp env java-component eureka-server-for-spring create \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_SERVER_COMPONENT --environment $CONTAINER_APP_ENVIRONMENT \다음 명령을 사용하여 Java 구성 요소에 대한 관리 서버를 만듭니다.
az containerapp env java-component admin-for-spring create \ --resource-group $RESOURCE_GROUP \ --name $ADMIN_SERVER_COMPONENT --environment $CONTAINER_APP_ENVIRONMENT \
마이크로 서비스 앱 배포
미리 빌드된 컨테이너 이미지를 사용하여 Azure Container Apps에 Java 마이크로 서비스 앱을 배포하려면 다음 단계를 따르세요.
참고
이 문서에서는 Spring Petclinic 마이크로 서비스 앱에 일련의 빌드된 이미지를 사용합니다. 샘플 코드를 사용자 지정하고 사용자 고유의 이미지를 사용할 수도 있습니다. 자세한 내용은 azure-container-apps-java-samples GitHub 리포지토리를 참조하세요.
다음 명령을 사용하여 고객 데이터 앱을 만듭니다.
az containerapp create \ --resource-group $RESOURCE_GROUP \ --name $CUSTOMERS_SERVICE \ --environment $CONTAINER_APP_ENVIRONMENT \ --image $CUSTOMERS_SERVICE_IMAGE다음 명령을 사용하여 수의사 앱을 만듭니다.
az containerapp create \ --resource-group $RESOURCE_GROUP \ --name $VETS_SERVICE \ --environment $CONTAINER_APP_ENVIRONMENT \ --image $VETS_SERVICE_IMAGE다음 명령을 사용하여 방문 앱을 만듭니다.
az containerapp create \ --resource-group $RESOURCE_GROUP \ --name $VISITS_SERVICE \ --environment $CONTAINER_APP_ENVIRONMENT \ --image $VISITS_SERVICE_IMAGE다음 명령을 사용하여 API 게이트웨이 앱을 만듭니다.
az containerapp create \ --resource-group $RESOURCE_GROUP \ --name $API_GATEWAY \ --environment $CONTAINER_APP_ENVIRONMENT \ --image $API_GATEWAY_IMAGE \ --ingress external \ --target-port 8080 \ --query properties.configuration.ingress.fqdn
Java 구성 요소에 컨테이너 앱 바인딩
다음으로 Java 구성 요소를 컨테이너 앱에 바인딩합니다. 이 섹션에서 만드는 바인딩에는 다음과 같은 기능이 있습니다.
- 시작 시 관리 구성 서버에서 각 앱에 구성 데이터를 삽입합니다.
- 서비스 검색을 위해 관리 Eureka 서버에 앱을 등록합니다.
- 관리 서버에서 앱을 모니터링할 수 있도록 설정합니다.
다음 단계를 따라 각 앱에 대한 바인딩을 만들려면 containerapp update 명령을 사용합니다.
다음 명령을 사용하여 고객 데이터 앱에 바인딩을 추가합니다.
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $CUSTOMERS_SERVICE \ --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT다음 명령을 사용하여 수의사 서비스에 바인딩을 추가합니다.
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $VETS_SERVICE \ --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT다음 명령을 사용하여 방문 서비스에 바인딩을 추가합니다.
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $VISITS_SERVICE \ --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENTAPI 게이트웨이에 바인딩을 추가합니다. 다음 명령을 사용하여 프런트 엔드 애플리케이션의 URL을 반환한 다음 브라우저에서 이 위치를 엽니다.
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $API_GATEWAY \ --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT \ --query properties.configuration.ingress.fqdn
앱 상태 확인
다음 단계를 따라 앱 상태를 확인합니다.
API 게이트웨이의
az containerapp update명령에서 반환된 URL을 사용하여 브라우저에서 프런트 엔드 애플리케이션을 봅니다. 애플리케이션은 다음 스크린샷과 유사해야 합니다.다음 단계를 사용하여 Eureka 서버 대시보드를 봅니다.
중요
Eureka 서버 대시보드 및 Spring용 관리자 대시보드를 보려면 관리 환경 리소스의 계정에 할당된
Microsoft.App/managedEnvironments/write이상의 역할이 있어야 합니다. 리소스에Owner또는Contributor역할을 명시적으로 할당할 수 있습니다. 단계에 따라 사용자 지정 역할 정의를 만들고 이를 계정에 할당할 수도 있습니다.다음 단계를 따라 Spring용 관리자 대시보드를 봅니다.
선택 사항: Java 구성 요소 구성
구성 섹션을 사용하여 Azure Portal을 통해 이 빠른 시작에서 만든 Java 구성 요소를 구성할 수 있습니다.
이 빠른 시작에서 만든 3가지 Java 구성 요소를 구성하는 방법에 대한 자세한 내용은 다음 링크를 참조하세요.
리소스 정리
이 빠른 시작에서 만든 리소스는 Azure 청구에 영향을 줍니다. 이러한 서비스를 장기적으로 사용하지 않을 경우 다음 명령을 사용하여 이 빠른 시작에서 만든 모든 항목을 제거합니다.
az group delete --resource-group $RESOURCE_GROUP