Skip to content

Commit 4e697f8

Browse files
authored
Merge pull request #3296 from michaelsaah/issue-3285-fix
don't block TGB reconciliation loop on failed SG ingress reconciliation
2 parents 2be7cec + 4607bb4 commit 4e697f8

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: 9 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,13 @@ func (m *defaultNetworkingManager) reconcileWithIngressPermissionsPerSG(ctx cont
199200
aggregatedIngressPermissionsPerSG := m.computeAggregatedIngressPermissionsPerSG(ctx)
200201

201202
permissionSelector := labels.SelectorFromSet(labels.Set{tgbNetworkingIPPermissionLabelKey: tgbNetworkingIPPermissionLabelValue})
203+
var sgReconciliationErrors []error
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-
return err
208+
sgReconciliationErrors = append(sgReconciliationErrors, err)
209+
continue
207210
}
208211
}
209212

@@ -213,6 +216,11 @@ func (m *defaultNetworkingManager) reconcileWithIngressPermissionsPerSG(ctx cont
213216
}
214217
}
215218

219+
if len(sgReconciliationErrors) > 0 {
220+
err := libErrors.Join(sgReconciliationErrors...)
221+
return err
222+
}
223+
216224
return nil
217225
}
218226

pkg/targetgroupbinding/resource_manager.go

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

139+
needNetworkingRequeue := false
139140
if err := m.networkingManager.ReconcileForPodEndpoints(ctx, tgb, endpoints); err != nil {
140-
return err
141+
m.eventRecorder.Event(tgb, corev1.EventTypeWarning, k8s.TargetGroupBindingEventReasonFailedNetworkReconcile, err.Error())
142+
needNetworkingRequeue = true
141143
}
142144
if len(unmatchedTargets) > 0 {
143145
if err := m.deregisterTargets(ctx, tgARN, unmatchedTargets); err != nil {
@@ -167,6 +169,10 @@ func (m *defaultResourceManager) reconcileWithIPTargetType(ctx context.Context,
167169
}
168170

169171
_ = drainingTargets
172+
173+
if needNetworkingRequeue {
174+
return runtime.NewRequeueNeeded("networking reconciliation")
175+
}
170176
return nil
171177
}
172178

0 commit comments

Comments
 (0)