Skip to content

Commit

Permalink
Add a flag to sdkserver to avoid a collision on port 8080 (#4010)
Browse files Browse the repository at this point in the history
* add a flag to avoid a collision on port 8080

* update NewSDKServer calls with new signature
  • Loading branch information
KAllan357 authored Oct 4, 2024
1 parent cd3bc13 commit 8369eef
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 9 deletions.
13 changes: 10 additions & 3 deletions cmd/sdk-server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,9 @@ import (
)

const (
defaultGRPCPort = 9357
defaultHTTPPort = 9358
defaultGRPCPort = 9357
defaultHTTPPort = 9358
defaultHealthPort = 8080

// Flags (that can also be env vars)
gameServerNameFlag = "gameserver-name"
Expand All @@ -64,6 +65,7 @@ const (
timeoutFlag = "timeout"
grpcPortFlag = "grpc-port"
httpPortFlag = "http-port"
healthPortFlag = "health-port"
logLevelFlag = "log-level"
)

Expand Down Expand Up @@ -147,7 +149,7 @@ func main() {

var s *sdkserver.SDKServer
s, err = sdkserver.NewSDKServer(ctlConf.GameServerName, ctlConf.PodNamespace,
kubeClient, agonesClient, logLevel)
kubeClient, agonesClient, logLevel, ctlConf.HealthPort)
if err != nil {
logger.WithError(err).Fatalf("Could not start sidecar")
}
Expand Down Expand Up @@ -287,6 +289,7 @@ func parseEnvFlags() config {
viper.SetDefault(gracefulTerminationFlag, true)
viper.SetDefault(grpcPortFlag, defaultGRPCPort)
viper.SetDefault(httpPortFlag, defaultHTTPPort)
viper.SetDefault(healthPortFlag, defaultHealthPort)
viper.SetDefault(logLevelFlag, "Info")
pflag.String(gameServerNameFlag, viper.GetString(gameServerNameFlag),
"Optional flag to set GameServer name. Overrides value given from `GAMESERVER_NAME` environment variable.")
Expand All @@ -298,6 +301,7 @@ func parseEnvFlags() config {
pflag.String(addressFlag, viper.GetString(addressFlag), "The Address to bind the server grpcPort to. Defaults to 'localhost'")
pflag.Int(grpcPortFlag, viper.GetInt(grpcPortFlag), fmt.Sprintf("Port on which to bind the gRPC server. Defaults to %d", defaultGRPCPort))
pflag.Int(httpPortFlag, viper.GetInt(httpPortFlag), fmt.Sprintf("Port on which to bind the HTTP server. Defaults to %d", defaultHTTPPort))
pflag.Int(healthPortFlag, viper.GetInt(healthPortFlag), fmt.Sprintf("Port on which to bind the healthcheck port on the HTTP server. Defaults to %d", defaultHealthPort))
pflag.Int(delayFlag, viper.GetInt(delayFlag), "Time to delay (in seconds) before starting to execute main. Useful for tests")
pflag.Int(timeoutFlag, viper.GetInt(timeoutFlag), "Time of execution (in seconds) before close. Useful for tests")
pflag.String(testFlag, viper.GetString(testFlag), "List functions which should be called during the SDK Conformance test run.")
Expand All @@ -322,6 +326,7 @@ func parseEnvFlags() config {
runtime.Must(viper.BindEnv(timeoutFlag))
runtime.Must(viper.BindEnv(grpcPortFlag))
runtime.Must(viper.BindEnv(httpPortFlag))
runtime.Must(viper.BindEnv(healthPortFlag))
runtime.Must(viper.BindPFlags(pflag.CommandLine))
runtime.Must(viper.BindEnv(logLevelFlag))
runtime.Must(runtime.FeaturesBindEnv())
Expand All @@ -341,6 +346,7 @@ func parseEnvFlags() config {
GracefulTermination: viper.GetBool(gracefulTerminationFlag),
GRPCPort: viper.GetInt(grpcPortFlag),
HTTPPort: viper.GetInt(httpPortFlag),
HealthPort: viper.GetInt(healthPortFlag),
LogLevel: viper.GetString(logLevelFlag),
}
}
Expand All @@ -360,6 +366,7 @@ type config struct {
GracefulTermination bool
GRPCPort int
HTTPPort int
HealthPort int
LogLevel string
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/sdkserver/sdkserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ type SDKServer struct {
// NewSDKServer creates a SDKServer that sets up an
// InClusterConfig for Kubernetes
func NewSDKServer(gameServerName, namespace string, kubeClient kubernetes.Interface,
agonesClient versioned.Interface, logLevel logrus.Level) (*SDKServer, error) {
agonesClient versioned.Interface, logLevel logrus.Level, healthPort int) (*SDKServer, error) {
mux := http.NewServeMux()
resync := 30 * time.Second
if runtime.FeatureEnabled(runtime.FeatureDisableResyncOnSDKServer) {
Expand All @@ -163,7 +163,7 @@ func NewSDKServer(gameServerName, namespace string, kubeClient kubernetes.Interf
gameServerLister: gameServers.Lister(),
gameServerSynced: gameServers.Informer().HasSynced,
server: &http.Server{
Addr: ":8080",
Addr: fmt.Sprintf(":%d", healthPort),
Handler: mux,
},
clock: clock.RealClock{},
Expand Down
8 changes: 4 additions & 4 deletions pkg/sdkserver/sdkserver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ func TestSidecarRun(t *testing.T) {
return true, gsCopy, nil
})

sc, err := NewSDKServer("test", "default", m.KubeClient, m.AgonesClient, logrus.DebugLevel)
sc, err := NewSDKServer("test", "default", m.KubeClient, m.AgonesClient, logrus.DebugLevel, 8080)
stop := make(chan struct{})
defer close(stop)
ctx, cancel := context.WithCancel(context.Background())
Expand Down Expand Up @@ -462,7 +462,7 @@ func TestSidecarUnhealthyMessage(t *testing.T) {
t.Parallel()

m := agtesting.NewMocks()
sc, err := NewSDKServer("test", "default", m.KubeClient, m.AgonesClient, logrus.DebugLevel)
sc, err := NewSDKServer("test", "default", m.KubeClient, m.AgonesClient, logrus.DebugLevel, 8080)
require.NoError(t, err)

gs := agonesv1.GameServer{
Expand Down Expand Up @@ -613,7 +613,7 @@ func TestSidecarHealthy(t *testing.T) {

func TestSidecarHTTPHealthCheck(t *testing.T) {
m := agtesting.NewMocks()
sc, err := NewSDKServer("test", "default", m.KubeClient, m.AgonesClient, logrus.DebugLevel)
sc, err := NewSDKServer("test", "default", m.KubeClient, m.AgonesClient, logrus.DebugLevel, 8080)
require.NoError(t, err)

now := time.Now().Add(time.Hour).UTC()
Expand Down Expand Up @@ -2388,7 +2388,7 @@ func TestSDKServerGracefulTerminationGameServerStateChannel(t *testing.T) {
}

func defaultSidecar(m agtesting.Mocks) (*SDKServer, error) {
server, err := NewSDKServer("test", "default", m.KubeClient, m.AgonesClient, logrus.DebugLevel)
server, err := NewSDKServer("test", "default", m.KubeClient, m.AgonesClient, logrus.DebugLevel, 8080)
if err != nil {
return server, err
}
Expand Down

0 comments on commit 8369eef

Please sign in to comment.