Skip to content

Commit 0afa844

Browse files
committed
Make sure that during gcpfirewalls cr creation, sync errors are not returned in Shadow run (when l7LB still reconciles the FWs).
Also fix dryRun flag to properly mean "testing" flow (the logic of the flag usage has not been changed)
1 parent daa7c4f commit 0afa844

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

pkg/firewalls/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func NewFirewallController(
106106
sourceRanges := lbSourceRanges(logger, flags.F.OverrideHealthCheckSourceCIDRs)
107107
logger.Info("Using source ranges", "ranges", sourceRanges)
108108
if enableCR {
109-
firewallCRPool := NewFirewallCRPool(ctx.FirewallClient, ctx.Cloud, ctx.ClusterNamer, sourceRanges, portRanges, disableFWEnforcement, logger)
109+
firewallCRPool := NewFirewallCRPool(ctx.FirewallClient, ctx.Cloud, ctx.ClusterNamer, sourceRanges, portRanges, !disableFWEnforcement, logger)
110110
compositeFirewallPool.pools = append(compositeFirewallPool.pools, firewallCRPool)
111111
}
112112
if !disableFWEnforcement {

pkg/firewalls/firewalls_l7_cr.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ type FirewallCR struct {
4141
// all the port ranges to open with each call to Sync()
4242
nodePortRanges []string
4343
firewallClient firewallclient.Interface
44-
dryRun bool
44+
// If set to true, CRs are marked as "disabled" and errors are not
45+
// propagated. Firewalls should be still created/updated by l7LB, not the
46+
// Platform Firewall
47+
dryRun bool
4548

4649
logger klog.Logger
4750
}
@@ -81,17 +84,17 @@ func (fr *FirewallCR) Sync(nodeNames, additionalPorts, additionalRanges []string
8184
ranges.Insert(additionalRanges...)
8285

8386
fr.logger.V(3).Info("Firewall CR is enabled.")
84-
expectedFirewallCR, err := NewFirewallCR(name, ports.List(), ranges.UnsortedList(), []string{}, fr.dryRun)
87+
expectedFirewallCR, err := NewFirewallCR(name, ports.List(), ranges.UnsortedList(), []string{}, !fr.dryRun)
8588
if err != nil {
8689
return err
8790
}
88-
return ensureFirewallCR(fr.firewallClient, expectedFirewallCR, fr.logger)
91+
return ensureFirewallCR(fr.firewallClient, expectedFirewallCR, fr.logger, fr.dryRun)
8992
}
9093

9194
// ensureFirewallCR creates/updates the firewall CR
9295
// On CR update, it will read the conditions to see if there are errors updated by PFW controller.
9396
// If the Spec was updated by others, it will reconcile the Spec.
94-
func ensureFirewallCR(client firewallclient.Interface, expectedFWCR *gcpfirewallv1.GCPFirewall, logger klog.Logger) error {
97+
func ensureFirewallCR(client firewallclient.Interface, expectedFWCR *gcpfirewallv1.GCPFirewall, logger klog.Logger, dryRun bool) error {
9598
fw := client.NetworkingV1().GCPFirewalls()
9699
currentFWCR, err := fw.Get(context.Background(), expectedFWCR.Name, metav1.GetOptions{})
97100
logger.V(3).Info("ensureFirewallCR Get CR", "currentFirewallCR", fmt.Sprintf("%+v", currentFWCR), "err", err)
@@ -103,6 +106,10 @@ func ensureFirewallCR(client firewallclient.Interface, expectedFWCR *gcpfirewall
103106
}
104107
return err
105108
}
109+
if currentFWCR.DeletionTimestamp != nil {
110+
logger.V(3).Info("ensureFirewallCR: The CR contains DeletionTimestamp. Skipping Ensure", "currentFirewallDeletionTimestamp", fmt.Sprintf("%+v", currentFWCR.DeletionTimestamp))
111+
return nil
112+
}
106113
if !reflect.DeepEqual(currentFWCR.Spec, expectedFWCR.Spec) {
107114
// Update the current firewall CR
108115
logger.V(3).Info("ensureFirewallCR Update CR", "currentFirewallCR", fmt.Sprintf("%+v", currentFWCR.Spec), "expectedFirewallCR", fmt.Sprintf("%+v", expectedFWCR.Spec))
@@ -116,7 +123,11 @@ func ensureFirewallCR(client firewallclient.Interface, expectedFWCR *gcpfirewall
116123
con.Reason == string(gcpfirewallv1.FirewallRuleReasonSyncError) {
117124
// Use recorder to emit the cmd in Sync()
118125
logger.V(3).Info("ensureFirewallCR: Could not enforce Firewall CR", "currentFirewallCRName", currentFWCR.Name, "reason", con.Reason)
119-
return fmt.Errorf(con.Reason)
126+
if dryRun {
127+
return nil
128+
} else {
129+
return fmt.Errorf(con.Reason)
130+
}
120131
}
121132
}
122133
return nil

0 commit comments

Comments
 (0)