Skip to content

Commit 6df67bb

Browse files
committed
feat: initial draft for multi namespaces
1 parent 91feb1f commit 6df67bb

File tree

9 files changed

+47
-26
lines changed

9 files changed

+47
-26
lines changed

controllers/deployment/controller.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func SetupWithManager(log logr.Logger, recorder record.EventRecorder, mgr ctrl.M
3131
lastSetCreation: map[string]time.Time{},
3232
})
3333

34-
return ctrl.NewControllerManagedBy(mgr).
34+
controller := ctrl.NewControllerManagedBy(mgr).
3535
For(
3636
&v2.FirewallDeployment{},
3737
builder.WithPredicates(
@@ -57,9 +57,13 @@ func SetupWithManager(log logr.Logger, recorder record.EventRecorder, mgr ctrl.M
5757
),
5858
),
5959
),
60-
).
61-
WithEventFilter(predicate.NewPredicateFuncs(controllers.SkipOtherNamespace(c.GetSeedNamespace()))).
62-
Complete(g)
60+
)
61+
62+
if c.GetSeedNamespace() != "" {
63+
controller = controller.WithEventFilter(predicate.NewPredicateFuncs(controllers.SkipOtherNamespace(c.GetSeedNamespace())))
64+
}
65+
66+
return controller.Complete(g)
6367
}
6468

6569
func SetupWebhookWithManager(log logr.Logger, mgr ctrl.Manager, c *config.ControllerConfig) error {

controllers/deployment/infrastructure_status.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func (c *controller) updateInfrastructureStatus(r *controllers.Ctx[*v2.FirewallD
2727
})
2828

2929
err := c.c.GetSeedClient().Get(r.Ctx, client.ObjectKey{
30-
Namespace: c.c.GetSeedNamespace(),
30+
Namespace: r.Target.Namespace,
3131
Name: infrastructureName,
3232
}, infraObj)
3333
if err != nil {
@@ -129,7 +129,7 @@ func (c *controller) updateInfrastructureStatus(r *controllers.Ctx[*v2.FirewallD
129129
})
130130

131131
err = c.c.GetSeedClient().Get(r.Ctx, client.ObjectKey{
132-
Namespace: c.c.GetSeedNamespace(),
132+
Namespace: r.Target.Namespace,
133133
Name: "acl",
134134
}, aclObj)
135135
if err != nil {
@@ -150,6 +150,7 @@ func (c *controller) updateInfrastructureStatus(r *controllers.Ctx[*v2.FirewallD
150150
}
151151

152152
func extractInfrastructureNameFromSeedNamespace(namespace string) (string, bool) {
153+
// TODO: is this safe to not skip in the future?
153154
if !strings.HasPrefix(namespace, "shoot--") {
154155
return "", false
155156
}

controllers/deployment/reconcile.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func (c *controller) Reconcile(r *controllers.Ctx[*v2.FirewallDeployment]) error
8383
r.Log.Info("swapped latest set to shortest distance", "distance", v2.FirewallShortestDistance)
8484
}
8585

86-
infrastructureName, ok := extractInfrastructureNameFromSeedNamespace(c.c.GetSeedNamespace())
86+
infrastructureName, ok := extractInfrastructureNameFromSeedNamespace(r.Target.Namespace)
8787
if ok {
8888
var ownedFirewalls []*v2.Firewall
8989
for _, set := range ownedSets {

controllers/firewall/controller.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func SetupWithManager(log logr.Logger, recorder record.EventRecorder, mgr ctrl.M
8888
}),
8989
})
9090

91-
return ctrl.NewControllerManagedBy(mgr).
91+
controller := ctrl.NewControllerManagedBy(mgr).
9292
For(
9393
&v2.Firewall{},
9494
builder.WithPredicates(
@@ -99,9 +99,13 @@ func SetupWithManager(log logr.Logger, recorder record.EventRecorder, mgr ctrl.M
9999
),
100100
).
101101
// don't think about owning the firewall monitor here, it's in the shoot cluster, we cannot watch two clusters with controller-runtime
102-
Named("Firewall").
103-
WithEventFilter(predicate.NewPredicateFuncs(controllers.SkipOtherNamespace(c.GetSeedNamespace()))).
104-
Complete(g)
102+
Named("Firewall")
103+
104+
if c.GetSeedNamespace() != "" {
105+
controller = controller.WithEventFilter(predicate.NewPredicateFuncs(controllers.SkipOtherNamespace(c.GetSeedNamespace())))
106+
}
107+
108+
return controller.Complete(g)
105109
}
106110

107111
func SetupWebhookWithManager(log logr.Logger, mgr ctrl.Manager, c *config.ControllerConfig) error {

controllers/generic_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func (g *GenericController[O]) logger(req ctrl.Request) logr.Logger {
7474
}
7575

7676
func (g GenericController[O]) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
77-
if req.Namespace != g.namespace { // should already be filtered out through predicate, but we will check anyway
77+
if g.namespace != "" && req.Namespace != g.namespace { // should already be filtered out through predicate, but we will check anyway
7878
return ctrl.Result{}, nil
7979
}
8080

controllers/monitor/controller.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,21 @@ func SetupWithManager(log logr.Logger, mgr ctrl.Manager, c *config.ControllerCon
2222
c: c,
2323
}).WithoutStatus()
2424

25-
return ctrl.NewControllerManagedBy(mgr).
25+
controller := ctrl.NewControllerManagedBy(mgr).
2626
For(&v2.FirewallMonitor{},
2727
builder.WithPredicates(
2828
predicate.Not(
2929
v2.AnnotationRemovedPredicate(v2.RollSetAnnotation),
3030
),
3131
),
3232
).
33-
Named("FirewallMonitor").
34-
WithEventFilter(predicate.NewPredicateFuncs(controllers.SkipOtherNamespace(c.GetShootNamespace()))).
35-
Complete(g)
33+
Named("FirewallMonitor")
34+
35+
if c.GetSeedNamespace() != "" {
36+
controller = controller.WithEventFilter(predicate.NewPredicateFuncs(controllers.SkipOtherNamespace(c.GetSeedNamespace())))
37+
}
38+
39+
return controller.Complete(g)
3640
}
3741

3842
func (c *controller) New() *v2.FirewallMonitor {

controllers/monitor/reconcile.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func (c *controller) updateFirewallStatus(r *controllers.Ctx[*v2.FirewallMonitor
3737
fw := &v2.Firewall{
3838
ObjectMeta: metav1.ObjectMeta{
3939
Name: r.Target.Name,
40-
Namespace: c.c.GetSeedNamespace(),
40+
Namespace: r.Target.Namespace,
4141
},
4242
}
4343
err := c.c.GetSeedClient().Get(r.Ctx, client.ObjectKeyFromObject(fw), fw)
@@ -72,7 +72,7 @@ func (c *controller) rollSetAnnotation(r *controllers.Ctx[*v2.FirewallMonitor])
7272
fw := &v2.Firewall{
7373
ObjectMeta: metav1.ObjectMeta{
7474
Name: r.Target.Name,
75-
Namespace: c.c.GetSeedNamespace(),
75+
Namespace: r.Target.Namespace,
7676
},
7777
}
7878

controllers/set/controller.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func SetupWithManager(log logr.Logger, recorder record.EventRecorder, mgr ctrl.M
2626
c: c,
2727
})
2828

29-
return ctrl.NewControllerManagedBy(mgr).
29+
controller := ctrl.NewControllerManagedBy(mgr).
3030
For(
3131
&v2.FirewallSet{},
3232
builder.WithPredicates(
@@ -47,9 +47,13 @@ func SetupWithManager(log logr.Logger, recorder record.EventRecorder, mgr ctrl.M
4747
),
4848
),
4949
),
50-
).
51-
WithEventFilter(predicate.NewPredicateFuncs(controllers.SkipOtherNamespace(c.GetSeedNamespace()))).
52-
Complete(g)
50+
)
51+
52+
if c.GetSeedNamespace() != "" {
53+
controller = controller.WithEventFilter(predicate.NewPredicateFuncs(controllers.SkipOtherNamespace(c.GetSeedNamespace())))
54+
}
55+
56+
return controller.Complete(g)
5357
}
5458

5559
func SetupWebhookWithManager(log logr.Logger, mgr ctrl.Manager, c *config.ControllerConfig) error {

controllers/update/controller.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,20 @@ func SetupWithManager(log logr.Logger, recorder record.EventRecorder, mgr ctrl.M
3434
imageCache: newImageCache(c.GetMetal()),
3535
}).WithoutStatus()
3636

37-
return ctrl.NewControllerManagedBy(mgr).
37+
controller := ctrl.NewControllerManagedBy(mgr).
3838
For(
3939
&v2.FirewallDeployment{},
4040
builder.WithPredicates(
4141
v2.AnnotationAddedPredicate(v2.MaintenanceAnnotation),
4242
),
4343
).
44-
Named("FirewallDeployment").
45-
WithEventFilter(predicate.NewPredicateFuncs(controllers.SkipOtherNamespace(c.GetSeedNamespace()))).
46-
Complete(g)
44+
Named("FirewallDeployment")
45+
46+
if c.GetSeedNamespace() != "" {
47+
controller = controller.WithEventFilter(predicate.NewPredicateFuncs(controllers.SkipOtherNamespace(c.GetSeedNamespace())))
48+
}
49+
50+
return controller.Complete(g)
4751
}
4852

4953
func (c *controller) New() *v2.FirewallDeployment {

0 commit comments

Comments
 (0)