티스토리 뷰

Spring Cloud Gateway 의 설정을 Admin 페이지에서 관리자가 쉽게 수정할 수 있도록 하기 위해서 Route 와 Filter 설정을 Custom Meta Data 로 아래와 같이 정의 하였다.

YML 파일의 Spring Cloud Gateway 의 설정을 저장하는 방법도 가능하지만 우리 도메인에 특화된 설정들을 추가하기 힘들다는 단점과 spring cloud gateway  에 강한 의존성이 생기는 단점을 해소하기 위해서 Custom Meta Data 를 정의하였고 이를 런타임에 Spring Cloud Gateway Configuration 으로 변환하였다.

 

ROUTE_CONFIG.json

[{
  "uri" : "https://www.naver.com",
  "connectionTimedOut" : "300000",
  "responseTimedOut" : "30000",
  "enabled" : "true",
  "predicates" : [{
	"predicateType" : "Path",
	"args" : {
	  "pattern_0" : "/blog/**"
	  "pattern_1" : "/news/**"
	}
  }],
  "filters" : [{
	"filterName" : "DeviceHeaderFilter",
	"args" : {}
  }]
},
  {
	"uri" : "https://www.daum.net",
	"enabled" : "true",
	"predicates" : [{
	  "predicateType" : "Path",
	  "args" : {
		"pattern_0" : "/cafe/**",
		"pattern_1" : "/sports/**"
	  }
	}],
	"filters" : []
  }]

ROUTE_CONFIG.json 에는 RoutePredication 으로 변환되어 Spring Cloud Gateway 의 라우터 설정으로 변환될 데이터들이 저장된다.

라우터의 Predicates 가 Array 로 지정되며 그때 전달된 인자들은 Map 형태로 데이터화 하였다.

라우터의 Filters 또한 Array 로 지정되며 그때 전달된 인자들은 Map 형태로 데이터화 하였다.

 

 

 

GLOBAL_CONFIG.json

{
  "filters" : [{
		"filterName" : "HostSettingFilter",
		"args" : {
	  		"host" : "my-host.comm"
		}
  	},
	{
	  "filterName" : "GlobalLoggingFilter",
	  "args" : {}
	},
	{
	  "filterName" : "UnsupportedBrowserFilter",
	  "args" : {
		"unsupportedBrowserRegx" : ".*(MSIE [1-7]\\.).*"
	  }
	}]
}

GLOBAL_CONFIG.json 은 라우터별 설정이 아닌 Spring Cloud Gateway 전역에 지정될 설정들을 지정하는 데이터이다.

대표적으로 GlobalFilter 를 설정값으로 가지며 filters 에 명시되어있지 않은 GlobalFilter 는 스프링의 빈으로 등록하지 않아 GlobalFilter 의 역할을 하지 않는다.

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함