@@ -44,7 +44,7 @@ const (
4444func NewGroupReconciler (cloud aws.Cloud , k8sClient client.Client , eventRecorder record.EventRecorder ,
4545finalizerManager k8s.FinalizerManager , networkingSGManager networkingpkg.SecurityGroupManager ,
4646networkingSGReconciler networkingpkg.SecurityGroupReconciler , subnetsResolver networkingpkg.SubnetsResolver ,
47- config config.ControllerConfig , logger logr.Logger ) * groupReconciler {
47+ config config.ControllerConfig , backendSGProvider networkingpkg. BackendSGProvider , logger logr.Logger ) * groupReconciler {
4848
4949annotationParser := annotations .NewSuffixAnnotationParser (annotations .AnnotationPrefixIngress )
5050authConfigBuilder := ingress .NewDefaultAuthConfigBuilder (annotationParser )
@@ -57,7 +57,7 @@ func NewGroupReconciler(cloud aws.Cloud, k8sClient client.Client, eventRecorder
5757annotationParser , subnetsResolver ,
5858authConfigBuilder , enhancedBackendBuilder , trackingProvider , elbv2TaggingManager ,
5959cloud .VpcID (), config .ClusterName , config .DefaultTags , config .ExternalManagedTags ,
60- config .DefaultSSLPolicy , logger )
60+ config .DefaultSSLPolicy , backendSGProvider , config . EnableBackendSecurityGroup , logger )
6161stackMarshaller := deploy .NewDefaultStackMarshaller ()
6262stackDeployer := deploy .NewDefaultStackDeployer (cloud , k8sClient , networkingSGManager , networkingSGReconciler ,
6363config , ingressTagPrefix , logger )
@@ -68,12 +68,13 @@ func NewGroupReconciler(cloud aws.Cloud, k8sClient client.Client, eventRecorder
6868groupFinalizerManager := ingress .NewDefaultFinalizerManager (finalizerManager )
6969
7070return & groupReconciler {
71- k8sClient : k8sClient ,
72- eventRecorder : eventRecorder ,
73- referenceIndexer : referenceIndexer ,
74- modelBuilder : modelBuilder ,
75- stackMarshaller : stackMarshaller ,
76- stackDeployer : stackDeployer ,
71+ k8sClient : k8sClient ,
72+ eventRecorder : eventRecorder ,
73+ referenceIndexer : referenceIndexer ,
74+ modelBuilder : modelBuilder ,
75+ stackMarshaller : stackMarshaller ,
76+ stackDeployer : stackDeployer ,
77+ backendSGProvider : backendSGProvider ,
7778
7879groupLoader : groupLoader ,
7980groupFinalizerManager : groupFinalizerManager ,
@@ -85,12 +86,13 @@ func NewGroupReconciler(cloud aws.Cloud, k8sClient client.Client, eventRecorder
8586
8687// GroupReconciler reconciles a IngressGroup
8788type groupReconciler struct {
88- k8sClient client.Client
89- eventRecorder record.EventRecorder
90- referenceIndexer ingress.ReferenceIndexer
91- modelBuilder ingress.ModelBuilder
92- stackMarshaller deploy.StackMarshaller
93- stackDeployer deploy.StackDeployer
89+ k8sClient client.Client
90+ eventRecorder record.EventRecorder
91+ referenceIndexer ingress.ReferenceIndexer
92+ modelBuilder ingress.ModelBuilder
93+ stackMarshaller deploy.StackMarshaller
94+ stackDeployer deploy.StackDeployer
95+ backendSGProvider networkingpkg.BackendSGProvider
9496
9597groupLoader ingress.GroupLoader
9698groupFinalizerManager ingress.FinalizerManager
@@ -124,7 +126,6 @@ func (r *groupReconciler) reconcile(ctx context.Context, req ctrl.Request) error
124126r .recordIngressGroupEvent (ctx , ingGroup , corev1 .EventTypeWarning , k8s .IngressEventReasonFailedAddFinalizer , fmt .Sprintf ("Failed add finalizer due to %v" , err ))
125127return err
126128}
127-
128129_ , lb , err := r .buildAndDeployModel (ctx , ingGroup )
129130if err != nil {
130131return err
@@ -141,6 +142,12 @@ func (r *groupReconciler) reconcile(ctx context.Context, req ctrl.Request) error
141142}
142143}
143144
145+ if len (ingGroup .Members ) == 0 {
146+ if err := r .backendSGProvider .Release (ctx ); err != nil {
147+ return err
148+ }
149+ }
150+
144151if len (ingGroup .InactiveMembers ) > 0 {
145152if err := r .groupFinalizerManager .RemoveGroupFinalizer (ctx , ingGroupID , ingGroup .InactiveMembers ); err != nil {
146153r .recordIngressGroupEvent (ctx , ingGroup , corev1 .EventTypeWarning , k8s .IngressEventReasonFailedRemoveFinalizer , fmt .Sprintf ("Failed remove finalizer due to %v" , err ))
0 commit comments