consider default a system namespace to be managed by the namespace controller

Change-Id: I08d68c18234404c1258aa003211d82e2e72dadb1
This commit is contained in:
Antonio Ojea 2023-03-01 10:23:08 +00:00
parent eecfaf658e
commit 6e78e3279a
3 changed files with 15 additions and 4 deletions

View File

@ -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{

View File

@ -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},
},
}

View File

@ -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