Documentation ¶
Overview ¶
Package config - Configuration for Cloud-Barista's REST API Gateway and provides the required process
Index ¶
- Constants
- Variables
- func CheckErr(err error, configFile string) error
- type AdminConfig
- type BackendConfig
- type BasicAuthConfig
- type ClusterConfig
- type CredentialsConfig
- type EndpointConfig
- func (eConf *EndpointConfig) AdjustValues(sConf *ServiceConfig) error
- func (eConf *EndpointConfig) InheriteFromService(sConf *ServiceConfig)
- func (eConf *EndpointConfig) InitBackendDefaults(bIdx int) error
- func (eConf *EndpointConfig) InitBackendURLMappings(bIdx int, inputParams map[string]interface{}) error
- func (eConf *EndpointConfig) InitializeDefaults() error
- func (eConf *EndpointConfig) Validate() error
- type EndpointMatchError
- type EndpointPathError
- type HealthCheck
- type HostConfig
- type IConfig
- type LBModes
- type MWConfig
- type NoBackendsError
- type Parser
- type RepositoryConfig
- type ServiceConfig
- type TLSConfig
- type UndefinedOutputParamError
- type UnsupportedVersionError
- type WrongNumberOfParamsError
Constants ¶
const (
// ConfigVersion - 설정 구조에 대한 버전
ConfigVersion = 1
)
Variables ¶
var ( // ErrNoHosts - Load Balancing 처리 대상 Host 가 지정되지 않은 경우 오류 ErrNoHosts = errors.New("no available hosts") )
Functions ¶
Types ¶
type AdminConfig ¶
type AdminConfig struct { // Port - Admin Server 포트 (기본값: 8001) Port int `mapstructure:"port" default:"8001"` // Credentials - Admin Server (WEB)를 사용할 사용자 설정 Credentials *CredentialsConfig `mapstructure:"credentials"` // TLS - Admin Server에서 사용할 TLS 설정 TLS *TLSConfig `mapstructure:"tls"` // ProfilingEnabled - Admin Server Profile 처리 여부 (기본값: false) ProfilingEnabled bool `mapstructure:"profiling_enabled"` // ProfilingPublic - Admin Server Profile 정보 노출 여부 (기본값: false) ProfilingPublic bool `mapstructure:"profiling_public"` }
AdminConfig - Admin API 운영에 필요한 설정 형식
func (*AdminConfig) InitializeDefaults ¶
func (admin *AdminConfig) InitializeDefaults() error
InitializeDefaults - 기본 값 설정
type BackendConfig ¶
type BackendConfig struct { // Hosts - Backend API Server의 Host URI (기본값: 없으면 EndPointConfig 정보 사용) Hosts []*HostConfig `yaml:"hosts" json:"hosts"` // Timeout - Backend 처리 시간 (기본값: 없으면 EndPointConfig 정보 사용) Timeout time.Duration `yaml:"timeout" json:"timeout"` // Method - Backend 호출에 사용할 HTTP Method (기본값: 없으면 EndPointConfig 정보 사용) Method string `yaml:"method" json:"method"` // URLPattern - Backend 호출에 사용할 URL Patthern (기본값: "") URLPattern string `yaml:"url_pattern" json:"url_pattern"` // Encoding - 인코딩 포맷 (기본값: "json") Encoding string `yaml:"encoding" json:"encoding" default:"json"` // Group - Backend 결과를 묶을 Group 명 (기본값: "") Group string `yaml:"group" json:"group" default:""` // Blacklist - Backend 결과에서 생략할 필드명 리스트 (기본값: "[]", flatmap 적용 "." operation) Blacklist []string `yaml:"blacklist" json:"blacklist" default:"[]"` // Whitelist - Backend 결과에서 추출할 필드명 리스트 (기본값: "[]", flatmap 적용 "." operation) Whitelist []string `yaml:"whitelist" json:"whitelist" default:"[]"` // Mapping - Backend 결과에서 필드명을 변경할 리스트 맵 (기본값: "{}") Mapping map[string]string `yaml:"mapping" json:"mapping" default:"{}"` // IsCollection - Backend 결과가 컬랙션인지 여부 (기본값: false) IsCollection bool `yaml:"is_collection" json:"is_collection" default:"false"` // WrapCollectionToJSON - Backend 결과가 컬랙션인 경우에 core.CollectionTag ("collection") 으로 JSON 포맷을 할 것인지 여부 // (True 면 core.CollectionTag ("collection") 으로 JSON 전환, false면 Array 상태로 반환) (기본값: false) WrapCollectionToJSON bool `yaml:"wrap_collection_to_json" json:"wrap_collection_to_json" default:"false"` // Target - Backend 결과 중에서 특정한 필드만 처리할 경우의 필드명 (기본값: "") Target string `yaml:"target" json:"target" default:""` // Middleware - Backend 에서 동작할 Middleware 설정 Middleware MWConfig `yaml:"middleware" json:"middleware"` // HostSanitizationDisabled - host 정보의 정제작업 비활성화 여부 (기본값: false) HostSanitizationDisabled bool `yaml:"disable_host_sanitize" json:"disable_host_sanitize" default:"false"` // BalanceMode - Backend Loadbalacing 모드 (기본값: "", "rr" - "roundrobin", "wrr" - "weighted roundrobin", "" - random) BalanceMode string `yaml:"lb_mode" json:"lb_mode" default:""` // API 호출의 응답을 파싱하기 위한 디코더 (내부 사용) Decoder encoding.Decoder `yaml:"-" json:"-"` // URLPattern에서 파라미터 변환에 사용할 키 관리 (내부 사용) URLKeys []string `yaml:"-" json:"-"` }
BackendConfig - Backend API Server 연결과 응답 처리를 위한 설정 구조
func (*BackendConfig) InitializeDefaults ¶
func (bConf *BackendConfig) InitializeDefaults() error
InitializeDefaults - 설정 초기화
type BasicAuthConfig ¶
type BasicAuthConfig struct { // Users - Admin 사용자 정보 (기본값: "admin:test@admin00") Users map[string]string `mapstructure:"users" default:"{\"admin\":\"test@admin00\"}"` }
BasicAuthConfig - Admin 사용자 기본 인증 정보 형식
func (*BasicAuthConfig) InitializeDefaults ¶
func (ba *BasicAuthConfig) InitializeDefaults() error
InitializeDefaults - 기본 값 설정
type ClusterConfig ¶
type ClusterConfig struct { // UpdateFrequency - Repository Polling 주기 (기본값: 10s, file repository가 아닌 경우) UpdateFrequency time.Duration `mapstructure:"update_frequency" default:"10s"` }
ClusterConfig - Cluster 환경 정보 관리 형식
func (*ClusterConfig) InitializeDefaults ¶
func (c *ClusterConfig) InitializeDefaults() error
InitializeDefaults - 기본 값 설정
type CredentialsConfig ¶
type CredentialsConfig struct { // Algorithm - JWT 인증 알고리즘 (기본값: HS256) Algorithm string `mapstructure:"algorithm" default:"HS256"` // Secret - JWT 인증 비밀 키 (기본값: "testSecret") Secret string `mapstructure:"secret" default:"testSecret"` // TokenTimeout - JWT 인증 유효기간 (기본값: 3h) TokenTimeout time.Duration `mapstructure:"token_timeout" default:"3h"` // Basic - Admin 사용자 기본 인증 정보 Basic *BasicAuthConfig `mapstructure:"basic"` }
CredentialsConfig - Admin API 사용자 인증 정보 형식
func (*CredentialsConfig) InitializeDefaults ¶
func (cc *CredentialsConfig) InitializeDefaults() error
InitializeDefaults - 기본값 설정
type EndpointConfig ¶
type EndpointConfig struct { // Name - 설정 식별 명 Name string `yaml:"name" json:"name"` // Active - 설정 활성화 여부 (기본값: true) Active bool `yaml:"active" json:"active" default:"true"` // Endpoint - 클라이언트에 노출될 URL 패턴 Endpoint string `yaml:"endpoint" json:"endpoint"` // Hosts - 전역으로 사용할 기본 Host 리스트 (기본값: "[]") // Backend에 지정되지 않은 경우 사용 Hosts []*HostConfig `yaml:"hosts" json:"hosts" default:"[]"` // Method - Endpoint에 대한 HTTP 메서드 (GET, POST, PUT, etc) (기본값: "GET"") Method string `yaml:"method" json:"method" default:"GET"` // Timeout - Endpoint 처리 시간 (기본값: "2s", 없으면 ServiceConfig.Timeout 사용) Timeout time.Duration `yaml:"timeout" json:"timeout" default:"2s"` // CacheTTL - GET 처리에 대한 캐시 TTL 기간 (기본값: "1h") CacheTTL time.Duration `yaml:"cache_ttl" json:"cache_ttl" default:"1h"` // OutputEncoding - 반환결과 처리에 사용할 인코딩 (기본값: "json") OutputEncoding string `yaml:"output_encoding" json:"output_encoding" default:"json"` // ExceptQueryStrings - Backend 에 전달되는 Query String에서 제외할 파라미터 Key 리스트 ExceptQueryStrings []string `yaml:"except_querystrings" json:"except_querystrings" default:"[]"` // ExceptHeaders - Backend 에 전달되는 Header에서 제외할 파라미터 Key 리스트 ExceptHeaders []string `yaml:"except_headers" json:"except_headers" default:"[]"` // Middleware - Endpoint 단위에서 적용할 Middleware 설정 Middleware MWConfig `yaml:"middleware" json:"middleware"` // HealthCheck - Health Check 설정 HealthCheck *HealthCheck `yaml:"health_check" json:"health_check" default:"{}"` // Backend - Endpoint에서 호출할 Backend API 서버 호출/응답 처리 설정 리스트 Backend []*BackendConfig `yaml:"backend" json:"backend"` // Bypass 처리 여부 (내부 처리용) IsBypass bool `yaml:"-" json:"-"` }
EndpointConfig - 서비스 라우팅에 사용할 설정 구조
func (*EndpointConfig) AdjustValues ¶
func (eConf *EndpointConfig) AdjustValues(sConf *ServiceConfig) error
AdjustValues - 설정 정보를 사용가능한 정보로 재 구성
func (*EndpointConfig) InheriteFromService ¶
func (eConf *EndpointConfig) InheriteFromService(sConf *ServiceConfig)
InheriteFromService - 서비스 설정에서 상속 받을 데이터 설정
func (*EndpointConfig) InitBackendDefaults ¶
func (eConf *EndpointConfig) InitBackendDefaults(bIdx int) error
InitBackendDefaults - Backend에 미 설정된 항목들을 기본 값으로 초기화
func (*EndpointConfig) InitBackendURLMappings ¶
func (eConf *EndpointConfig) InitBackendURLMappings(bIdx int, inputParams map[string]interface{}) error
InitBackendURLMappings - Backend에 지정된 파라미터 정보들을 이후에 사용할 수 있도록 초기화
func (*EndpointConfig) InitializeDefaults ¶
func (eConf *EndpointConfig) InitializeDefaults() error
InitializeDefaults - Endpoint에 미 설정된 항목들을 기본 값으로 초기화
func (*EndpointConfig) Validate ¶
func (eConf *EndpointConfig) Validate() error
Validate - Endpoint 별 세부 필수 항목 검증
type EndpointMatchError ¶
EndpointMatchError - Endpoint 패턴에 문제가 있을 경우에 반환할 오류 구조
func (*EndpointMatchError) Error ¶
func (e *EndpointMatchError) Error() string
Error - Endpoint 패턴 오류 문자열 반환
type EndpointPathError ¶
EndpointPathError - Endpoint 경로에 문제가 있을 경우에 반환할 오류 구조
func (*EndpointPathError) Error ¶
func (e *EndpointPathError) Error() string
Error - Endpoint 경로 오류 문자열 반환
type HealthCheck ¶
type HealthCheck struct { // URL - Health Checking URL (기본값: "") URL string `mapstructure:"url" yaml:"url" json:"url" bson:"url"` // `mapstructure:"url" yaml:"url" json:"url" bson:"url" valid:"url"` // Timeout - 검증 제한 시간 (기본값: 0, 제한없음) Timeout time.Duration `mapstructure:"timeout" yaml:"timeout" json:"timeout" bson:"timeout" default:"0s"` }
HealthCheck - Health Check 구조
func (*HealthCheck) InitializeDefaults ¶
func (hc *HealthCheck) InitializeDefaults() error
InitializeDefaults - 기본값 설정
type HostConfig ¶
type HostConfig struct { // Host - Backend Service 호스트 정보 (기본값: "", 필수) Host string `mapstructure:"host"` // Weight - Weighted Roundrobin 선택 적용할 가중치 (기본값: 0) Weight int `mapstructure:"weight" default:"0"` }
HostConfig - Backend Load balancing 처리를 위한 Host 구조
func (*HostConfig) InitializeDefaults ¶
func (h *HostConfig) InitializeDefaults() error
InitializeDefaults - 기본값 설정
type IConfig ¶
type IConfig interface { InitializeDefaults() Validate() }
IConfig - 설정관리용 struct의 기본 메서드 제공 인터페이스
type MWConfig ¶
type MWConfig core.StringInterfaceMap
MWConfig - Middleware 설정을 저장하기 위한 맵 구조 (개별 Middlewares에서 설정 Parsing 적용)
type NoBackendsError ¶
NoBackendsError - Backend가 지정되지 않았을 경우에 반환할 오류 구조
func (*NoBackendsError) Error ¶
func (n *NoBackendsError) Error() string
Error - Backend 미지정 오류 문자열 반환
type Parser ¶
type Parser struct {
// contains filtered or unexported fields
}
Parser - Viper lib를 활용하기 위한 Parser 정의 구조 형식
type RepositoryConfig ¶
type RepositoryConfig struct { // DSN - Repository 연결 문자열 (기본값: "file://./conf", "cbstore://api/restapigw/conf" 설정 가능) DSN string `mapstructure:"dsn" default:"file://./conf"` }
RepositoryConfig - Routing 정보 관리 형식
func (*RepositoryConfig) InitializeDefaults ¶
func (r *RepositoryConfig) InitializeDefaults() error
InitializeDefaults - 기본 값 설정
type ServiceConfig ¶
type ServiceConfig struct { // 서비스 식별 명 (기본값: ”) Name string `mapstructure:"name"` // 기본 처리 시간 (기본값: 2s) // API의 Endpoint / Backend에 별도의 Timeout 미 지정시 사용 Timeout time.Duration `mapstructure:"timeout" default:"2s"` // OutputEncoding - 반환결과 처리에 사용할 인코딩 (기본값: "json") OutputEncoding string `yaml:"output_encoding" json:"output_encoding" default:"json"` // 종료시 잔여 요청을 처리하기 위한 대기 시간 (기본 값: 0s) GraceTimeout time.Duration `mapstructure:"grace_timeout"` // 디버그모드 여부 (기본값: false) Debug bool `mapstructure:"debug"` // GET 처리에 대한 캐시 TTL 기간 (기본값: 1h) CacheTTL time.Duration `mapstructure:"cache_ttl" default:"1h"` // 서비스에서 사용할 포트 (기본값: 8000) Port int `mapstructure:"port" default:"8000"` // 설정 파일 버전 (기본값: 1) Version int `mapstructure:"version" default:"1"` // 전체 요청을 읽기 위한 최대 허용 시간 (기본값: 0, 0이면 제한없음) ReadTimeout time.Duration `mapstructure:"read_timeout"` // 전체 응답을 출력하기 위한 최대 허용 시간 (기본값: 0, , 0이면 제한없음) WriteTimeout time.Duration `mapstructure:"write_timeout"` // Keep-alive 활성 상태에서 다음 요청까지의 최대 대기 시간 (기본값: 0, 0이면 제한없음) IdleTimeout time.Duration `mapstructure:"idle_timeout"` // 요청헤더를 읽기 위한 최대 허용 시간 (기본값: 0, 0이면 제한없음) ReadHeaderTimeout time.Duration `mapstructure:"read_header_timeout"` // 유휴연결(Keep-alive)들의 최대 유지 수 (기본값: 0, 0이면 제한없음) MaxIdleConnections int `mapstructure:"max_idle_connections"` // 호스트당 유휴연결(Keep-alive)들의 최대 유지 수 (기본값: 250, 0이면 250 사용) MaxIdleConnectionsPerHost int `mapstructure:"max_idle_connections_per_host" default:"250"` // 유휴연결(Keep-alive)의 최대 유효시간 (기본값: , 0이면 ReadTimeout 사용, 이것도 0이면 ReadHeaderTimeout 사용) IdleConnectionTimeout time.Duration `mapstructure:"idle_connection_timeout"` // 서비스 단위에서 적용할 Middleware 설정 Middleware MWConfig `mapstructure:"middleware"` // 서비스에서 사용할 TLS 설정 TLS *TLSConfig `mapstructure:"tls"` // TCP 연결에 사용할 대기시간 (기본값:0, 0이면 no timeout) DialerTimeout time.Duration `mapstructure:"dialer_timeout"` // 활성연결의 유지 시간 (기본값:없음, 0 지정시는 Keep-alive 비활성화) DialerKeepAlive time.Duration `mapstructure:"dialer_keep_alive"` // DualStack 활성화 시에 실패한 연결을 재 처리하는데 필요한 대기 시간 (기본값: 0, 0이면 no delay) DialerFallbackDelay time.Duration `mapstructure:"dialer_fallback_delay"` // 압축 비활성 여부 (기본값: false) DisableCompression bool `mapstructure:"disable_compression"` // 다른 요청에 TCP 연결을 재 사용하는 것의 비활성 여부 (기본값: false) DisableKeepAlives bool `mapstructure:"disable_keep_alives"` // Request 처리 후에 서버의 Response Header 정보를 기다리는 시간 (기본값: 0, 0이면 no timeout) ResponseHeaderTimeout time.Duration `mapstructure:"response_header_timeout"` // 서버의 첫번째 Response Header 정보를 기다리는 시간 (기본값: 0, 0이면 no timeout) ExpectContinueTimeout time.Duration `mapstructure:"expect_continue_timeout"` // DisableStrictREST - REST 강제 규칙 비활성화 여부 (기본값: false) DisableStrictREST bool `mapstructure:"disable_strict_rest"` // RouterEngine - Route 처리에 사용할 Engine 지정 (기본값: gin) RouterEngine string `mapstructure:"router_engine" default:"gin"` // Admin API 설정 Admin *AdminConfig `mapstructure:"admin"` // Repository 설정 Repository *RepositoryConfig `mapstructure:"repository"` // Cluster 설정 Cluster *ClusterConfig `mapstructure:"cluster"` }
ServiceConfig - REST API Gateway 운영에 필요한 서비스 설정 형식
func (*ServiceConfig) InitializeDefaults ¶
func (sConf *ServiceConfig) InitializeDefaults() error
InitializeDefaults - 서비스 설정 초기화
type TLSConfig ¶
type TLSConfig struct { // Port - 기본 포트 (기본값: 8443) Port int `mapstructure:"port"` // Redirect - TLS 리다이렉션 (기본값: true) Redirect bool `mapstructure:"redirect" default:"true"` // IsDiabled - TLS 비활성화 여부 (기본값: false) IsDisabled bool `mapstructure:"disabled"` // PublicKey - 공개 키 경로 (기본값: "") PublicKey string `mapstructure:"public_key"` // PrivateKey - 비밀 키 경로 (기본값: "") PrivateKey string `mapstructure:"private_key"` // MinVersion - TLS 최소 버전 (기본값: VersionTLS12) MinVersion string `mapstructure:"min_version"` // MaxVersion - TLS 최대 버전 (기본값: VersionTLS12) MaxVersion string `mapstructure:"max_version"` // Curve 설정들의 리스트 (use 23 for CurveP256, 24 for CurveP384 or 25 for CurveP521, 기본값: 모두 사용) CurvePreferences []uint16 `mapstructure:"curve_preferences"` // PreferServerCipherSuites - 서버에서 사용을 강제하는 Cipher Suite 리스트 (기본값: false) PreferServerCipherSuites bool `mapstructure:"prefer_server_cipher_suites"` // CipherSuites - Chiper Suite 리스트 (기본값: defaultCipherSuites 리스트 사용) CipherSuites []uint16 `mapstructure:"cipher_suites"` }
TLSConfig - 서비스에서 사용할 TLS 설정 구조
func (*TLSConfig) InitializeDefaults ¶
InitializeDefaults - 기본 값 설정
type UndefinedOutputParamError ¶
type UndefinedOutputParamError struct { Endpoint string Method string Backend int InputParams []string OutputParams []string Param string }
UndefinedOutputParamError - IN 파라미터에 대한 OUT 파라미터가 지정되지 않았을 경우에 반환할 오류 구조
func (*UndefinedOutputParamError) Error ¶
func (u *UndefinedOutputParamError) Error() string
Error - Output 파라미터 미지정 오류 문자열 반환
type UnsupportedVersionError ¶
UnsupportedVersionError - 설정 초기화 과정에서 버전 검증을 통해 반환할 오류 구조
func (*UnsupportedVersionError) Error ¶
func (u *UnsupportedVersionError) Error() string
Error - 비 호환 버전에 대한 오류 문자열 반환
type WrongNumberOfParamsError ¶
type WrongNumberOfParamsError struct { Endpoint string Method string Backend int InputParams []string OutputParams []string }
WrongNumberOfParamsError - 파라미터의 IN/OUT 갯수가 다를 경우에 반환할 오류 구조
func (*WrongNumberOfParamsError) Error ¶
func (w *WrongNumberOfParamsError) Error() string
Error - IN/OUT 파라미터 갯수 문제 오류 문자열 반환