이 빠른 시작에서는 Azure App Configuration을 Java Quarkus 앱에 통합하여 코드와 별도로 애플리케이션 설정의 스토리지 및 관리를 중앙 집중화합니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정 만들기
- Azure CLI 2.68.0 이상.
- 애플리케이션 구성 저장소. 자세한 내용은 빠른 시작: Azure App Configuration 저장소 만들기를 참조하세요.
- JDK(Java Development Kit) 버전 17.
- Apache Maven 버전 3.9.8 이상.
키-값 쌍 추가
App Configuration 저장소에 다음 키-값 쌍을 추가합니다. Azure CLI를 사용하여 저장소에 키-값 쌍을 추가하는 방법에 대한 자세한 내용은 키-값 만들기를 참조하세요.
| Key | 가치 |
|---|---|
| /application/config.message | 안녕하세요 |
Quarkus 앱 만들기
이 섹션에서는 Azure App Configuration 확장 및 REST 확장을 사용하여 Quarkus 앱을 만듭니다. REST 확장은 App Configuration 저장소에서 구성 값을 반환하는 REST 서비스를 만드는 데 사용됩니다. 자세한 내용은 Quarkus Azure App Configuration을 참조하세요.
다음 명령을 사용하여 Quarkus 앱을 만듭니다.
mvn io.quarkus.platform:quarkus-maven-plugin:create \
-DprojectGroupId=com.example \
-DprojectArtifactId=quarkus-app-configuration \
-Dextensions='io.quarkiverse.azureservices:quarkus-azure-app-configuration,rest' \
-DjavaVersion="17"
앱은 quarkus-app-configuration이라는 새 디렉터리에 만들어집니다. 앱의 구조는 다음과 같습니다.
quarkus-app-configuration
├── src
│ ├── main/java/com/example
│ │ ├── GreetingResource.java
│ └── test/java/com/example
│ └── GreetingResourceTest.java
├── pom.xml
pom.xml 파일에는 Azure App Configuration 확장 및 REST 확장을 포함하여 앱에 대한 종속성이 포함됩니다. 다음 XML은 일반적인 예입니다.
<dependency>
<groupId>io.quarkiverse.azureservices</groupId>
<artifactId>quarkus-azure-app-configuration</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-rest</artifactId>
</dependency>
GreetingResource.java 파일에 REST 서비스가 포함되어 있습니다. 나중에 App Configuration 저장소에서 구성 값을 반환하도록 이 파일을 수정합니다.
GreetingResourceTest.java 파일에는 REST 서비스에 대한 단위 테스트가 포함되어 있습니다. REST 서비스에서 반환된 값이 나중에 App Configuration 저장소의 값과 같도록 어설션하도록 이 파일을 수정합니다.
App Configuration 저장소에 연결
이제 Azure App Configuration 확장을 사용하는 App Configuration 저장소 및 Quarkus 앱이 있으므로 앱을 저장소에 연결할 수 있습니다.
애플리케이션 코딩
다음 단계를 사용하여 애플리케이션을 구성합니다.
src/main/java/com/example 디렉터리에서 GreetingResource.java 파일을 열고 내용을 다음 코드로 바꿉니다.
package com.example; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; import org.eclipse.microprofile.config.inject.ConfigProperty; @Path("/hello") public class GreetingResource { @ConfigProperty(name = "/application/config.message") String value; @GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return value; } }수정된 코드는 MicroProfile 구성
@ConfigProperty주석을 사용하여 App Configuration 저장소/application/config.message의 키value값을 필드에 삽입하고 REST 서비스의 값을 반환합니다.src/test/java/com/example 디렉터리의 GreetingResourceTest.java 파일에 있는 자동 생성된 단위 테스트를 엽니다. 파일의 내용을 다음 코드로 바꿉니다.
package com.example; import io.quarkus.test.junit.QuarkusTest; import org.junit.jupiter.api.Test; import javax.inject.Inject; import static io.restassured.RestAssured.given; import static org.hamcrest.CoreMatchers.is; @QuarkusTest public class GreetingResourceTest { @Test public void testHelloEndpoint() { given() .when().get("/hello") .then() .statusCode(200) .body(is("Hello")); } }수정된 코드는 REST 서비스에서 반환된 값이 App Configuration 저장소의 값과 동일하다는 것을 어설션합니다. 이 값은 이전에 추가한 키에 대한 값
Hello입니다/application/config.message.
애플리케이션에 대한 이러한 코드 변경은 모두 필요합니다. 애플리케이션을 실행하기 전에 App Configuration 저장소에 대한 인증 및 연결을 구성해야 합니다.
App Configuration 저장소에 대한 인증 구성
Quarkus Azure App Configuration 확장은 액세스 키를 사용한 인증 외에도 Azure ID 클라이언트 라이브러리를 사용하여 DefaultAzureCredential Microsoft Entra ID로 인증을 지원합니다.
이 빠른 시작에서는 인증에 Microsoft Entra ID를 사용합니다. 자세한 내용은 DefaultAzureCredential 참조 하세요.
다음 단계를 사용하여 App Configuration 저장소에 대한 인증을 구성합니다.
다음 명령을 사용하여 환경 변수를 설정하고,
<...>자리 표시자를 이전에 만든 값으로 대체합니다.export RESOURCE_GROUP_NAME="<resource-group-name>" export APP_CONFIG_NAME="<app-configuration-store-name>"다음 명령을 사용하여 로그인한
App Configuration Data Reader사용자에게 역할을 할당합니다.# Retrieve the app configuration resource ID export APP_CONFIGURATION_RESOURCE_ID=$(az appconfig show \ --resource-group $RESOURCE_GROUP_NAME \ --name "${APP_CONFIG_NAME}" \ --query 'id' \ --output tsv) # Assign the "App Configuration Data Reader" role to the current signed-in identity az role assignment create \ --assignee $(az ad signed-in-user show --query 'id' --output tsv) \ --role "App Configuration Data Reader" \ --scope $APP_CONFIGURATION_RESOURCE_ID다음 명령을 사용하여 App Configuration 저장소의 엔드포인트를 명명된
QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT환경 변수로 내보냅니다.export QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT=$(az appconfig show \ --resource-group "${RESOURCE_GROUP_NAME}" \ --name "${APP_CONFIG_NAME}" \ --query endpoint \ --output tsv)비고
환경 변수
QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT의 값은 Azure App Configuration 저장소에 대한 연결을 설정하기 위해 Quarkus Azure App Configuration 확장의 구성 속성quarkus.azure.app.configuration.endpoint에 사용됩니다. 또는 다음 예제와 같이 src/main/resources 디렉터리의 application.properties 파일에서 이 속성을 직접 설정하여 구성할 수 있습니다.<your-app-configuration-store-endpoint>을 실제 값으로 반드시 대체해야 합니다.quarkus.azure.app.configuration.endpoint=<your-app-configuration-store-endpoint>
로컬로 앱 빌드 및 실행
다음 단계를 사용하여 로컬에서 앱을 빌드하고 실행합니다.
다음 명령을 사용하여 JVM 모드에서 앱을 빌드하고 실행합니다.
# Build, test and package the app mvn clean package # Run the app java -jar ./target/quarkus-app/quarkus-run.jar비고
또는 기본 모드에서 샘플을 실행할 수 있습니다. 기본 모드를 사용하려면 GraalVM을 설치하거나 작성기 이미지를 사용하여 네이티브 실행 파일을 빌드해야 합니다. 자세한 내용은 네이티브 실행 파일 빌드를 참조하세요. 이 빠른 시작에서는 Docker를 컨테이너 런타임으로 사용하여 Linux 네이티브 실행 파일을 빌드합니다. Docker가 설치되어 있지 않은 경우 Docker 웹 사이트에서 다운로드할 수 있습니다.
다음 명령을 사용하여 Linux 환경에서 네이티브 실행 파일을 빌드하고 실행합니다.
mvn package -Dnative -Dquarkus.native.container-build ./target/storage-blob-1.0.0-SNAPSHOT-runner다음 명령을 사용하여 애플리케이션을 테스트합니다.
curl localhost:8080/helloApp Configuration 저장소에 추가한 키의 값인
Hello이므로 출력에Hello이 표시됩니다.Control+C를 눌러 애플리케이션을 중지합니다.
자원을 정리하세요
Azure 요금을 방지하려면 불필요한 리소스를 정리해야 합니다. App Configuration 저장소가 더 이상 필요하지 않은 경우 다음 명령을 사용하여 리소스 그룹 및 모든 관련 리소스를 제거합니다.
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait