Skip to content

Commit ef62673

Browse files
author
Shreya Anil Naik
committed
Add code for filtering target group & LB by VPC ID; Add IT code
1 parent c5af90f commit ef62673

File tree

5 files changed

+339
-31
lines changed

5 files changed

+339
-31
lines changed

controllers/ingress/group_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func NewGroupReconciler(cloud aws.Cloud, k8sClient client.Client, eventRecorder
5151
enhancedBackendBuilder := ingress.NewDefaultEnhancedBackendBuilder(k8sClient, annotationParser, authConfigBuilder)
5252
referenceIndexer := ingress.NewDefaultReferenceIndexer(enhancedBackendBuilder, authConfigBuilder, logger)
5353
trackingProvider := tracking.NewDefaultProvider(ingressTagPrefix, config.ClusterName)
54-
elbv2TaggingManager := elbv2deploy.NewDefaultTaggingManager(cloud.ELBV2(), logger)
54+
elbv2TaggingManager := elbv2deploy.NewDefaultTaggingManager(cloud.ELBV2(), cloud.VpcID(), logger)
5555
modelBuilder := ingress.NewDefaultModelBuilder(k8sClient, eventRecorder,
5656
cloud.EC2(), cloud.ACM(),
5757
annotationParser, subnetsResolver,

controllers/service/service_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func NewServiceReconciler(cloud aws.Cloud, k8sClient client.Client, eventRecorde
4040

4141
annotationParser := annotations.NewSuffixAnnotationParser(serviceAnnotationPrefix)
4242
trackingProvider := tracking.NewDefaultProvider(serviceTagPrefix, config.ClusterName)
43-
elbv2TaggingManager := elbv2.NewDefaultTaggingManager(cloud.ELBV2(), logger)
43+
elbv2TaggingManager := elbv2.NewDefaultTaggingManager(cloud.ELBV2(), cloud.VpcID(), logger)
4444
modelBuilder := service.NewDefaultModelBuilder(annotationParser, subnetsResolver, vpcResolver, trackingProvider,
4545
elbv2TaggingManager, config.ClusterName, config.DefaultTags, config.ExternalManagedTags, config.DefaultSSLPolicy)
4646
stackMarshaller := deploy.NewDefaultStackMarshaller()

pkg/deploy/elbv2/tagging_manager.go

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,11 @@ type TaggingManager interface {
9292
}
9393

9494
// NewDefaultTaggingManager constructs default TaggingManager.
95-
func NewDefaultTaggingManager(elbv2Client services.ELBV2, logger logr.Logger) *defaultTaggingManager {
95+
func NewDefaultTaggingManager(elbv2Client services.ELBV2, vpcID string, logger logr.Logger) *defaultTaggingManager {
9696
return &defaultTaggingManager{
97-
elbv2Client: elbv2Client,
98-
logger: logger,
99-
97+
elbv2Client: elbv2Client,
98+
vpcID: vpcID,
99+
logger: logger,
100100
describeTagsChunkSize: defaultDescribeTagsChunkSize,
101101
}
102102
}
@@ -106,9 +106,9 @@ var _ TaggingManager = &defaultTaggingManager{}
106106
// default implementation for TaggingManager
107107
// @TODO: use AWS Resource Groups Tagging API to optimize this implementation once it have PrivateLink support.
108108
type defaultTaggingManager struct {
109-
elbv2Client services.ELBV2
110-
logger logr.Logger
111-
109+
elbv2Client services.ELBV2
110+
vpcID string
111+
logger logr.Logger
112112
describeTagsChunkSize int
113113
}
114114

@@ -235,20 +235,23 @@ func (m *defaultTaggingManager) ListLoadBalancers(ctx context.Context, tagFilter
235235
return nil, err
236236
}
237237

238-
lbARNs := make([]string, 0, len(lbs))
239-
lbByARN := make(map[string]*elbv2sdk.LoadBalancer, len(lbs))
238+
lbARNsWithinVPC := make([]string, 0, len(lbs))
239+
lbByARNWithinVPC := make(map[string]*elbv2sdk.LoadBalancer, len(lbs))
240240
for _, lb := range lbs {
241+
if awssdk.StringValue(lb.VpcId) != m.vpcID {
242+
continue
243+
}
241244
lbARN := awssdk.StringValue(lb.LoadBalancerArn)
242-
lbARNs = append(lbARNs, lbARN)
243-
lbByARN[lbARN] = lb
245+
lbARNsWithinVPC = append(lbARNsWithinVPC, lbARN)
246+
lbByARNWithinVPC[lbARN] = lb
244247
}
245-
tagsByARN, err := m.describeResourceTags(ctx, lbARNs)
248+
tagsByARN, err := m.describeResourceTags(ctx, lbARNsWithinVPC)
246249
if err != nil {
247250
return nil, err
248251
}
249252

250253
var matchedLBs []LoadBalancerWithTags
251-
for _, arn := range lbARNs {
254+
for _, arn := range lbARNsWithinVPC {
252255
tags := tagsByARN[arn]
253256
matchedAnyTagFilter := false
254257
for _, tagFilter := range tagFilters {
@@ -259,7 +262,7 @@ func (m *defaultTaggingManager) ListLoadBalancers(ctx context.Context, tagFilter
259262
}
260263
if matchedAnyTagFilter {
261264
matchedLBs = append(matchedLBs, LoadBalancerWithTags{
262-
LoadBalancer: lbByARN[arn],
265+
LoadBalancer: lbByARNWithinVPC[arn],
263266
Tags: tags,
264267
})
265268
}
@@ -274,20 +277,23 @@ func (m *defaultTaggingManager) ListTargetGroups(ctx context.Context, tagFilters
274277
return nil, err
275278
}
276279

277-
tgARNs := make([]string, 0, len(tgs))
278-
tgByARN := make(map[string]*elbv2sdk.TargetGroup, len(tgs))
280+
tgARNsWithinVPC := make([]string, 0, len(tgs))
281+
tgByARNWithinVPC := make(map[string]*elbv2sdk.TargetGroup, len(tgs))
279282
for _, tg := range tgs {
283+
if awssdk.StringValue(tg.VpcId) != m.vpcID {
284+
continue
285+
}
280286
tgARN := awssdk.StringValue(tg.TargetGroupArn)
281-
tgARNs = append(tgARNs, tgARN)
282-
tgByARN[tgARN] = tg
287+
tgARNsWithinVPC = append(tgARNsWithinVPC, tgARN)
288+
tgByARNWithinVPC[tgARN] = tg
283289
}
284-
tagsByARN, err := m.describeResourceTags(ctx, tgARNs)
290+
tagsByARN, err := m.describeResourceTags(ctx, tgARNsWithinVPC)
285291
if err != nil {
286292
return nil, err
287293
}
288294

289295
var matchedTGs []TargetGroupWithTags
290-
for _, arn := range tgARNs {
296+
for _, arn := range tgARNsWithinVPC {
291297
tags := tagsByARN[arn]
292298
matchedAnyTagFilter := false
293299
for _, tagFilter := range tagFilters {
@@ -298,7 +304,7 @@ func (m *defaultTaggingManager) ListTargetGroups(ctx context.Context, tagFilters
298304
}
299305
if matchedAnyTagFilter {
300306
matchedTGs = append(matchedTGs, TargetGroupWithTags{
301-
TargetGroup: tgByARN[arn],
307+
TargetGroup: tgByARNWithinVPC[arn],
302308
Tags: tags,
303309
})
304310
}

0 commit comments

Comments
 (0)