|
|
|
@ -473,7 +473,20 @@ type RuntimeConfig struct {
|
|
|
|
|
// flag: -node string
|
|
|
|
|
NodeName string
|
|
|
|
|
|
|
|
|
|
// AdvertiseAddrLAN is the address we use for advertising our Serf, and
|
|
|
|
|
// Consul RPC IP. The address can be specified as an ip address or as a
|
|
|
|
|
// go-sockaddr template which resolves to a single ip address. If not
|
|
|
|
|
// specified, the bind address is used.
|
|
|
|
|
//
|
|
|
|
|
// hcl: advertise_addr = string
|
|
|
|
|
AdvertiseAddrLAN *net.IPAddr
|
|
|
|
|
|
|
|
|
|
// AdvertiseAddrWAN is the address we use for advertising our Serf, and
|
|
|
|
|
// Consul RPC IP. The address can be specified as an ip address or as a
|
|
|
|
|
// go-sockaddr template which resolves to a single ip address. If not
|
|
|
|
|
// specified, the bind address is used.
|
|
|
|
|
//
|
|
|
|
|
// hcl: advertise_addr_wan = string
|
|
|
|
|
AdvertiseAddrWAN *net.IPAddr
|
|
|
|
|
|
|
|
|
|
// BindAddr is used to control the address we bind to.
|
|
|
|
@ -531,6 +544,32 @@ type RuntimeConfig struct {
|
|
|
|
|
// hcl: check_update_interval = "duration"
|
|
|
|
|
CheckUpdateInterval time.Duration
|
|
|
|
|
|
|
|
|
|
// Checks contains the provided check definitions.
|
|
|
|
|
//
|
|
|
|
|
// hcl: checks = [
|
|
|
|
|
// {
|
|
|
|
|
// id = string
|
|
|
|
|
// name = string
|
|
|
|
|
// notes = string
|
|
|
|
|
// service_id = string
|
|
|
|
|
// token = string
|
|
|
|
|
// status = string
|
|
|
|
|
// script = string
|
|
|
|
|
// args = string
|
|
|
|
|
// http = string
|
|
|
|
|
// header = map[string][]string
|
|
|
|
|
// method = string
|
|
|
|
|
// tcp = string
|
|
|
|
|
// interval = string
|
|
|
|
|
// docker_container_id = string
|
|
|
|
|
// shell = string
|
|
|
|
|
// tls_skip_verify = (true|false)
|
|
|
|
|
// timeout = "duration"
|
|
|
|
|
// ttl = "duration"
|
|
|
|
|
// deregister_critical_service_after = "duration"
|
|
|
|
|
// },
|
|
|
|
|
// ...
|
|
|
|
|
// ]
|
|
|
|
|
Checks []*structs.CheckDefinition
|
|
|
|
|
|
|
|
|
|
// ClientAddrs contains the list of ip addresses the DNS, HTTP and HTTPS
|
|
|
|
@ -682,6 +721,19 @@ type RuntimeConfig struct {
|
|
|
|
|
// hcl: encrypt_verify_outgoing = (true|false)
|
|
|
|
|
EncryptVerifyOutgoing bool
|
|
|
|
|
|
|
|
|
|
// HTTPAddrs contains the list of TCP addresses and UNIX sockets the HTTP
|
|
|
|
|
// server will bind to. If the HTTP endpoint is disabled (ports.http <= 0)
|
|
|
|
|
// the list is empty.
|
|
|
|
|
//
|
|
|
|
|
// The addresses are taken from 'addresses.http' which should contain a
|
|
|
|
|
// space separated list of ip addresses, UNIX socket paths and/or
|
|
|
|
|
// go-sockaddr templates. UNIX socket paths must be written as
|
|
|
|
|
// 'unix://<full path>', e.g. 'unix:///var/run/consul-http.sock'.
|
|
|
|
|
//
|
|
|
|
|
// If 'addresses.http' was not provided the 'client_addr' addresses are
|
|
|
|
|
// used.
|
|
|
|
|
//
|
|
|
|
|
// hcl: client_addr = string addresses { http = string } ports { http = int }
|
|
|
|
|
HTTPAddrs []net.Addr
|
|
|
|
|
|
|
|
|
|
// HTTPPort is the port the HTTP server listens on. The default is 8500.
|
|
|
|
@ -691,6 +743,19 @@ type RuntimeConfig struct {
|
|
|
|
|
// flags: -http-port int
|
|
|
|
|
HTTPPort int
|
|
|
|
|
|
|
|
|
|
// HTTPSAddrs contains the list of TCP addresses and UNIX sockets the HTTPS
|
|
|
|
|
// server will bind to. If the HTTPS endpoint is disabled (ports.https <=
|
|
|
|
|
// 0) the list is empty.
|
|
|
|
|
//
|
|
|
|
|
// The addresses are taken from 'addresses.https' which should contain a
|
|
|
|
|
// space separated list of ip addresses, UNIX socket paths and/or
|
|
|
|
|
// go-sockaddr templates. UNIX socket paths must be written as
|
|
|
|
|
// 'unix://<full path>', e.g. 'unix:///var/run/consul-https.sock'.
|
|
|
|
|
//
|
|
|
|
|
// If 'addresses.https' was not provided the 'client_addr' addresses are
|
|
|
|
|
// used.
|
|
|
|
|
//
|
|
|
|
|
// hcl: client_addr = string addresses { https = string } ports { https = int }
|
|
|
|
|
HTTPSAddrs []net.Addr
|
|
|
|
|
|
|
|
|
|
// HTTPSPort is the port the HTTP server listens on. The default is -1.
|
|
|
|
@ -705,9 +770,10 @@ type RuntimeConfig struct {
|
|
|
|
|
// hcl: key_file = string
|
|
|
|
|
KeyFile string
|
|
|
|
|
|
|
|
|
|
// ???
|
|
|
|
|
// LeaveDrainTime is used to wait after a server has left the LAN Serf
|
|
|
|
|
// pool for RPCs to drain and new requests to be sent to other servers.
|
|
|
|
|
//
|
|
|
|
|
// hcl: leave_drain_time = "duration"
|
|
|
|
|
// hcl: performance { leave_drain_time = "duration" }
|
|
|
|
|
LeaveDrainTime time.Duration
|
|
|
|
|
|
|
|
|
|
// LeaveOnTerm controls if Serf does a graceful leave when receiving
|
|
|
|
@ -751,12 +817,26 @@ type RuntimeConfig struct {
|
|
|
|
|
// hcl: pid_file = string
|
|
|
|
|
PidFile string
|
|
|
|
|
|
|
|
|
|
// RPCAdvertiseAddr is the TCP address Consul advertises for its RPC endpoint.
|
|
|
|
|
// By default this is the bind address on the default RPC Server port. If the
|
|
|
|
|
// advertise address is specified then it is used.
|
|
|
|
|
//
|
|
|
|
|
// hcl: bind_addr = string advertise_addr = string ports { server = int }
|
|
|
|
|
RPCAdvertiseAddr *net.TCPAddr
|
|
|
|
|
RPCBindAddr *net.TCPAddr
|
|
|
|
|
|
|
|
|
|
// ???
|
|
|
|
|
// RPCBindAddr is the TCP address Consul will bind to for its RPC endpoint.
|
|
|
|
|
// By default this is the bind address on the default RPC Server port.
|
|
|
|
|
//
|
|
|
|
|
// hcl: rpc_hold_timeout = "duration"
|
|
|
|
|
// hcl: bind_addr = string ports { server = int }
|
|
|
|
|
RPCBindAddr *net.TCPAddr
|
|
|
|
|
|
|
|
|
|
// RPCHoldTimeout is how long an RPC can be "held" before it is errored.
|
|
|
|
|
// This is used to paper over a loss of leadership by instead holding RPCs,
|
|
|
|
|
// so that the caller experiences a slow response rather than an error.
|
|
|
|
|
// This period is meant to be long enough for a leader election to take
|
|
|
|
|
// place, and a small jitter is applied to avoid a thundering herd.
|
|
|
|
|
//
|
|
|
|
|
// hcl: performance { rpc_hold_timeout = "duration" }
|
|
|
|
|
RPCHoldTimeout time.Duration
|
|
|
|
|
|
|
|
|
|
// RPCRateLimit and RPCMaxBurst control how frequently RPC calls are allowed
|
|
|
|
@ -886,12 +966,51 @@ type RuntimeConfig struct {
|
|
|
|
|
// ]
|
|
|
|
|
Segments []structs.NetworkSegment
|
|
|
|
|
|
|
|
|
|
// SerfAdvertiseAddrLAN is the TCP address which is used for advertising
|
|
|
|
|
// the LAN Gossip pool for both client and server. The address is the
|
|
|
|
|
// combination of AdvertiseAddrLAN and the SerfPortLAN. If the advertise
|
|
|
|
|
// address is not given the bind address is used.
|
|
|
|
|
//
|
|
|
|
|
// hcl: bind_addr = string advertise_addr = string ports { serf_lan = int }
|
|
|
|
|
SerfAdvertiseAddrLAN *net.TCPAddr
|
|
|
|
|
|
|
|
|
|
// SerfAdvertiseAddrWAN is the TCP address which is used for advertising
|
|
|
|
|
// the WAN Gossip pool on the server only. The address is the combination
|
|
|
|
|
// of AdvertiseAddrWAN and the SerfPortWAN. If the advertise address is not
|
|
|
|
|
// given the bind address is used.
|
|
|
|
|
//
|
|
|
|
|
// hcl: bind_addr = string advertise_addr_wan = string ports { serf_wan = int }
|
|
|
|
|
SerfAdvertiseAddrWAN *net.TCPAddr
|
|
|
|
|
SerfBindAddrLAN *net.TCPAddr
|
|
|
|
|
SerfBindAddrWAN *net.TCPAddr
|
|
|
|
|
SerfPortLAN int
|
|
|
|
|
SerfPortWAN int
|
|
|
|
|
|
|
|
|
|
// SerfBindAddrLAN is the address to bind the Serf LAN TCP and UDP
|
|
|
|
|
// listeners to. The ip address is either the default bind address or the
|
|
|
|
|
// 'serf_lan' address which can be either an ip address or a go-sockaddr
|
|
|
|
|
// template which resolves to a single ip address.
|
|
|
|
|
//
|
|
|
|
|
// hcl: bind_addr = string serf_lan = string ports { serf_lan = int }
|
|
|
|
|
// flag: -serf-lan string
|
|
|
|
|
SerfBindAddrLAN *net.TCPAddr
|
|
|
|
|
|
|
|
|
|
// SerfBindAddrWAN is the address to bind the Serf WAN TCP and UDP
|
|
|
|
|
// listeners to. The ip address is either the default bind address or the
|
|
|
|
|
// 'serf_wan' address which can be either an ip address or a go-sockaddr
|
|
|
|
|
// template which resolves to a single ip address.
|
|
|
|
|
//
|
|
|
|
|
// hcl: bind_addr = string serf_wan = string ports { serf_wan = int }
|
|
|
|
|
// flag: -serf-wan string
|
|
|
|
|
SerfBindAddrWAN *net.TCPAddr
|
|
|
|
|
|
|
|
|
|
// SerfPortLAN is the port used for the LAN Gossip pool for both client and server.
|
|
|
|
|
// The default is 8301.
|
|
|
|
|
//
|
|
|
|
|
// hcl: ports { serf_lan = int }
|
|
|
|
|
SerfPortLAN int
|
|
|
|
|
|
|
|
|
|
// SerfPortWAN is the port used for the WAN Gossip pool for the server only.
|
|
|
|
|
// The default is 8302.
|
|
|
|
|
//
|
|
|
|
|
// hcl: ports { serf_wan = int }
|
|
|
|
|
SerfPortWAN int
|
|
|
|
|
|
|
|
|
|
// ServerMode controls if this agent acts like a Consul server,
|
|
|
|
|
// or merely as a client. Servers have more state, take part
|
|
|
|
@ -907,8 +1026,28 @@ type RuntimeConfig struct {
|
|
|
|
|
// hcl: server_name = string
|
|
|
|
|
ServerName string
|
|
|
|
|
|
|
|
|
|
// ServerPort is the port the RPC server will bind to.
|
|
|
|
|
// The default is 8300.
|
|
|
|
|
//
|
|
|
|
|
// hcl: ports { server = int }
|
|
|
|
|
ServerPort int
|
|
|
|
|
Services []*structs.ServiceDefinition
|
|
|
|
|
|
|
|
|
|
// Services contains the provided service definitions:
|
|
|
|
|
//
|
|
|
|
|
// hcl: services = [
|
|
|
|
|
// {
|
|
|
|
|
// id = string
|
|
|
|
|
// name = string
|
|
|
|
|
// tags = []string
|
|
|
|
|
// address = string
|
|
|
|
|
// check = { check definiton }
|
|
|
|
|
// checks = [ { check definition}, ... ]
|
|
|
|
|
// token = string
|
|
|
|
|
// enable_tag_override = (true|false)
|
|
|
|
|
// },
|
|
|
|
|
// ...
|
|
|
|
|
// ]
|
|
|
|
|
Services []*structs.ServiceDefinition
|
|
|
|
|
|
|
|
|
|
// Minimum Session TTL.
|
|
|
|
|
//
|
|
|
|
@ -1070,6 +1209,18 @@ type RuntimeConfig struct {
|
|
|
|
|
// hcl: verify_server_hostname = (true|false)
|
|
|
|
|
VerifyServerHostname bool
|
|
|
|
|
|
|
|
|
|
// Watches are used to monitor various endpoints and to invoke a
|
|
|
|
|
// handler to act appropriately. These are managed entirely in the
|
|
|
|
|
// agent layer using the standard APIs.
|
|
|
|
|
//
|
|
|
|
|
// See https://www.consul.io/docs/agent/watches.html for details.
|
|
|
|
|
//
|
|
|
|
|
// hcl: watches = [
|
|
|
|
|
// { type=string ... },
|
|
|
|
|
// { type=string ... },
|
|
|
|
|
// ...
|
|
|
|
|
// ]
|
|
|
|
|
//
|
|
|
|
|
Watches []map[string]interface{}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|