diff --git a/pkg/controlplane/controller/systemnamespaces/system_namespaces_controller.go b/pkg/controlplane/controller/systemnamespaces/system_namespaces_controller.go index 50bf90cb29e..a0bf0737156 100644 --- a/pkg/controlplane/controller/systemnamespaces/system_namespaces_controller.go +++ b/pkg/controlplane/controller/systemnamespaces/system_namespaces_controller.go @@ -47,7 +47,7 @@ type Controller struct { // NewController creates a new Controller to ensure system namespaces exist. func NewController(clientset kubernetes.Interface, namespaceInformer coreinformers.NamespaceInformer) *Controller { - systemNamespaces := []string{metav1.NamespaceSystem, metav1.NamespacePublic, v1.NamespaceNodeLease} + systemNamespaces := []string{metav1.NamespaceSystem, metav1.NamespacePublic, v1.NamespaceNodeLease, metav1.NamespaceDefault} interval := 1 * time.Minute return &Controller{ diff --git a/pkg/controlplane/controller/systemnamespaces/system_namespaces_controller_test.go b/pkg/controlplane/controller/systemnamespaces/system_namespaces_controller_test.go index 7368ed590f6..8120930a81e 100644 --- a/pkg/controlplane/controller/systemnamespaces/system_namespaces_controller_test.go +++ b/pkg/controlplane/controller/systemnamespaces/system_namespaces_controller_test.go @@ -44,6 +44,7 @@ func Test_Controller(t *testing.T) { {"create", "namespaces"}, {"create", "namespaces"}, {"create", "namespaces"}, + {"create", "namespaces"}, }, }, { @@ -53,6 +54,7 @@ func Test_Controller(t *testing.T) { {"create", "namespaces"}, {"create", "namespaces"}, {"create", "namespaces"}, + {"create", "namespaces"}, }, }, { @@ -61,19 +63,28 @@ func Test_Controller(t *testing.T) { actions: [][]string{ {"create", "namespaces"}, {"create", "namespaces"}, + {"create", "namespaces"}, }, }, { name: "two system namespaces", namespaces: []string{metav1.NamespaceSystem, metav1.NamespacePublic}, + actions: [][]string{ + {"create", "namespaces"}, + {"create", "namespaces"}, + }, + }, + { + name: "three namespaces", + namespaces: []string{metav1.NamespaceSystem, metav1.NamespacePublic, v1.NamespaceNodeLease}, actions: [][]string{ {"create", "namespaces"}, }, }, { - name: "the three namespaces", - namespaces: []string{metav1.NamespaceSystem, metav1.NamespacePublic, v1.NamespaceNodeLease}, + name: "the four namespaces", + namespaces: []string{metav1.NamespaceSystem, metav1.NamespacePublic, v1.NamespaceNodeLease, v1.NamespaceDefault}, }, } diff --git a/pkg/controlplane/instance.go b/pkg/controlplane/instance.go index 23549af2623..a209bf74ea4 100644 --- a/pkg/controlplane/instance.go +++ b/pkg/controlplane/instance.go @@ -602,7 +602,7 @@ func (m *Instance) InstallLegacyAPI(c *completedConfig, restOptionsGetter generi controllerName := "bootstrap-controller" client := kubernetes.NewForConfigOrDie(c.GenericConfig.LoopbackClientConfig) // Kubernetes clusters contains the following system namespaces: - // kube-system, kube-node-lease, kube-public + // kube-system, kube-node-lease, kube-public, default m.GenericAPIServer.AddPostStartHookOrDie("start-system-namespaces-controller", func(hookContext genericapiserver.PostStartHookContext) error { go systemnamespaces.NewController(client, c.ExtraConfig.VersionedInformers.Core().V1().Namespaces()).Run(hookContext.StopCh) return nil