diff --git a/cmd/controller/main.go b/cmd/controller/main.go index 09a20e83..ca31d002 100644 --- a/cmd/controller/main.go +++ b/cmd/controller/main.go @@ -135,7 +135,7 @@ func main() { if IsLocalDataServerEnabled() { // Create the DS connection manager and register it with controller-runtime. dsCfg := &dsclient.Config{ - Address: dsclient.GetDataServerAddress(), + Address: dsclient.GetLocalDataServerAddress(), // Insecure/TLS settings etc if needed } dsConnMgr := dsmanager.New(ctx, dsCfg) diff --git a/pkg/sdc/dataserver/client/client.go b/pkg/sdc/dataserver/client/client.go index 4810d7f5..28cf4643 100644 --- a/pkg/sdc/dataserver/client/client.go +++ b/pkg/sdc/dataserver/client/client.go @@ -31,21 +31,37 @@ import ( //"google.golang.org/grpc/keepalive" ) -const dataServerAddress = "data-server.sdc-system.svc.cluster.local:56000" -const localDataServerAddress = "localhost:56000" +const ( + defaultDataServerService = "data-server" + defaultDataServerPort = "56000" + defaultNamespace = "sdc-system" +) func GetDataServerAddress() string { - if address, found := os.LookupEnv("SDC_DATA_SERVER"); found { - return address - } - return dataServerAddress + if address, found := os.LookupEnv("SDC_DATA_SERVER"); found { + return address + } + + ns := envOrDefault("POD_NAMESPACE", defaultNamespace) + svc := envOrDefault("SDC_DATA_SERVER_SERVICE", defaultDataServerService) + port := envOrDefault("SDC_DATA_SERVER_PORT", defaultDataServerPort) + + return fmt.Sprintf("%s.%s.svc.cluster.local:%s", svc, ns, port) } func GetLocalDataServerAddress() string { - if address, found := os.LookupEnv("SDC_DATA_SERVER"); found { - return address - } - return localDataServerAddress + if address, found := os.LookupEnv("SDC_DATA_SERVER"); found { + return address + } + port := envOrDefault("SDC_DATA_SERVER_PORT", defaultDataServerPort) + return fmt.Sprintf("localhost:%s", port) +} + +func envOrDefault(key, fallback string) string { + if v, ok := os.LookupEnv(key); ok && v != "" { + return v + } + return fallback } type Config struct { @@ -62,7 +78,7 @@ type Config struct { MaxMsgSize int } -func defaukltConfig(cfg *Config) { +func defaultConfig(cfg *Config) { if cfg == nil { cfg = &Config{Address: GetDataServerAddress()} } @@ -99,7 +115,7 @@ func OneShot( cfg *Config, fn func(ctx context.Context, c sdcpb.DataServerClient) error, ) error { - defaukltConfig(cfg) + defaultConfig(cfg) conn, err := dial(ctx, cfg) if err != nil { return err @@ -144,7 +160,7 @@ func NewEphemeral( ctx context.Context, cfg *Config, ) (sdcpb.DataServerClient, func() error, error) { - defaukltConfig(cfg) + defaultConfig(cfg) conn, err := dial(ctx, cfg) if err != nil { return nil, nil, err @@ -171,7 +187,7 @@ type Client interface { } func New(cfg *Config) (Client, error) { - defaukltConfig(cfg) + defaultConfig(cfg) // default cancel is a no-op so Stop() is always safe return &client{cfg: cfg, cancel: func() {}}, nil } @@ -188,7 +204,7 @@ const DSConnectionStatusNotConnected = "DATASERVER_NOT_CONNECTED" // dial creates a gRPC connection with a timeout and proper options, // using the modern grpc.NewClient API. func dial(ctx context.Context, cfg *Config) (*grpc.ClientConn, error) { - defaukltConfig(cfg) + defaultConfig(cfg) dialCtx, cancel := context.WithTimeout(ctx, 10*time.Second) defer cancel() diff --git a/pkg/sdc/schemaserver/client/client.go b/pkg/sdc/schemaserver/client/client.go index c1402a94..acfd40cb 100644 --- a/pkg/sdc/schemaserver/client/client.go +++ b/pkg/sdc/schemaserver/client/client.go @@ -29,7 +29,11 @@ import ( "google.golang.org/grpc/credentials/insecure" ) -const schemServerAddress = "schema-server.sdc-system.svc.cluster.local:56000" +const ( + defaultSchemaServerService = "schema-server" + defaultSchemaServerPort = "56000" + defaultNamespace = "sdc-system" +) func GetSchemaServerAddress() string { if address, found := os.LookupEnv("SDC_SCHEMA_SERVER"); found { @@ -38,7 +42,19 @@ func GetSchemaServerAddress() string { if address, found := os.LookupEnv("SDC_DATA_SERVER"); found { return address } - return schemServerAddress + // Build from components + ns := envOrDefault("POD_NAMESPACE", defaultNamespace) + svc := envOrDefault("SDC_SCHEMA_SERVER_SERVICE", defaultSchemaServerService) + port := envOrDefault("SDC_SCHEMA_SERVER_PORT", defaultSchemaServerPort) + + return fmt.Sprintf("%s.%s.svc.cluster.local:%s", svc, ns, port) +} + +func envOrDefault(key, fallback string) string { + if v, ok := os.LookupEnv(key); ok && v != "" { + return v + } + return fallback } type Config struct {