config

package
v0.0.0-...-d744151 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 2, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func InitStandaloneFileWatcher

func InitStandaloneFileWatcher(path string, events chan *store.Event)

func ReadAndReload

func ReadAndReload(path string, events chan *store.Event)

Types

type Admin

type Admin struct {
	AdminKeyRequired bool        `mapstructure:"admin_key_required"`
	AdminKey         []AdminKey  `mapstructure:"admin_key"`
	EnableAdminCORS  bool        `mapstructure:"enable_admin_cors"`
	AllowAdmin       []string    `mapstructure:"allow_admin"`
	AdminListen      AdminListen `mapstructure:"admin_listen"`
	AdminAPIVersion  string      `mapstructure:"admin_api_version"`
}

type AdminKey

type AdminKey struct {
	Name string `mapstructure:"name"`
	Key  string `mapstructure:"key"`
	Role string `mapstructure:"role"`
}

type AdminListen

type AdminListen struct {
	IP   string `mapstructure:"ip"`
	Port int    `mapstructure:"port"`
}

type Apisix

type Apisix struct {
	NodeListen                         []NodeListen `mapstructure:"node_listen"`
	EnableAdmin                        bool         `mapstructure:"enable_admin"`
	EnableDevMode                      bool         `mapstructure:"enable_dev_mode"`
	EnableReuseport                    bool         `mapstructure:"enable_reuseport"`
	ShowUpstreamStatusInResponseHeader bool         `mapstructure:"show_upstream_status_in_response_header"`
	EnableIpv6                         bool         `mapstructure:"enable_ipv6"`
	EnableServerTokens                 bool         `mapstructure:"enable_server_tokens"`
	ProxyCache                         ProxyCache   `mapstructure:"proxy_cache"`

	Router                              Router         `mapstructure:"router"`
	ProxyMode                           string         `mapstructure:"proxy_mode"`
	StreamProxy                         StreamProxy    `mapstructure:"stream_proxy"`
	DnsResolver                         []string       `mapstructure:"dns_resolver"`
	DnsResolverValid                    int            `mapstructure:"dns_resolver_valid"`
	ResolverTimeout                     int            `mapstructure:"resolver_timeout"`
	EnableResolvSearchOpt               bool           `mapstructure:"enable_resolv_search_opt"`
	Ssl                                 Ssl            `mapstructure:"ssl"`
	EnableControl                       bool           `mapstructure:"enable_control"`
	Control                             Control        `mapstructure:"control"`
	DisableSyncConfigurationDuringStart bool           `mapstructure:"disable_sync_configuration_during_start"`
	DataEncryption                      DataEncryption `mapstructure:"data_encryption"`
}

type ApisixConfigurationStandalone

type ApisixConfigurationStandalone struct {
	Routes          []*Route          `json:"routes,omitempty" yaml:"routes,omitempty"`
	Services        []*Service        `json:"services,omitempty" yaml:"services,omitempty"`
	PluginMetadatas []*PluginMetadata `json:"plugin_metadata,omitempty" yaml:"plugin_metadata,omitempty"`
	SSLs            []*SSL            `json:"ssls,omitempty" yaml:"ssls,omitempty"`
}

type Config

type Config struct {
	Debug  bool   `mapstructure:"debug"`
	Apisix Apisix `mapstructure:"apisix"`

	// NOTE: the section nginx_config is not supported in this version
	// use proxy instead
	Proxy Proxy `mapstructure:"proxy"`

	Discovery     Discovery `mapstructure:"discovery"`
	GraphQL       GraphQL   `mapstructure:"graphql"`
	Plugins       []string  `mapstructure:"plugins"`
	StreamPlugins []string  `mapstructure:"stream_plugins"`
	// PluginAttr    PluginAttr `mapstructure:"plugin_attr"`
	PluginAttr map[string]map[string]interface{} `mapstructure:"plugin_attr"`
	Deployment Deployment                        `mapstructure:"deployment"`
}
var GlobalConfig *Config

func Load

func Load() (*Config, error)

type Control

type Control struct {
	Ip   string `mapstructure:"ip"`
	Port int    `mapstructure:"port"`
}

type DataEncryption

type DataEncryption struct {
	EnableEncryptFields bool     `mapstructure:"enable_encrypt_fields"`
	Keyring             []string `mapstructure:"keyring"`
}

type Deployment

type Deployment struct {
	// TODO: add validation here
	Role            string                `mapstructure:"role"`
	RoleTraditional RoleTraditionalConfig `mapstructure:"role_traditional"`
	// TODO: role_data_plane, role_control_plane
	Admin Admin `mapstructure:"admin"`
	Etcd  Etcd  `mapstructure:"etcd"`
}

type Discovery

type Discovery map[string]interface{}

type Etcd

type Etcd struct {
	Host   []string `mapstructure:"host"`
	Prefix string   `mapstructure:"prefix"`

	// TODO: not support yet
	Timeout            int `mapstructure:"timeout"`
	WatchTimeout       int `mapstructure:"watch_timeout"`
	ResyncDelay        int `mapstructure:"resync_delay"`
	HealthCheckTimeout int `mapstructure:"health_check_timeout"`
	StartupRetry       int `mapstructure:"startup_retry"`

	User     string `mapstructure:"user"`
	Password string `mapstructure:"password"`

	// TODO: not support yet
	TLS EtcdTLS `mapstructure:"tls"`
}

type EtcdTLS

type EtcdTLS struct {
	Cert   string `mapstructure:"cert"`
	Key    string `mapstructure:"key"`
	Verify bool   `mapstructure:"verify"`
}

type GraphQL

type GraphQL struct {
	MaxSize int `mapstructure:"max_size"`
}

type Listen

type Listen struct {
	Port        int  `mapstructure:"port"`
	EnableHttp2 bool `mapstructure:"enable_http2"`
	EnableQuic  bool `mapstructure:"enable_quic"`
}

type NodeListen

type NodeListen struct {
	Ip          string `mapstructure:"ip"`
	Port        int    `mapstructure:"port"`
	EnableHttp2 bool   `mapstructure:"enable_http2"`
}

type PluginAttr

type PluginAttr map[string]interface{}

type PluginMetadata

type PluginMetadata struct {
	runtime.RawExtension `json:",inline" yaml:",inline"`

	ID string `json:"id" yaml:"id"`
}

func (*PluginMetadata) MarshalYAML

func (pm *PluginMetadata) MarshalYAML() (interface{}, error)

MarshalYAML is serializing method for plugin_metadata

func (*PluginMetadata) UnmarshalYAML

func (pm *PluginMetadata) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML is serializing method for plugin_metadata

type Proxy

type Proxy struct {
	// keepalive_timeout: 60s
	// client_header_timeout: 60s
	DialerTimeout   int `mapstructure:"dialer_timeout"`
	DialerKeepAlive int `mapstructure:"dialer_keep_alive"`

	IdleConnTimeout       int `mapstructure:"idle_conn_timeout"`
	TLSHandshakeTimeout   int `mapstructure:"tls_handshake_timeout"`
	ExpectContinueTimeout int `mapstructure:"expect_continue_timeout"`
	ResponseHeaderTimeout int `mapstructure:"response_header_timeout"`
	MaxIdleConnsPerHost   int `mapstructure:"max_idle_conns_per_host"`
}

section: proxy

type ProxyCache

type ProxyCache struct {
	CacheTtl time.Duration `mapstructure:"cache_ttl"`
	Zones    []Zone        `mapstructure:"zones"`
}

type RoleTraditionalConfig

type RoleTraditionalConfig struct {
	ConfigProvider string `mapstructure:"config_provider"`
}

type Route

type Route struct {
	apisixv1.Route `json:",inline" yaml:",inline"`
	Status         *int `json:"status,omitempty" yaml:"status,omitempty"`

	Upstream  *Upstream `json:"upstream,omitempty" yaml:"upstream,omitempty"`
	ServiceID string    `json:"service_id,omitempty" yaml:"service_id,omitempty"`

	CreateTime int64 `json:"create_time,omitempty" yaml:"create_time,omitempty"`
	UpdateTime int64 `json:"update_time,omitempty" yaml:"update_time,omitempty"`
}

type Router

type Router struct {
	Http string `mapstructure:"http"`
	Ssl  string `mapstructure:"ssl"`
}

type SSL

type SSL struct {
	apisixv1.Ssl `json:",inline" yaml:",inline"`

	CreateTime int64 `json:"create_time,omitempty" yaml:"create_time,omitempty"`
	UpdateTime int64 `json:"update_time,omitempty" yaml:"update_time,omitempty"`
}

type Service

type Service struct {
	apisixv1.Metadata `json:",inline" yaml:",inline"`

	Upstream        *Upstream        `json:"upstream,omitempty" yaml:"upstream,omitempty"`
	EnableWebsocket bool             `json:"enable_websocket,omitempty" yaml:"enable_websocket,omitempty"`
	Hosts           []string         `json:"hosts,omitempty" yaml:"hosts,omitempty"`
	Plugins         apisixv1.Plugins `json:"plugins" yaml:"plugins"`

	CreateTime int64 `json:"create_time,omitempty" yaml:"create_time,omitempty"`
	UpdateTime int64 `json:"update_time,omitempty" yaml:"update_time,omitempty"`
}

type Ssl

type Ssl struct {
	Enable                bool     `mapstructure:"enable"`
	Listen                []Listen `mapstructure:"listen"`
	SslTrustedCertificate string   `mapstructure:"ssl_trusted_certificate"`
	SslProtocols          []string `mapstructure:"ssl_protocols"`
	SslCiphers            string   `mapstructure:"ssl_ciphers"`
	SslSessionTickets     bool     `mapstructure:"ssl_session_tickets"`
}

type StreamProxy

type StreamProxy struct {
	Tcp []TcpListen `mapstructure:"tcp"`
	Udp []string    `mapstructure:"udp"`
}

type TcpListen

type TcpListen struct {
	Addr string `mapstructure:"addr"`
	Tls  bool   `mapstructure:"tls"`
}

type Upstream

type Upstream struct {
	Type          *string                       `json:"type,omitempty" yaml:"type,omitempty"`
	DiscoveryType *string                       `json:"discovery_type,omitempty" yaml:"discovery_type,omitempty"`
	ServiceName   *string                       `json:"service_name,omitempty" yaml:"service_name,omitempty"`
	HashOn        *string                       `json:"hash_on,omitempty" yaml:"hash_on,omitempty"`
	Key           *string                       `json:"key,omitempty" yaml:"key,omitempty"`
	Checks        *apisixv1.UpstreamHealthCheck `json:"checks,omitempty" yaml:"checks,omitempty"`
	Nodes         apisixv1.UpstreamNodes        `json:"nodes" yaml:"nodes"`
	Scheme        *string                       `json:"scheme,omitempty" yaml:"scheme,omitempty"`
	Retries       *int                          `json:"retries,omitempty" yaml:"retries,omitempty"`
	RetryTimeout  *int                          `json:"retry_timeout,omitempty" yaml:"retry_timeout,omitempty"`
	PassHost      *string                       `json:"pass_host,omitempty" yaml:"pass_host,omitempty"`
	UpstreamHost  *string                       `json:"upstream_host,omitempty" yaml:"upstream_host,omitempty"`
	Timeout       *apisixv1.UpstreamTimeout     `json:"timeout,omitempty" yaml:"timeout,omitempty"`
}

type Zone

type Zone struct {
	Name        string `mapstructure:"name"`
	MemorySize  string `mapstructure:"memory_size"`
	DiskSize    string `mapstructure:"disk_size"`
	DiskPath    string `mapstructure:"disk_path"`
	CacheLevels string `mapstructure:"cache_levels"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL