Spring Cloud Gateway 빌드

완료됨

이 모듈에서는 Spring Cloud Gateway를 빌드하여 Azure Spring Apps에 배포합니다.

게이트웨이는 마이크로 서비스에 공용 HTTP 트래픽을 라우팅하는 데 사용됩니다.

  • 라우팅 논리를 처리합니다.
  • 공개적으로 사용할 수 없는 마이크로 서비스에 대한 액세스를 보호합니다.
  • HTTP 트래픽률 제한 등의 QoS(서비스 품질) 기능을 사용할 수도 있습니다.

Spring Cloud Gateway 만들기

게이트웨이를 만들기 위해 명령줄과 함께 https://start.spring.io을(를) 사용합니다.

curl https://start.spring.io/starter.tgz -d type=maven-project -d dependencies=cloud-gateway,cloud-eureka,cloud-config-client -d baseDir=todo-gateway -d bootVersion=3.1.5.RELEASE -d javaVersion=17 | tar -xzvf -

참고 항목

Cloud Gateway과(와) Eureka Discovery Client, Config Client 구성 요소를 사용합니다.

애플리케이션 구성

src/main/resources/application.properties 구성 파일에 다음 속성을 추가합니다.

spring.main.allow-bean-definition-overriding=true
spring.cloud.gateway.discovery.locator.enabled=true
  • spring.main.allow-bean-definition-overriding=true 부분은 Azure Spring Apps 클라이언트 라이브러리에 구성된 Spring Cloud Discovery Server 빈을 사용하도록 Spring Cloud 게이트웨이를 구성합니다.
  • spring.cloud.gateway.discovery.locator.enabled=true 파트는 Spring Cloud Service Registry로 사용 가능한 마이크로 서비스를 검색하도록 Spring Cloud Gateway를 구성하는 것입니다.

Azure Spring Apps에서 애플리케이션 만들기

이전 모듈과 마찬가지로 Azure Spring Apps 인스턴스에서 특정 todo-gateway 애플리케이션을 만듭니다. 이 애플리케이션은 게이트웨이이므로 공개적으로 노출되도록 --assign-endpoint 플래그를 추가합니다.

az spring app create --name todo-gateway --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" --runtime-version Java_17 --assign-endpoint

애플리케이션 배포

이제 todo-gateway 프로젝트를 빌드하고 Azure Spring Apps로 보낼 수 있습니다.

cd todo-gateway
./mvnw clean package -DskipTests
az spring app deploy --name todo-gateway --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" --artifact-path target/demo-0.0.1-SNAPSHOT.jar
cd ..

클라우드에서 프로젝트 테스트

  1. Azure Spring Apps 인스턴스의 으로 이동합니다.

    1. todo-gateway1/1이라는 등록 상태가 있는지 확인합니다. 이 정보는 Spring Cloud Service Registry에 올바르게 등록되어 있음을 보여 줍니다.
    2. 마이크로 서비스에 대한 자세한 내용을 보려면 todo-gateway를 선택합니다.
  2. 제공된 공용 URL을 복사/붙여넣습니다. 다음 섹션에서 사용할 수 있도록 이 URL을 편리한 곳에 보관합니다.

    마이크로 서비스 같은 테스트 엔드포인트가 있지만 게이트웨이가 인터넷에 직접 노출되므로 공용 URL을 사용하겠습니다.

게이트웨이가 Spring Cloud Service Registry에 연결되면 /MICROSERVICE-ID/**: [마이크로 서비스 ID는 대문자여야 함] 형식의 URL 경로와 함께 사용 가능한 마이크로 서비스에 대한 경로가 자동으로 열립니다.

curl https://XXXXXXXX-todo-gateway.azuremicroservices.io/TODO-SERVICE/을(를) 수행하여 todo-service 마이크로 서비스 엔드포인트를 테스트합니다(XXXXXXXX를 Azure Spring Apps 인스턴스의 이름으로 바꾸기).

이전 모듈과 마찬가지로 이 명령의 결과는 처음에 MySQL 데이터베이스에 삽입된 세 개의 항목이어야 합니다.

[{"id":"1","description":"First item","done":true},{"id":"2","description":"Second item","done":true},{"id":"3","description":"Third item","done":false}]