자습서: Azure Container Apps에서 Spring용 유레카 서버와 Spring용 관리 통합
이 자습서에서는 관리되는 Spring 관리자를 Azure Container Apps 내에서 Spring용 Eureka Server와 통합하는 프로세스를 안내합니다.
이 문서에는 "Azure Container Apps에서 Spring용 관리형 관리자에 연결" 자습서와 유사하지만 Spring용 유레카 서버가 포함된 일부 콘텐츠가 포함되어 있습니다. Spring용 관리자를 Spring용 유레카 서버에 바인딩하면 개별 애플리케이션을 Spring용 관리자에 바인딩할 필요 없이 유레카를 통해 애플리케이션 정보를 얻을 수 있습니다.
이 가이드에 따라 서비스 검색을 위해 Eureka Server를 설정한 다음, Spring용 관리자를 만들어 Eureka Server에 등록된 Spring 애플리케이션을 관리하고 모니터링합니다. 이 설정을 통해 다른 애플리케이션은 유레카 서버에만 바인딩하면 되므로 마이크로 서비스 관리가 간소화됩니다.
이 자습서에서는 다음을 알아봅니다.
- Spring용 유레카 서버를 만듭니다.
- Spring용 관리자를 만들고 이를 유레카 서버에 연결합니다.
- 간소화된 서비스 검색 및 관리를 위해 다른 애플리케이션을 유레카 서버에 바인딩합니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 아직 없는 경우 무료로 만들 수 있습니다.
- Azure CLI
- 기존 유레카 서버 for Spring Java 구성 요소입니다. 없는 경우 Spring용 Eureka 서버 만들기를 참조하세요.
고려 사항
Azure Container Apps에서 관리 Java 구성 요소를 실행할 때 다음 세부 정보에 유의해야 합니다.
Item | 설명 |
---|---|
범위 | 구성 요소는 연결된 컨테이너 앱과 동일한 환경에서 실행됩니다. |
크기 조정 | 구성 요소의 크기를 조정할 수 없습니다. 크기 조정 속성 minReplicas 및 maxReplicas 은(는) 모두 1 (으)로 설정됩니다. |
리소스 | 구성 요소에 대한 컨테이너 리소스 할당은 고정되어 있습니다. CPU 코어 수는 0.5이고 메모리 크기는 1Gi입니다. |
가격 책정 | 구성 요소 청구는 사용량 기반 가격 책정에 속합니다. 관리 구성 요소에서 소비한 리소스는 활성/유휴 요금으로 청구됩니다. 더 이상 사용하지 않는 구성 요소를 삭제하여 청구를 중지할 수 있습니다. |
바인딩 | 컨테이너 앱은 바인딩을 통해 구성 요소에 연결됩니다. 바인딩은 컨테이너 앱 환경 변수에 구성을 삽입합니다. 바인딩이 설정되면 컨테이너 앱은 환경 변수에서 구성 값을 읽고 구성 요소에 연결할 수 있습니다. |
설정
시작하기 전에 다음 명령을 실행하여 필요한 리소스를 만듭니다.
애플리케이션 구성을 지원하는 변수를 만듭니다. 이러한 값은 이 단원의 목적을 위해 제공됩니다.
export LOCATION=eastus export RESOURCE_GROUP=my-services-resource-group export ENVIRONMENT=my-environment export EUREKA_COMPONENT_NAME=eureka export ADMIN_COMPONENT_NAME=admin export CLIENT_APP_NAME=sample-service-eureka-client export CLIENT_IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"
변수 설명 LOCATION
컨테이너 앱 및 Java 구성 요소를 만드는 Azure 지역 위치입니다. RESOURCE_GROUP
데모 애플리케이션에 대한 Azure 리소스 그룹 이름입니다. ENVIRONMENT
데모 애플리케이션의 Azure Container Apps 환경 이름입니다. EUREKA_COMPONENT_NAME
유레카 서버 Java 구성 요소의 이름입니다. ADMIN_COMPONENT_NAME
Spring Java 구성 요소용 관리의 이름입니다. CLIENT_APP_NAME
Eureka Server에 바인딩하는 컨테이너 앱의 이름입니다. CLIENT_IMAGE
유레카 서버 컨테이너 앱에 사용되는 컨테이너 이미지입니다. Azure CLI를 사용하여 Azure에 로그인합니다.
az login
리소스 그룹을 만듭니다.
az group create --name $RESOURCE_GROUP --location $LOCATION
컨테이너 앱 환경을 만듭니다.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
--query
매개 변수를 사용하면 응답을 단순한 성공 또는 실패 메시지로 필터링합니다.
선택 사항: Spring용 유레카 서버 만들기
기존 Spring용 유레카 서버가 없는 경우 아래 명령에 따라 유레카 서버 Java 구성 요소를 만듭니다. 자세한 내용은 Spring용 Eureka 서버 만들기를 참조하세요.
az containerapp env java-component eureka-server-for-spring create \
--environment $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--name $EUREKA_COMPONENT_NAME
구성 요소를 함께 바인딩
Spring Java 구성 요소용 관리를 만듭니다.
az containerapp env java-component admin-for-spring create \
--environment $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--name $ADMIN_COMPONENT_NAME \
--min-replicas 1 \
--max-replicas 1 \
--bind $EUREKA_COMPONENT_NAME
다른 앱을 유레카 서버에 바인딩
유레카 서버가 설정되면 이제 서비스 검색을 위해 다른 애플리케이션을 여기에 바인딩할 수 있습니다. 또한 Spring용 관리자의 대시보드에서 이러한 애플리케이션을 모니터링하고 관리할 수도 있습니다. 다음 단계를 사용하여 컨테이너 앱을 만들고 Eureka Server에 바인딩합니다.
컨테이너 앱을 만들고 유레카 서버에 바인딩합니다.
az containerapp create \
--name $CLIENT_APP_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT \
--image $CLIENT_IMAGE \
--min-replicas 1 \
--max-replicas 1 \
--ingress external \
--target-port 8080 \
--bind $EUREKA_COMPONENT_NAME
팁
이전 단계에서는 Spring용 관리자 구성 요소를 Spring용 유레카 서버 구성 요소에 바인딩했기 때문에 관리자 구성 요소를 사용하면 서비스 검색이 가능하고 동시에 Spring용 관리자 대시보드를 통해 서비스를 관리할 수 있습니다.
대시보드 보기
Important
대시보드를 보려면 관리 환경 리소스에서 계정에 최소한 Microsoft.App/managedEnvironments/write
역할이 할당되어 있어야 합니다. 리소스에 대한 Owner
또는 Contributor
역할을 명시적으로 할당하거나 단계에 따라 사용자 지정 역할 정의를 만들고 이를 계정에 할당할 수 있습니다.
사용자 지정 역할 정의를 만듭니다.
az role definition create --role-definition '{ "Name": "Java Component Dashboard Access", "IsCustom": true, "Description": "Can access managed Java Component dashboards in managed environments", "Actions": [ "Microsoft.App/managedEnvironments/write" ], "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"] }'
값의
<SUBSCRIPTION_ID>
자리 표시자를AssignableScopes
구독 ID로 바꿔야 합니다.관리 환경 리소스의 계정에 사용자 지정 역할을 할당합니다.
관리 환경의 리소스 ID를 가져옵니다.
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
사용자의 계정에 역할을 할당합니다.
이 명령을 실행하기 전에 자리 표시자를 사용자 또는 서비스 주체 ID로 바꿉
<USER_OR_SERVICE_PRINCIPAL_ID>
니다.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "Java Component Dashboard Access" \ --scope $ENVIRONMENT_ID
Spring용 관리자 대시보드의 URL을 가져옵니다.
az containerapp env java-component admin-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $ADMIN_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsv
Spring용 유레카 서버 대시보드의 URL을 가져옵니다.
az containerapp env java-component eureka-server-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsv
이 명령은 Spring용 유레카 서버 대시보드에 액세스하는 데 사용할 수 있는 URL을 반환합니다. 다음 스크린샷에 표시된 것처럼 대시보드를 통해 컨테이너 앱도 사용할 수 있습니다.
리소스 정리
이 자습서에서 만든 리소스는 Azure 청구서에 영향을 줍니다. 이러한 서비스를 장기간 사용하지 않을 예정이면 다음 명령을 실행하여 이 자습서에서 만든 모든 항목을 제거합니다.
az group delete --resource-group $RESOURCE_GROUP