Skip to content

Commit d6e8667

Browse files
committed
group errors, emit one event per reconcile, requeue on failure
1 parent 5e8c6df commit d6e8667

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

pkg/k8s/events.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const (
2525
TargetGroupBindingEventReasonFailedRemoveFinalizer = "FailedRemoveFinalizer"
2626
TargetGroupBindingEventReasonFailedUpdateStatus = "FailedUpdateStatus"
2727
TargetGroupBindingEventReasonFailedCleanup = "FailedCleanup"
28+
TargetGroupBindingEventReasonFailedNetworkReconcile = "FailedNetworkReconcile"
2829
TargetGroupBindingEventReasonBackendNotFound = "BackendNotFound"
2930
TargetGroupBindingEventReasonSuccessfullyReconciled = "SuccessfullyReconciled"
3031
)

pkg/targetgroupbinding/networking_manager.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"net"
77
"strings"
88
"sync"
9+
libErrors "errors"
910

1011
awssdk "github.com/aws/aws-sdk-go/aws"
1112
"github.com/aws/aws-sdk-go/aws/awserr"
@@ -199,11 +200,12 @@ func (m *defaultNetworkingManager) reconcileWithIngressPermissionsPerSG(ctx cont
199200
aggregatedIngressPermissionsPerSG := m.computeAggregatedIngressPermissionsPerSG(ctx)
200201

201202
permissionSelector := labels.SelectorFromSet(labels.Set{tgbNetworkingIPPermissionLabelKey: tgbNetworkingIPPermissionLabelValue})
203+
sgReconciliationErrors := make([]error, 0)
202204
for sgID, permissions := range aggregatedIngressPermissionsPerSG {
203205
if err := m.sgReconciler.ReconcileIngress(ctx, sgID, permissions,
204206
networking.WithPermissionSelector(permissionSelector),
205207
networking.WithAuthorizeOnly(!computedForAllTGBs)); err != nil {
206-
m.logger.Error(err, "Security group reconciliation", "SecurityGroupID", sgID)
208+
sgReconciliationErrors = append(sgReconciliationErrors, err)
207209
continue
208210
}
209211
}
@@ -214,6 +216,11 @@ func (m *defaultNetworkingManager) reconcileWithIngressPermissionsPerSG(ctx cont
214216
}
215217
}
216218

219+
if len(sgReconciliationErrors) > 0 {
220+
err := libErrors.Join(sgReconciliationErrors...)
221+
return err
222+
}
223+
217224
return nil
218225
}
219226

pkg/targetgroupbinding/resource_manager.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,11 @@ func (m *defaultResourceManager) reconcileWithIPTargetType(ctx context.Context,
136136
notDrainingTargets, drainingTargets := partitionTargetsByDrainingStatus(targets)
137137
matchedEndpointAndTargets, unmatchedEndpoints, unmatchedTargets := matchPodEndpointWithTargets(endpoints, notDrainingTargets)
138138

139+
140+
needNetworkingRequeue := false
139141
if err := m.networkingManager.ReconcileForPodEndpoints(ctx, tgb, endpoints); err != nil {
140-
return err
142+
m.eventRecorder.Event(tgb, corev1.EventTypeWarning, k8s.TargetGroupBindingEventReasonFailedNetworkReconcile, err.Error())
143+
needNetworkingRequeue = true
141144
}
142145
if len(unmatchedTargets) > 0 {
143146
if err := m.deregisterTargets(ctx, tgARN, unmatchedTargets); err != nil {
@@ -167,6 +170,10 @@ func (m *defaultResourceManager) reconcileWithIPTargetType(ctx context.Context,
167170
}
168171

169172
_ = drainingTargets
173+
174+
if needNetworkingRequeue {
175+
return runtime.NewRequeueNeeded("networking reconciliation")
176+
}
170177
return nil
171178
}
172179

0 commit comments

Comments
 (0)