자습서: Azure Container Apps에서 Spring용 관리형 관리자에 연결
Admin for Spring 관리 구성 요소는 Actuator 엔드포인트를 노출하는 Spring Boot 웹 애플리케이션에 대한 관리 인터페이스를 제공합니다. Azure Container Apps의 관리자 구성 요소로서 원활한 통합 및 관리를 위해 컨테이너 앱을 Spring용 관리자에 쉽게 바인딩할 수 있습니다.
이 자습서에서는 Spring 애플리케이션을 쉽게 모니터링하고 관리할 수 있도록 Spring용 관리자 Java 구성 요소를 만들고 이를 컨테이너 앱에 바인딩하는 방법을 보여 줍니다.
이 자습서에서는 다음을 알아봅니다.
- Spring용 관리자 Java 구성 요소 만들기
- Spring용 관리자 Java 구성 요소에 컨테이너 앱을 바인딩합니다.
참고 항목
Spring용 관리자를 Spring용 유레카 서버와 통합하려면 대신 Azure Container Apps에서 Spring용 유레카 서버와 Spring용 관리자 통합을 참조하세요.
Important
이 자습서에서는 Azure 청구서에 영향을 줄 수 있는 서비스를 사용합니다. 단계별로 따르기로 결정한 경우 예기치 못한 비용이 청구되지 않도록 이 문서에 소개된 리소스를 삭제해야 합니다.
필수 조건
이 프로젝트를 완료하려면 다음 항목이 필요합니다.
요건 | 지침 |
---|---|
Azure 계정 | 활성 구독이 필요합니다. GitHub 계정이 없는 경우 무료로 만들 수 있습니다. |
Azure CLI | Azure CLI를 설치합니다. |
고려 사항
Azure Container Apps에서 Spring용 관리자를 실행할 때 다음 세부 정보에 유의해야 합니다.
Item | 설명 |
---|---|
범위 | 구성 요소는 연결된 컨테이너 앱과 동일한 환경에서 실행됩니다. |
크기 조정 | 구성 요소의 크기를 조정할 수 없습니다. 크기 조정 속성 minReplicas 및 maxReplicas 은(는) 모두 1 (으)로 설정됩니다. |
리소스 | 구성 요소에 대한 컨테이너 리소스 할당은 고정되어 있습니다. CPU 코어 수는 0.5이고 메모리 크기는 1Gi입니다. |
가격 | 구성 요소 청구는 사용량 기반 가격 책정에 속합니다. 관리 구성 요소에서 소비한 리소스는 활성/유휴 요금으로 청구됩니다. 더 이상 사용하지 않는 구성 요소를 삭제하여 청구를 중지할 수 있습니다. |
바인딩 | 컨테이너 앱은 바인딩을 통해 구성 요소에 연결됩니다. 바인딩은 컨테이너 앱 환경 변수에 구성을 삽입합니다. 바인딩이 설정되면 컨테이너 앱은 환경 변수에서 구성 값을 읽고 구성 요소에 연결할 수 있습니다. |
설정
Spring용 관리자 작업을 시작하기 전에 먼저 필요한 리소스를 만들어야 합니다.
다음 명령은 리소스 그룹 및 Container Apps 환경을 만드는 데 도움이 됩니다.
애플리케이션 구성을 지원하는 변수를 만듭니다. 이러한 값은 이 단원의 목적을 위해 제공됩니다.
export LOCATION=eastus export RESOURCE_GROUP=my-resource-group export ENVIRONMENT=my-environment export JAVA_COMPONENT_NAME=admin export APP_NAME=sample-admin-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"
변수 설명 LOCATION
컨테이너 앱 및 Java 구성 요소를 만드는 Azure 지역 위치입니다. ENVIRONMENT
데모 애플리케이션의 Azure Container Apps 환경 이름입니다. RESOURCE_GROUP
데모 애플리케이션에 대한 Azure 리소스 그룹 이름입니다. JAVA_COMPONENT_NAME
컨테이너 앱용으로 만들어진 Java 구성 요소의 이름입니다. 이 경우 Spring용 관리자 Java 구성 요소를 만듭니다. IMAGE
컨테이너 앱에 사용되는 컨테이너 이미지입니다. Azure CLI를 사용하여 Azure에 로그인합니다.
az login
리소스 그룹을 만듭니다.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
--query
매개 변수를 사용하면 응답을 단순한 성공 또는 실패 메시지로 필터링합니다.컨테이너 앱 환경을 만듭니다.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
구성 요소 사용
이제 기존 환경이 있으므로 컨테이너 앱을 만들고 이를 Spring용 관리자 구성 요소의 Java 구성 요소 인스턴스에 바인딩할 수 있습니다.
Spring Java 구성 요소용 관리를 만듭니다.
az containerapp env java-component admin-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 1 \ --max-replicas 1
Spring용 관리자 Java 구성 요소를 업데이트합니다.
az containerapp env java-component admin-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 2 \ --max-replicas 2
Spring용 관리자 Java 구성 요소에 컨테이너 앱 바인딩
컨테이너 앱을 만들고 Spring용 관리자에 바인딩합니다.
az containerapp create \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT \ --image $IMAGE \ --min-replicas 1 \ --max-replicas 1 \ --ingress external \ --target-port 8080 \ --bind $JAVA_COMPONENT_NAME
bind 작업은 컨테이너 앱을 Spring용 관리자 Java 구성 요소에 바인딩합니다. 이제 컨테이너 앱은 환경 변수(주로 SPRING_BOOT_ADMIN_CLIENT_URL
속성)에서 구성 값을 읽고 Spring용 관리자에 연결할 수 있습니다.
바인딩은 다음 속성도 삽입합니다.
"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",
이 속성은 Spring용 관리자 구성 요소 클라이언트가 Spring용 관리자 서버에 연결할 때 컨테이너 앱 인스턴스의 IP 주소를 선호해야 함을 나타냅니다.
(선택 사항) Spring용 관리자 Java 구성 요소에서 컨테이너 앱의 바인딩 해제
컨테이너 앱에서 바인딩을 제거하려면 --unbind
옵션을 사용합니다.
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
대시보드 보기
Important
대시보드를 보려면 관리 환경 리소스에서 계정에 최소한 Microsoft.App/managedEnvironments/write
역할이 할당되어 있어야 합니다. 리소스에 대한 Owner
또는 Contributor
역할을 명시적으로 할당하거나 단계에 따라 사용자 지정 역할 정의를 만들고 이를 계정에 할당할 수 있습니다.
사용자 지정 역할 정의를 만듭니다.
az role definition create --role-definition '{ "Name": "<ROLE_NAME>", "IsCustom": true, "Description": "Can access managed Java Component dashboards in managed environments", "Actions": [ "Microsoft.App/managedEnvironments/write" ], "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"] }'
<>
대괄호 사이의 자리 표시자를 해당 값으로 바꿉니다.관리 환경 리소스의 계정에 사용자 지정 역할을 할당합니다.
관리 환경의 리소스 ID를 가져옵니다.
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id -o tsv)
사용자의 계정에 역할을 할당합니다.
이 명령을 실행하기 전에
<>
대괄호 사이의 자리 표시자를 사용자 또는 서비스 주체 ID로 바꿉니다.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_ID
참고 항목
<USER_OR_SERVICE_PRINCIPAL_ID>는 일반적으로 Azure Portal에 액세스하는 데 사용하는 ID여야 합니다. <ROLE_NAME>은 1단계에서 할당한 이름입니다.
Spring용 관리자 대시보드의 URL을 가져옵니다.
az containerapp env java-component admin-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --query properties.ingress.fqdn -o tsv
이 명령은 Spring용 관리자 대시보드에 액세스하는 데 사용할 수 있는 URL을 반환합니다. 다음 스크린샷에 표시된 것처럼 대시보드를 통해 컨테이너 앱도 사용할 수 있습니다.
리소스 정리
이 자습서에서 만든 리소스는 Azure 청구서에 영향을 줍니다. 이러한 서비스를 장기간 사용하지 않을 예정이면 다음 명령을 실행하여 이 자습서에서 만든 모든 항목을 제거합니다.
az group delete \
--resource-group $RESOURCE_GROUP