Skip to content

Commit 5c3c36a

Browse files
oliviassssTimothy-Dougherty
authored andcommitted
Add support to disable cluster tag check during subnet auto-discovery (kubernetes-sigs#2635)
* rebase main * update * doc update * add support on NLB side
1 parent 78c9f8c commit 5c3c36a

14 files changed

+172
-18
lines changed

controllers/ingress/group_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func NewGroupReconciler(cloud aws.Cloud, k8sClient client.Client, eventRecorder
5555
modelBuilder := ingress.NewDefaultModelBuilder(k8sClient, eventRecorder,
5656
cloud.EC2(), cloud.ACM(),
5757
annotationParser, subnetsResolver,
58-
authConfigBuilder, enhancedBackendBuilder, trackingProvider, elbv2TaggingManager,
58+
authConfigBuilder, enhancedBackendBuilder, trackingProvider, elbv2TaggingManager, controllerConfig.FeatureGates,
5959
cloud.VpcID(), controllerConfig.ClusterName, controllerConfig.DefaultTags, controllerConfig.ExternalManagedTags,
6060
controllerConfig.DefaultSSLPolicy, backendSGProvider, controllerConfig.EnableBackendSecurityGroup, controllerConfig.DisableRestrictedSGRules, controllerConfig.FeatureGates.Enabled(config.EnableIPTargetType), logger)
6161
stackMarshaller := deploy.NewDefaultStackMarshaller()

controllers/service/service_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func NewServiceReconciler(cloud aws.Cloud, k8sClient client.Client, eventRecorde
4343
elbv2TaggingManager := elbv2.NewDefaultTaggingManager(cloud.ELBV2(), cloud.VpcID(), controllerConfig.FeatureGates, logger)
4444
serviceUtils := service.NewServiceUtils(annotationParser, serviceFinalizer, controllerConfig.ServiceConfig.LoadBalancerClass, controllerConfig.FeatureGates)
4545
modelBuilder := service.NewDefaultModelBuilder(annotationParser, subnetsResolver, vpcInfoProvider, cloud.VpcID(), trackingProvider,
46-
elbv2TaggingManager, controllerConfig.ClusterName, controllerConfig.DefaultTags, controllerConfig.ExternalManagedTags, controllerConfig.DefaultSSLPolicy, controllerConfig.FeatureGates.Enabled(config.EnableIPTargetType), serviceUtils)
46+
elbv2TaggingManager, controllerConfig.FeatureGates, controllerConfig.ClusterName, controllerConfig.DefaultTags, controllerConfig.ExternalManagedTags, controllerConfig.DefaultSSLPolicy, controllerConfig.FeatureGates.Enabled(config.EnableIPTargetType), serviceUtils)
4747
stackMarshaller := deploy.NewDefaultStackMarshaller()
4848
stackDeployer := deploy.NewDefaultStackDeployer(cloud, k8sClient, networkingSGManager, networkingSGReconciler, controllerConfig, serviceTagPrefix, logger)
4949
return &serviceReconciler{

docs/deploy/configurations.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,4 @@ They are a set of kye=value pairs that describe AWS load balance controller feat
147147
| EndpointsFailOpen | string | false | Enable or disable allowing endpoints with `ready:unknown` state in the target groups. |
148148
| EnableServiceController | string | true | Toggles support for `Service` type resources. |
149149
| EnableIPTargetType | string | true | Used to toggle support for target-type `ip` across `Ingress` and `Service` type resources. |
150+
| SubnetsClusterTagCheck | string | true | Enable or disable the check for `kubernetes.io/cluster/${cluster-name}` during subnet auto-discovery |

docs/deploy/subnet_discovery.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,6 @@ In version v2.1.1 and older, both the public and private subnets must be tagged
3131

3232
`${cluster-name}` is the name of the kubernetes cluster
3333

34-
The cluster tag is not required in v2.1.2 and newer releases, unless a cluster tag for another cluster is present.
34+
The cluster tag is not required in versions from v2.1.2 to v2.4.1, unless a cluster tag for another cluster is present.
35+
36+
Starting from v2.4.2 release, you can disable the cluster tag check completely by specifying the feature gate `SubnetsClusterTagCheck=false`

pkg/config/feature_gates.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ const (
1616
EndpointsFailOpen Feature = "EndpointsFailOpen"
1717
EnableServiceController Feature = "EnableServiceController"
1818
EnableIPTargetType Feature = "EnableIPTargetType"
19+
SubnetsClusterTagCheck Feature = "SubnetsClusterTagCheck"
1920
)
2021

2122
type FeatureGates interface {
@@ -49,6 +50,7 @@ func NewFeatureGates() FeatureGates {
4950
EndpointsFailOpen: false,
5051
EnableServiceController: true,
5152
EnableIPTargetType: true,
53+
SubnetsClusterTagCheck: true,
5254
},
5355
}
5456
}

pkg/ingress/model_build_load_balancer.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ import (
88
"regexp"
99
"strings"
1010

11-
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/tracking"
12-
1311
awssdk "github.com/aws/aws-sdk-go/aws"
1412
ec2sdk "github.com/aws/aws-sdk-go/service/ec2"
1513
"github.com/google/go-cmp/cmp"
1614
"github.com/pkg/errors"
1715
"k8s.io/apimachinery/pkg/util/sets"
1816
"sigs.k8s.io/aws-load-balancer-controller/pkg/algorithm"
1917
"sigs.k8s.io/aws-load-balancer-controller/pkg/annotations"
18+
"sigs.k8s.io/aws-load-balancer-controller/pkg/config"
19+
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/tracking"
2020
"sigs.k8s.io/aws-load-balancer-controller/pkg/equality"
2121
"sigs.k8s.io/aws-load-balancer-controller/pkg/k8s"
2222
"sigs.k8s.io/aws-load-balancer-controller/pkg/model/core"
@@ -225,6 +225,7 @@ func (t *defaultModelBuildTask) buildLoadBalancerSubnetMappings(ctx context.Cont
225225
networking.WithSubnetsResolveLBType(elbv2model.LoadBalancerTypeApplication),
226226
networking.WithSubnetsResolveLBScheme(scheme),
227227
networking.WithSubnetsResolveAvailableIPAddressCount(minimalAvailableIPAddressCount),
228+
networking.WithSubnetsClusterTagCheck(t.featureGates.Enabled(config.SubnetsClusterTagCheck)),
228229
)
229230
if err != nil {
230231
return nil, errors.Wrap(err, "couldn't auto-discover subnets")

pkg/ingress/model_builder.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"k8s.io/client-go/tools/record"
1414
"sigs.k8s.io/aws-load-balancer-controller/pkg/annotations"
1515
"sigs.k8s.io/aws-load-balancer-controller/pkg/aws/services"
16+
"sigs.k8s.io/aws-load-balancer-controller/pkg/config"
1617
elbv2deploy "sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/elbv2"
1718
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/tracking"
1819
"sigs.k8s.io/aws-load-balancer-controller/pkg/k8s"
@@ -38,7 +39,7 @@ func NewDefaultModelBuilder(k8sClient client.Client, eventRecorder record.EventR
3839
ec2Client services.EC2, acmClient services.ACM,
3940
annotationParser annotations.Parser, subnetsResolver networkingpkg.SubnetsResolver,
4041
authConfigBuilder AuthConfigBuilder, enhancedBackendBuilder EnhancedBackendBuilder,
41-
trackingProvider tracking.Provider, elbv2TaggingManager elbv2deploy.TaggingManager,
42+
trackingProvider tracking.Provider, elbv2TaggingManager elbv2deploy.TaggingManager, featureGates config.FeatureGates,
4243
vpcID string, clusterName string, defaultTags map[string]string, externalManagedTags []string, defaultSSLPolicy string,
4344
backendSGProvider networkingpkg.BackendSGProvider, enableBackendSG bool, disableRestrictedSGRules bool, enableIPTargetType bool, logger logr.Logger) *defaultModelBuilder {
4445
certDiscovery := NewACMCertDiscovery(acmClient, logger)
@@ -58,6 +59,7 @@ func NewDefaultModelBuilder(k8sClient client.Client, eventRecorder record.EventR
5859
ruleOptimizer: ruleOptimizer,
5960
trackingProvider: trackingProvider,
6061
elbv2TaggingManager: elbv2TaggingManager,
62+
featureGates: featureGates,
6163
defaultTags: defaultTags,
6264
externalManagedTags: sets.NewString(externalManagedTags...),
6365
defaultSSLPolicy: defaultSSLPolicy,
@@ -88,6 +90,7 @@ type defaultModelBuilder struct {
8890
ruleOptimizer RuleOptimizer
8991
trackingProvider tracking.Provider
9092
elbv2TaggingManager elbv2deploy.TaggingManager
93+
featureGates config.FeatureGates
9194
defaultTags map[string]string
9295
externalManagedTags sets.String
9396
defaultSSLPolicy string
@@ -115,6 +118,7 @@ func (b *defaultModelBuilder) Build(ctx context.Context, ingGroup Group) (core.S
115118
ruleOptimizer: b.ruleOptimizer,
116119
trackingProvider: b.trackingProvider,
117120
elbv2TaggingManager: b.elbv2TaggingManager,
121+
featureGates: b.featureGates,
118122
backendSGProvider: b.backendSGProvider,
119123
logger: b.logger,
120124
enableBackendSG: b.enableBackendSG,
@@ -167,6 +171,7 @@ type defaultModelBuildTask struct {
167171
ruleOptimizer RuleOptimizer
168172
trackingProvider tracking.Provider
169173
elbv2TaggingManager elbv2deploy.TaggingManager
174+
featureGates config.FeatureGates
170175
logger logr.Logger
171176

172177
ingGroup Group

pkg/ingress/model_builder_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"k8s.io/client-go/tools/record"
2121
"sigs.k8s.io/aws-load-balancer-controller/pkg/annotations"
2222
"sigs.k8s.io/aws-load-balancer-controller/pkg/aws/services"
23+
"sigs.k8s.io/aws-load-balancer-controller/pkg/config"
2324
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy"
2425
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/elbv2"
2526
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/tracking"
@@ -3949,6 +3950,7 @@ func Test_defaultModelBuilder_Build(t *testing.T) {
39493950
trackingProvider: trackingProvider,
39503951
elbv2TaggingManager: elbv2TaggingManager,
39513952
enableBackendSG: tt.fields.enableBackendSG,
3953+
featureGates: config.NewFeatureGates(),
39523954
logger: &log.NullLogger{},
39533955

39543956
defaultSSLPolicy: "ELBSecurityPolicy-2016-08",

pkg/networking/subnet_resolver.go

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ type SubnetsResolveOptions struct {
4444
LBScheme elbv2model.LoadBalancerScheme
4545
// count of available ip addresses
4646
AvailableIPAddressCount int64
47+
// whether to check the cluster tag
48+
SubnetsClusterTagCheck bool
4749
}
4850

4951
// ApplyOptions applies slice of SubnetsResolveOption.
@@ -63,34 +65,42 @@ func defaultSubnetsResolveOptions() SubnetsResolveOptions {
6365

6466
type SubnetsResolveOption func(opts *SubnetsResolveOptions)
6567

66-
// WithSubnetsResolveLBType generates a option that configures LBType.
68+
// WithSubnetsResolveLBType generates an option that configures LBType.
6769
func WithSubnetsResolveLBType(lbType elbv2model.LoadBalancerType) SubnetsResolveOption {
6870
return func(opts *SubnetsResolveOptions) {
6971
opts.LBType = lbType
7072
}
7173
}
7274

73-
// WithSubnetsResolveLBScheme generates a option that configures LBScheme.
75+
// WithSubnetsResolveLBScheme generates an option that configures LBScheme.
7476
func WithSubnetsResolveLBScheme(lbScheme elbv2model.LoadBalancerScheme) SubnetsResolveOption {
7577
return func(opts *SubnetsResolveOptions) {
7678
opts.LBScheme = lbScheme
7779
}
7880
}
7981

80-
// WithSubnetsResolveAvailableIPAddressCount generates a option that configures AvailableIPAddressCount.
82+
// WithSubnetsResolveAvailableIPAddressCount generates an option that configures AvailableIPAddressCount.
8183
func WithSubnetsResolveAvailableIPAddressCount(AvailableIPAddressCount int64) SubnetsResolveOption {
8284
return func(opts *SubnetsResolveOptions) {
8385
opts.AvailableIPAddressCount = AvailableIPAddressCount
8486
}
8587
}
8688

89+
// WithSubnetsClusterTagCheck generates an option that configures SubnetsClusterTagCheck.
90+
func WithSubnetsClusterTagCheck(SubnetsClusterTagCheck bool) SubnetsResolveOption {
91+
return func(opts *SubnetsResolveOptions) {
92+
opts.SubnetsClusterTagCheck = SubnetsClusterTagCheck
93+
}
94+
}
95+
8796
// SubnetsResolver is responsible for resolve EC2 Subnets for Load Balancers.
8897
type SubnetsResolver interface {
8998
// ResolveViaDiscovery resolve subnets by auto discover matching subnets.
90-
// Discovery candidate includes all subnets within clusterVPC that contains the "kubernetes.io/cluster/<cluster-name>" tag.
91-
// Additionally,
92-
// * for internet-facing Load Balancer, "kubernetes.io/role/elb" tag must presents.
93-
// * for internal Load Balancer, "kubernetes.io/role/internal-elb" tag must presents.
99+
// Discovery candidate includes all subnets within the clusterVPC. Additionally,
100+
// * for internet-facing Load Balancer, "kubernetes.io/role/elb" tag must be present.
101+
// * for internal Load Balancer, "kubernetes.io/role/internal-elb" tag must be present.
102+
// * if SubnetClusterTagCheck is enabled, subnets within the clusterVPC must contain no cluster tag at all
103+
// or contain the "kubernetes.io/cluster/<cluster_name>" tag for the current cluster
94104
// If multiple subnets are found for specific AZ, one subnet is chosen based on the lexical order of subnetID.
95105
ResolveViaDiscovery(ctx context.Context, opts ...SubnetsResolveOption) ([]*ec2sdk.Subnet, error)
96106

@@ -148,7 +158,7 @@ func (r *defaultSubnetsResolver) ResolveViaDiscovery(ctx context.Context, opts .
148158
}
149159
var subnets []*ec2sdk.Subnet
150160
for _, subnet := range allSubnets {
151-
if r.checkSubnetIsNotTaggedForOtherClusters(subnet) {
161+
if r.checkSubnetIsNotTaggedForOtherClusters(subnet, resolveOpts.SubnetsClusterTagCheck) {
152162
subnets = append(subnets, subnet)
153163
}
154164
}
@@ -343,7 +353,11 @@ func (r *defaultSubnetsResolver) checkSubnetHasClusterTag(subnet *ec2sdk.Subnet)
343353
// checkSubnetIsNotTaggedForOtherClusters checks whether the subnet is tagged for the current cluster
344354
// or it doesn't contain the cluster tag at all. If the subnet contains a tag for other clusters, then
345355
// this check returns false so that the subnet does not used for the load balancer.
346-
func (r *defaultSubnetsResolver) checkSubnetIsNotTaggedForOtherClusters(subnet *ec2sdk.Subnet) bool {
356+
// it returns true if the subnetsClusterTagCheck is disabled
357+
func (r *defaultSubnetsResolver) checkSubnetIsNotTaggedForOtherClusters(subnet *ec2sdk.Subnet, subnetsClusterTagCheck bool) bool {
358+
if !subnetsClusterTagCheck {
359+
return true
360+
}
347361
clusterResourceTagPrefix := "kubernetes.io/cluster"
348362
clusterResourceTagKey := fmt.Sprintf("kubernetes.io/cluster/%s", r.clusterName)
349363
hasClusterResourceTagPrefix := false

pkg/networking/subnet_resolver_test.go

Lines changed: 117 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ func Test_defaultSubnetsResolver_ResolveViaDiscovery(t *testing.T) {
3737
}
3838
const (
3939
minimalAvailableIPAddressCount = int64(8)
40+
defaultSubnetsClusterTagCheck = true
4041
)
4142
tests := []struct {
4243
name string
@@ -689,7 +690,7 @@ func Test_defaultSubnetsResolver_ResolveViaDiscovery(t *testing.T) {
689690
},
690691
},
691692
{
692-
name: "subnets tagged for some other clusters get ignored",
693+
name: "subnets tagged for some other clusters get ignored, with SubnetsClusterTagCheck enabled",
693694
fields: fields{
694695
vpcID: "vpc-1",
695696
clusterName: "kube-cluster",
@@ -790,6 +791,7 @@ func Test_defaultSubnetsResolver_ResolveViaDiscovery(t *testing.T) {
790791
opts: []SubnetsResolveOption{
791792
WithSubnetsResolveLBType(elbv2model.LoadBalancerTypeNetwork),
792793
WithSubnetsResolveLBScheme(elbv2model.LoadBalancerSchemeInternetFacing),
794+
WithSubnetsClusterTagCheck(defaultSubnetsClusterTagCheck),
793795
},
794796
},
795797
want: []*ec2sdk.Subnet{
@@ -813,6 +815,120 @@ func Test_defaultSubnetsResolver_ResolveViaDiscovery(t *testing.T) {
813815
},
814816
},
815817
},
818+
{
819+
name: "subnets tagged for some other clusters doesn't get ignored, with SubnetsClusterTagCheck disabled",
820+
fields: fields{
821+
vpcID: "vpc-1",
822+
clusterName: "kube-cluster",
823+
describeSubnetsAsListCalls: []describeSubnetsAsListCall{
824+
{
825+
input: &ec2sdk.DescribeSubnetsInput{
826+
Filters: []*ec2sdk.Filter{
827+
{
828+
Name: awssdk.String("tag:kubernetes.io/role/elb"),
829+
Values: awssdk.StringSlice([]string{"", "1"}),
830+
},
831+
{
832+
Name: awssdk.String("vpc-id"),
833+
Values: awssdk.StringSlice([]string{"vpc-1"}),
834+
},
835+
},
836+
},
837+
output: []*ec2sdk.Subnet{
838+
{
839+
SubnetId: awssdk.String("subnet-3"),
840+
AvailabilityZone: awssdk.String("us-west-2c"),
841+
AvailabilityZoneId: awssdk.String("usw2-az3"),
842+
VpcId: awssdk.String("vpc-1"),
843+
Tags: []*ec2sdk.Tag{
844+
{
845+
Key: awssdk.String("kubernetes.io/cluster/some-other-cluster"),
846+
Value: awssdk.String("owned"),
847+
},
848+
},
849+
},
850+
{
851+
SubnetId: awssdk.String("subnet-1"),
852+
AvailabilityZone: awssdk.String("us-west-2a"),
853+
AvailabilityZoneId: awssdk.String("usw2-az1"),
854+
VpcId: awssdk.String("vpc-1"),
855+
Tags: []*ec2sdk.Tag{
856+
{
857+
Key: awssdk.String("kubernetes.io/cluster/some-other-cluster"),
858+
Value: awssdk.String("owned"),
859+
},
860+
},
861+
},
862+
{
863+
SubnetId: awssdk.String("subnet-2"),
864+
AvailabilityZone: awssdk.String("us-west-2c"),
865+
AvailabilityZoneId: awssdk.String("usw2-az3"),
866+
VpcId: awssdk.String("vpc-1"),
867+
Tags: []*ec2sdk.Tag{
868+
{
869+
Key: awssdk.String("kubernetes.io/cluster/kube-cluster"),
870+
Value: awssdk.String("owned"),
871+
},
872+
},
873+
},
874+
},
875+
},
876+
},
877+
fetchAZInfosCalls: []fetchAZInfosCall{
878+
{
879+
availabilityZoneIDs: []string{"usw2-az1"},
880+
azInfoByAZID: map[string]ec2sdk.AvailabilityZone{
881+
"usw2-az1": {
882+
ZoneId: awssdk.String("usw2-az1"),
883+
ZoneType: awssdk.String("availability-zone"),
884+
},
885+
},
886+
},
887+
{
888+
availabilityZoneIDs: []string{"usw2-az3"},
889+
azInfoByAZID: map[string]ec2sdk.AvailabilityZone{
890+
"usw2-az3": {
891+
ZoneId: awssdk.String("usw2-az3"),
892+
ZoneType: awssdk.String("availability-zone"),
893+
},
894+
},
895+
},
896+
},
897+
},
898+
args: args{
899+
opts: []SubnetsResolveOption{
900+
WithSubnetsResolveLBType(elbv2model.LoadBalancerTypeNetwork),
901+
WithSubnetsResolveLBScheme(elbv2model.LoadBalancerSchemeInternetFacing),
902+
WithSubnetsClusterTagCheck(false),
903+
},
904+
},
905+
want: []*ec2sdk.Subnet{
906+
{
907+
SubnetId: awssdk.String("subnet-1"),
908+
AvailabilityZone: awssdk.String("us-west-2a"),
909+
AvailabilityZoneId: awssdk.String("usw2-az1"),
910+
VpcId: awssdk.String("vpc-1"),
911+
Tags: []*ec2sdk.Tag{
912+
{
913+
Key: awssdk.String("kubernetes.io/cluster/some-other-cluster"),
914+
Value: awssdk.String("owned"),
915+
},
916+
},
917+
},
918+
{
919+
SubnetId: awssdk.String("subnet-2"),
920+
AvailabilityZone: awssdk.String("us-west-2c"),
921+
AvailabilityZoneId: awssdk.String("usw2-az3"),
922+
VpcId: awssdk.String("vpc-1"),
923+
Tags: []*ec2sdk.Tag{
924+
{
925+
Key: awssdk.String("kubernetes.io/cluster/kube-cluster"),
926+
Value: awssdk.String("owned"),
927+
},
928+
},
929+
},
930+
},
931+
},
816932
{
817933
name: "subnets with multiple cluster tags",
818934
fields: fields{

pkg/service/model_build_load_balancer.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/aws/aws-sdk-go/service/ec2"
1818
"github.com/pkg/errors"
1919
"sigs.k8s.io/aws-load-balancer-controller/pkg/annotations"
20+
"sigs.k8s.io/aws-load-balancer-controller/pkg/config"
2021
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/tracking"
2122
elbv2model "sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2"
2223
"sigs.k8s.io/aws-load-balancer-controller/pkg/networking"
@@ -282,11 +283,13 @@ func (t *defaultModelBuildTask) buildLoadBalancerSubnets(ctx context.Context, sc
282283
networking.WithSubnetsResolveLBType(elbv2model.LoadBalancerTypeNetwork),
283284
networking.WithSubnetsResolveLBScheme(scheme),
284285
networking.WithSubnetsResolveAvailableIPAddressCount(minimalAvailableIPAddressCount),
286+
networking.WithSubnetsClusterTagCheck(t.featureGates.Enabled(config.SubnetsClusterTagCheck)),
285287
)
286288
}
287289
return t.subnetsResolver.ResolveViaDiscovery(ctx,
288290
networking.WithSubnetsResolveLBType(elbv2model.LoadBalancerTypeNetwork),
289291
networking.WithSubnetsResolveLBScheme(scheme),
292+
networking.WithSubnetsClusterTagCheck(t.featureGates.Enabled(config.SubnetsClusterTagCheck)),
290293
)
291294
}
292295

0 commit comments

Comments
 (0)