Skip to content

Commit

Permalink
envtest: export DefaultKubeAPIServerFlags & make it configurable
Browse files Browse the repository at this point in the history
This change exports DefaultKubeAPIServerFlags, allowing a user to
append the default flags with other custom flags and set it to
Environment.KubeAPIServerFlags.
If KubeAPIServerFlags is not set, DefaultKubeAPIServerFlags is used when
the API server starts.
  • Loading branch information
darkowlzz committed Oct 14, 2018
1 parent ddf0390 commit d281307
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions pkg/envtest/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,7 @@ func defaultAssetPath(binary string) string {
}

// APIServerDefaultArgs are flags necessary to bring up apiserver.
// TODO: create test framework interface to append flag to default flags.
var defaultKubeAPIServerFlags = []string{
var DefaultKubeAPIServerFlags = []string{
"--etcd-servers={{ if .EtcdURL }}{{ .EtcdURL.String }}{{ end }}",
"--cert-dir={{ .CertDir }}",
"--insecure-port={{ if .URL }}{{ .URL.Port }}{{ end }}",
Expand Down Expand Up @@ -76,6 +75,9 @@ type Environment struct {
// existing kubeconfig, instead of trying to stand up a new control plane.
// This is useful in cases that need aggregated API servers and the like.
UseExistingCluster bool

// KubeAPIServerFlags is the set of flags passed while starting the api server.
KubeAPIServerFlags []string
}

// Stop stops a running server
Expand All @@ -88,6 +90,11 @@ func (te *Environment) Stop() error {

// Start starts a local Kubernetes server and updates te.ApiserverPort with the port it is listening on
func (te *Environment) Start() (*rest.Config, error) {
// Set default API server flags if not set.
if len(te.KubeAPIServerFlags) == 0 {
te.KubeAPIServerFlags = DefaultKubeAPIServerFlags
}

if te.UseExistingCluster {
if te.Config == nil {
// we want to allow people to pass in their own config, so
Expand All @@ -101,7 +108,7 @@ func (te *Environment) Start() (*rest.Config, error) {
}
} else {
te.ControlPlane = integration.ControlPlane{}
te.ControlPlane.APIServer = &integration.APIServer{Args: defaultKubeAPIServerFlags}
te.ControlPlane.APIServer = &integration.APIServer{Args: te.KubeAPIServerFlags}
if os.Getenv(envKubeAPIServerBin) == "" {
te.ControlPlane.APIServer.Path = defaultAssetPath("kube-apiserver")
}
Expand Down

0 comments on commit d281307

Please sign in to comment.