diff --git a/pkg/cmd/server/config.go b/pkg/cmd/server/config.go index 027cbcca0d07..a83f6d0593fe 100644 --- a/pkg/cmd/server/config.go +++ b/pkg/cmd/server/config.go @@ -43,6 +43,9 @@ type Config struct { // addresses for external clients MasterPublicAddr flagtypes.Addr KubernetesPublicAddr flagtypes.Addr + // addresses for asset server + AssetBindAddr flagtypes.Addr + AssetPublicAddr flagtypes.Addr ImageFormat string LatestReleaseImages bool @@ -90,6 +93,8 @@ func NewDefaultConfig() *Config { PortalNet: flagtypes.DefaultIPNet("172.30.17.0/24"), MasterPublicAddr: flagtypes.Addr{Value: "localhost:8443", DefaultScheme: "https", DefaultPort: 8443, AllowPrefix: true}.Default(), KubernetesPublicAddr: flagtypes.Addr{Value: "localhost:8443", DefaultScheme: "https", DefaultPort: 8443, AllowPrefix: true}.Default(), + AssetPublicAddr: flagtypes.Addr{Value: "localhost:8444", DefaultScheme: "https", DefaultPort: 8444, AllowPrefix: true}.Default(), + AssetBindAddr: flagtypes.Addr{Value: "0.0.0.0:8444", DefaultScheme: "https", DefaultPort: 8444, AllowPrefix: true}.Default(), ImageTemplate: variable.NewDefaultImageTemplate(), @@ -211,7 +216,11 @@ func (cfg Config) GetKubernetesPublicAddress() (*url.URL, error) { } func (cfg Config) GetAssetPublicAddress() (*url.URL, error) { + if cfg.AssetPublicAddr.Provided { + return cfg.AssetPublicAddr.URL, nil + } // Derive the asset public address by incrementing the master public address port by 1 + // TODO: derive the scheme/port from the asset bind scheme/port once that is settable via the command line t, err := cfg.GetMasterPublicAddress() if err != nil { return nil, err @@ -223,6 +232,9 @@ func (cfg Config) GetAssetPublicAddress() (*url.URL, error) { } func (cfg Config) GetAssetBindAddress() string { + if cfg.AssetBindAddr.Provided { + return cfg.AssetBindAddr.URL.Host + } // Derive the asset bind address by incrementing the master bind address port by 1 return net.JoinHostPort(cfg.BindAddr.Host, strconv.Itoa(cfg.BindAddr.Port+1)) } diff --git a/pkg/cmd/server/config_test.go b/pkg/cmd/server/config_test.go index 2328a806c1ab..a175203f9a6b 100644 --- a/pkg/cmd/server/config_test.go +++ b/pkg/cmd/server/config_test.go @@ -39,6 +39,66 @@ func TestMasterPublicAddressExplicit(t *testing.T) { } } +func TestAssetPublicAddressDefaulting(t *testing.T) { + master := "http://example.com:9011" + expected := "http://example.com:9012" + + cfg := NewDefaultConfig() + cfg.MasterAddr.Set(master) + + actual, err := cfg.GetAssetPublicAddress() + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if expected != actual.String() { + t.Errorf("expected %v, got %v", expected, actual) + } +} + +func TestAssetPublicAddressExplicit(t *testing.T) { + master := "http://example.com:9011" + expected := "https://example.com:9014" + + cfg := NewDefaultConfig() + cfg.MasterAddr.Set(master) + cfg.AssetPublicAddr.Set(expected) + + actual, err := cfg.GetAssetPublicAddress() + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if expected != actual.String() { + t.Errorf("expected %v, got %v", expected, actual) + } +} + +func TestAssetBindAddressDefaulting(t *testing.T) { + bind := "1.2.3.4:9011" + expected := "1.2.3.4:9012" + + cfg := NewDefaultConfig() + cfg.BindAddr.Set(bind) + + actual := cfg.GetAssetBindAddress() + if expected != actual { + t.Errorf("expected %v, got %v", expected, actual) + } +} + +func TestAssetBindAddressExplicit(t *testing.T) { + bind := "1.2.3.4:9011" + expected := "2.3.4.5:1234" + + cfg := NewDefaultConfig() + cfg.BindAddr.Set(bind) + cfg.AssetBindAddr.Set(expected) + + actual := cfg.GetAssetBindAddress() + if expected != actual { + t.Errorf("expected %v, got %v", expected, actual) + } +} + func TestKubernetesPublicAddressDefaultToKubernetesAddress(t *testing.T) { expected := "http://example.com:9012" diff --git a/pkg/cmd/server/origin/master.go b/pkg/cmd/server/origin/master.go index b37dc35fd3fd..791d01506420 100644 --- a/pkg/cmd/server/origin/master.go +++ b/pkg/cmd/server/origin/master.go @@ -722,7 +722,7 @@ func namespacingFilter(handler http.Handler, contextMapper kapi.RequestContextMa ctx = kapi.WithNamespace(ctx, namespace) contextMapper.Update(req, ctx) - glog.V(2).Infof("set namespace on context to %v", requestInfo.Namespace) + glog.V(4).Infof("set namespace on context to %v", requestInfo.Namespace) } } diff --git a/pkg/cmd/util/net.go b/pkg/cmd/util/net.go index b3cda06d1532..c907c826f09a 100644 --- a/pkg/cmd/util/net.go +++ b/pkg/cmd/util/net.go @@ -22,7 +22,7 @@ func WaitForSuccessfulDial(https bool, network, address string, timeout, interva conn, err = dialer.Dial(network, address) } if err != nil { - glog.V(4).Infof("Got error %#v, trying again: %#v\n", err, address) + glog.V(5).Infof("Got error %#v, trying again: %#v\n", err, address) time.Sleep(interval) continue } diff --git a/test/integration/test_server.go b/test/integration/test_server.go index 2dfbf44c04ea..de2da7ee1327 100644 --- a/test/integration/test_server.go +++ b/test/integration/test_server.go @@ -37,11 +37,15 @@ func StartTestServer(args ...string) (start.Config, error) { masterAddr := httptest.NewUnstartedServer(nil).Listener.Addr().String() fmt.Printf("masterAddr: %#v\n", masterAddr) - startConfig.MasterAddr.Set(masterAddr) startConfig.BindAddr.Set(masterAddr) startConfig.EtcdAddr.Set(getEtcdURL()) + assetAddr := httptest.NewUnstartedServer(nil).Listener.Addr().String() + fmt.Printf("assetAddr: %#v\n", assetAddr) + startConfig.AssetBindAddr.Set(assetAddr) + startConfig.AssetPublicAddr.Set(assetAddr) + startConfig.Complete(args) var startError error @@ -54,7 +58,7 @@ func StartTestServer(args ...string) (start.Config, error) { }() // wait for the server to come up: 35 seconds - if err := cmdutil.WaitForSuccessfulDial(true, "tcp", masterAddr, 100*time.Millisecond, 100*time.Millisecond, 175); err != nil { + if err := cmdutil.WaitForSuccessfulDial(true, "tcp", masterAddr, 100*time.Millisecond, 1*time.Second, 35); err != nil { return *startConfig, err }