Spring Config [2] Gateway적용

최준호·2022년 3월 8일
0

Microservice Architecture

목록 보기
20/32
post-thumbnail

🔨설정 변경

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

의존성을 먼저 추가해준다.

spring:
  cloud:
    config:
      uri: http://127.0.0.1:8888
      name: ecommerce

bootstrap.yml 파일을 생성하여 내용을 입력해준다.

management:
  endpoints:
    web:
      exposure:
        include: refresh, health, beans, httptrace

application.yml에 config 사용을 위한 설정을 추가해준다. 이번에 httpstrace 옵션을 추가해보자

@SpringBootApplication
public class GatewayApplication {

    ...

    @Bean
    public HttpTraceRepository httpTraceRepository(){
        return new InMemoryHttpTraceRepository();
    }
}

httpstrace를 사용하기 위해 application 파일에 HttpTraceRepository를 반환하는 bean을 등록해줘야한다.

- id: user-service
  uri: lb://USER-SERVICE
  predicates:
    - Path=/order-service/actuator/**
    - Method=GET,POST
  filters:
    - RemoveRequestHeader=Cookie
    - RewritePath=/user-service(?<segment>.*), /$\{segment}

application.yml에 gateway로 actuator를 사용할 수 있도록 다음과 같이 설정해준다.


서버 실행후 health로 정상적으로 체크할 수 있다.

그리고 우리가 추가한 httptrace의 경우 다음과 같이 gateway를 통해 요청한 uri들의 로그를 확인할 수 있다.

{
    "traces": [
        {
            "timestamp": "2022-03-08T21:04:58.756202Z",
            "principal": null,
            "session": null,
            "request": {
                "method": "GET",
                "uri": "http://localhost:8000/user-service/actuator/health",
                "headers": {
                    "Accept": [
                        "*/*"
                    ],
                    "Cache-Control": [
                        "no-cache"
                    ],
                    "User-Agent": [
                        "PostmanRuntime/7.29.0"
                    ],
                    "Connection": [
                        "keep-alive"
                    ],
                    "Postman-Token": [
                        "2a4de739-a121-48e3-be3e-1a5f9164868b"
                    ],
                    "Host": [
                        "localhost:8000"
                    ],
                    "Accept-Encoding": [
                        "gzip, deflate, br"
                    ]
                },
                "remoteAddress": null
            },
            "response": {
                "status": 200,
                "headers": {
                    "transfer-encoding": [
                        "chunked"
                    ],
                    "Cache-Control": [
                        "no-cache, no-store, max-age=0, must-revalidate"
                    ],
                    "X-Content-Type-Options": [
                        "nosniff"
                    ],
                    "Pragma": [
                        "no-cache"
                    ],
                    "Expires": [
                        "0"
                    ],
                    "X-XSS-Protection": [
                        "1; mode=block"
                    ],
                    "Date": [
                        "Tue, 08 Mar 2022 21:04:58 GMT"
                    ],
                    "Content-Type": [
                        "application/vnd.spring-boot.actuator.v3+json"
                    ]
                }
            },
            "timeTaken": 14
        },
        ...
    ]
}
profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글