ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MSA] MSA 레파지토리
    MSA 2022. 11. 30. 15:33

    Gateway

    application.yml

    server:
      port: 8000
    
    spring:
      profiles:
        active: local
      application:
        name: gateway
      cloud:
        gateway:
          routes:
            - id: demo-service # 게이트웨이와 연결될 서비스의 이름
              uri: http://demo-service:8001 # #게이트웨이로 연결될 서비스 uri
              predicates: #게이트웨이로 연결될 서비스의 url 패턴
                - Path=/demo/**
              filters:
                - RemoveRequestHeader=Cookie
                - RewritePath=/demo/(?<segment>.*), /$\{segment}
                - AuthenticationFilter
          default-filters:
            - name: 필터명
              args:
                preLogger: true # 사용자 지정 파라미터
                postLogger: true # 사용자 지정 파라미터
    jwt:
      secretKey: ${jwt.secret:JwtKey}
    
    # 설정된 Route 확인하기 
    # https://blog.leocat.kr/notes/2020/12/12/spring-cloud-gateway-sample
    management:
      endpoints:
        web:
          exposure:
            include:
              - "gateway"
      endpoint:
        gateway:
          enabled: true
    • uri, predicates : 예를 들어 게이트웨이가 로컬에서 실행되고 있다고 하고, localhost:8000/demo/some-request 요청이 들어오면 predicates /demo/** 조건에 걸리게 되고 uri에 맞게 demo-service:8001/demo/some-request 로라우팅 해준다.
    • default-filters : 전역 필터를 설정함, 위에서 preLogger, postLogger는 사용자가 정한 이름의 파라미터, 위에서 정의한 필터에서 사용한다.

     

    겪었던 문제들

    1. 게이트웨이 설정에서 서비스가 똑같은 포트로 설정되어 있는데 어떻게 게이트웨이는 서비스를 구별해서 리퀘스트를 넘기지?

    # gateway application.yml ...
    
    # 기존 소스
    - id: a-service
      uri: http://a:8002 # a랑 b의 포트가 서로 다름
    
    - id: b-service
      uri: http://b:8003
        
      
    # 개선 소스
    - id: a-service
      uri: http://a:8000 # a랑 b의 포트가 같음
    
    - id: b-service
      uri: http://b:8000

    docker-compose에서의 호스트포트:컨테이너포트는 이해했었으나,위 uri의 주소 http://a, http://b 가 컨테이너의 별칭이라는 것을 몰랐어서 겪었던 일, 결과적으로 gateway는 컨테이너의 별칭:포트를 기반으로 API 요청을 각 서비스에게 전송하기 때문에 위 설정에서 포트가 같아도 상관없다.

     

     

    로그

    1. 최초 작성 / 22.11.30
    2. 겪었던 문제들 1번 추가 / 22.12.01
    3. default-filters / 22.12.03

    댓글