leaderless gossip-based service discovery w/ consul compatibility
5

Configure Feed

Select the types of activity you want to include in your feed.

api -> http

Jes Olson (Feb 20, 2023, 6:00 PM -0800) 2d61578f d5f6f0e1

+15 -13
+2
agent/agent.go
··· 22 22 // compatability 23 23 // - attempt to have a consul-compatible API where it matters? 24 24 // todo 25 + // think about checks 26 + // think about DNS weights 25 27 // dns resolver for services 26 28 // read-write exception for maintenance mode? 27 29 // opentelemetry metrics
+3 -3
agent/config.go
··· 6 6 ) 7 7 8 8 const ( 9 - DefaultAPIPort int = 8500 10 9 DefaultDNSPort int = 8600 10 + DefaultHTTPPort int = 8500 11 11 DefaultSerfPort int = 8301 12 12 ) 13 13 ··· 19 19 20 20 // TODO: figure out how to default the listeners 21 21 cfg := Config{} 22 - cfg.APIBindAddr = &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: DefaultAPIPort} 23 22 cfg.DNSBindAddr = &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: DefaultDNSPort} 23 + cfg.HTTPBindAddr = &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: DefaultHTTPPort} 24 24 cfg.SerfBindAddr = &net.TCPAddr{IP: net.ParseIP("0.0.0.0"), Port: DefaultSerfPort} 25 25 cfg.NodeName = hostname 26 26 ··· 28 28 } 29 29 30 30 type Config struct { 31 - APIBindAddr *net.TCPAddr 32 31 DNSBindAddr *net.TCPAddr 32 + HTTPBindAddr *net.TCPAddr 33 33 SerfBindAddr *net.TCPAddr 34 34 NodeName string 35 35 StartJoin []string
+10 -10
command/agent/agent.go
··· 26 26 health checking, cluster membership, and hosting the API. 27 27 28 28 options: 29 - -bind-api=<addr> 30 - address the http api binds to (default = 127.0.0.1:8500) 31 - 32 29 -bind-dns=<addr> 33 30 address the DNS server binds to (default = 127.0.0.1:8600) 34 31 32 + -bind-http=<addr> 33 + address the http api/interace binds to (default = 127.0.0.1:8500) 34 + 35 35 -bind-serf=<addr> 36 36 address the serf agent binds to (default = 0.0.0.0:8301) 37 37 ··· 43 43 ` 44 44 45 45 type Flags struct { 46 - bindAPI string 47 46 bindDNS string 47 + bindHTTP string 48 48 bindSerf string 49 49 join string 50 50 node string ··· 55 55 func Run(args []string) { 56 56 flags := flag.NewFlagSet("agent", flag.ContinueOnError) 57 57 flags.Usage = func() { fmt.Printf(usage) } 58 - flags.StringVar(&agentFlags.bindAPI, "bind-api", "", "") 59 58 flags.StringVar(&agentFlags.bindDNS, "bind-dns", "", "") 59 + flags.StringVar(&agentFlags.bindHTTP, "bind-http", "", "") 60 60 flags.StringVar(&agentFlags.bindSerf, "bind-serf", "", "") 61 61 flags.StringVar(&agentFlags.join, "join", "", "") 62 62 flags.StringVar(&agentFlags.node, "node", "", "") ··· 156 156 // on user specified flags. It also does some a little input validation. 157 157 func getAgentConfig() (*agent.Config, error) { 158 158 config := agent.DefaultConfig() 159 - if agentFlags.bindAPI != "" { 160 - if err := parseFlagAddress(agentFlags.bindAPI, config.APIBindAddr); err != nil { 159 + 160 + if agentFlags.bindDNS != "" { 161 + if err := parseFlagAddress(agentFlags.bindDNS, config.DNSBindAddr); err != nil { 161 162 return nil, err 162 163 } 163 164 } 164 - if agentFlags.bindDNS != "" { 165 - if err := parseFlagAddress(agentFlags.bindDNS, config.DNSBindAddr); err != nil { 165 + if agentFlags.bindHTTP != "" { 166 + if err := parseFlagAddress(agentFlags.bindHTTP, config.HTTPBindAddr); err != nil { 166 167 return nil, err 167 168 } 168 169 } ··· 171 172 return nil, err 172 173 } 173 174 } 174 - 175 175 if agentFlags.join != "" { 176 176 // TODO: moar validation 177 177 config.StartJoin = strings.Split(agentFlags.join, ",")