mirror of https://github.com/k3s-io/k3s
allow proxy to accept a listen address. fixes #1220
parent
41754f5bd4
commit
34922226fd
|
@ -33,6 +33,7 @@ var (
|
|||
configFile = flag.String("configfile", "/tmp/proxy_config", "Configuration file for the proxy")
|
||||
master = flag.String("master", "", "The address of the Kubernetes API server (optional)")
|
||||
etcdServerList util.StringList
|
||||
address = flag.String("address", "0.0.0.0", "The address for the proxy server to serve on (set to 0.0.0.0 or \"\" for all interfaces)")
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -84,7 +85,7 @@ func main() {
|
|||
glog.Infof("Using configuration file %s", *configFile)
|
||||
|
||||
loadBalancer := proxy.NewLoadBalancerRR()
|
||||
proxier := proxy.NewProxier(loadBalancer)
|
||||
proxier := proxy.NewProxier(loadBalancer, *address)
|
||||
// Wire proxier to handle changes to services
|
||||
serviceConfig.RegisterHandler(proxier)
|
||||
// And wire loadBalancer to handle changes to endpoints to services
|
||||
|
|
|
@ -43,13 +43,16 @@ type Proxier struct {
|
|||
loadBalancer LoadBalancer
|
||||
mu sync.Mutex // protects serviceMap
|
||||
serviceMap map[string]*serviceInfo
|
||||
address string
|
||||
}
|
||||
|
||||
// NewProxier returns a new Proxier given a LoadBalancer.
|
||||
func NewProxier(loadBalancer LoadBalancer) *Proxier {
|
||||
// NewProxier returns a new Proxier given a LoadBalancer and an
|
||||
// address on which to listen
|
||||
func NewProxier(loadBalancer LoadBalancer, address string) *Proxier {
|
||||
return &Proxier{
|
||||
loadBalancer: loadBalancer,
|
||||
serviceMap: make(map[string]*serviceInfo),
|
||||
address: address,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -152,7 +155,7 @@ var unusedPortLock sync.Mutex
|
|||
func (proxier *Proxier) addServiceOnUnusedPort(service string) (string, error) {
|
||||
unusedPortLock.Lock()
|
||||
defer unusedPortLock.Unlock()
|
||||
l, err := net.Listen("tcp", ":0")
|
||||
l, err := net.Listen("tcp", fmt.Sprintf("%s:0", proxier.address))
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
@ -194,7 +197,7 @@ func (proxier *Proxier) OnUpdate(services []api.Service) {
|
|||
proxier.StopProxy(service.ID)
|
||||
}
|
||||
glog.Infof("Adding a new service %s on port %d", service.ID, service.Port)
|
||||
listener, err := net.Listen("tcp", fmt.Sprintf(":%d", service.Port))
|
||||
listener, err := net.Listen("tcp", fmt.Sprintf("%s:%d", proxier.address, service.Port))
|
||||
if err != nil {
|
||||
glog.Infof("Failed to start listening for %s on %d", service.ID, service.Port)
|
||||
continue
|
||||
|
|
|
@ -79,7 +79,7 @@ func TestProxy(t *testing.T) {
|
|||
lb.OnUpdate([]api.Endpoints{
|
||||
{JSONBase: api.JSONBase{ID: "echo"}, Endpoints: []string{net.JoinHostPort("127.0.0.1", port)}}})
|
||||
|
||||
p := NewProxier(lb)
|
||||
p := NewProxier(lb, "127.0.0.1")
|
||||
|
||||
proxyPort, err := p.addServiceOnUnusedPort("echo")
|
||||
if err != nil {
|
||||
|
@ -92,7 +92,7 @@ func TestProxyStop(t *testing.T) {
|
|||
lb := NewLoadBalancerRR()
|
||||
lb.OnUpdate([]api.Endpoints{{JSONBase: api.JSONBase{ID: "echo"}, Endpoints: []string{net.JoinHostPort("127.0.0.1", port)}}})
|
||||
|
||||
p := NewProxier(lb)
|
||||
p := NewProxier(lb, "127.0.0.1")
|
||||
|
||||
proxyPort, err := p.addServiceOnUnusedPort("echo")
|
||||
if err != nil {
|
||||
|
@ -115,7 +115,7 @@ func TestProxyUpdateDelete(t *testing.T) {
|
|||
lb := NewLoadBalancerRR()
|
||||
lb.OnUpdate([]api.Endpoints{{JSONBase: api.JSONBase{ID: "echo"}, Endpoints: []string{net.JoinHostPort("127.0.0.1", port)}}})
|
||||
|
||||
p := NewProxier(lb)
|
||||
p := NewProxier(lb, "127.0.0.1")
|
||||
|
||||
proxyPort, err := p.addServiceOnUnusedPort("echo")
|
||||
if err != nil {
|
||||
|
@ -137,7 +137,7 @@ func TestProxyUpdateDeleteUpdate(t *testing.T) {
|
|||
lb := NewLoadBalancerRR()
|
||||
lb.OnUpdate([]api.Endpoints{{JSONBase: api.JSONBase{ID: "echo"}, Endpoints: []string{net.JoinHostPort("127.0.0.1", port)}}})
|
||||
|
||||
p := NewProxier(lb)
|
||||
p := NewProxier(lb, "127.0.0.1")
|
||||
|
||||
proxyPort, err := p.addServiceOnUnusedPort("echo")
|
||||
if err != nil {
|
||||
|
@ -164,7 +164,7 @@ func TestProxyUpdatePort(t *testing.T) {
|
|||
lb := NewLoadBalancerRR()
|
||||
lb.OnUpdate([]api.Endpoints{{JSONBase: api.JSONBase{ID: "echo"}, Endpoints: []string{net.JoinHostPort("127.0.0.1", port)}}})
|
||||
|
||||
p := NewProxier(lb)
|
||||
p := NewProxier(lb, "127.0.0.1")
|
||||
|
||||
proxyPort, err := p.addServiceOnUnusedPort("echo")
|
||||
if err != nil {
|
||||
|
@ -197,7 +197,7 @@ func TestProxyUpdatePortLetsGoOfOldPort(t *testing.T) {
|
|||
lb := NewLoadBalancerRR()
|
||||
lb.OnUpdate([]api.Endpoints{{JSONBase: api.JSONBase{ID: "echo"}, Endpoints: []string{net.JoinHostPort("127.0.0.1", port)}}})
|
||||
|
||||
p := NewProxier(lb)
|
||||
p := NewProxier(lb, "127.0.0.1")
|
||||
|
||||
proxyPort, err := p.addServiceOnUnusedPort("echo")
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue