Skip to content

Commit 4f950a1

Browse files
authored
Add certs discovery (#4159)
1 parent 56299f2 commit 4f950a1

File tree

9 files changed

+285
-40
lines changed

9 files changed

+285
-40
lines changed

controllers/gateway/gateway_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func NewALBGatewayReconciler(routeLoader routeutils.Loader, cloud services.Cloud
6060
func newGatewayReconciler(controllerName string, lbType elbv2model.LoadBalancerType, maxConcurrentReconciles int, gatewayTagPrefix string, finalizer string, routeLoader routeutils.Loader, routeFilter routeutils.LoadRouteFilter, cloud services.Cloud, k8sClient client.Client, eventRecorder record.EventRecorder, controllerConfig config.ControllerConfig, finalizerManager k8s.FinalizerManager, networkingSGReconciler networking.SecurityGroupReconciler, networkingSGManager networking.SecurityGroupManager, elbv2TaggingManager elbv2deploy.TaggingManager, subnetResolver networking.SubnetsResolver, vpcInfoProvider networking.VPCInfoProvider, backendSGProvider networking.BackendSGProvider, sgResolver networking.SecurityGroupResolver, logger logr.Logger, metricsCollector lbcmetrics.MetricCollector, reconcileTracker func(namespaceName types.NamespacedName)) Reconciler {
6161

6262
trackingProvider := tracking.NewDefaultProvider(gatewayTagPrefix, controllerConfig.ClusterName)
63-
modelBuilder := gatewaymodel.NewModelBuilder(subnetResolver, vpcInfoProvider, cloud.VpcID(), lbType, trackingProvider, elbv2TaggingManager, controllerConfig, cloud.EC2(), controllerConfig.FeatureGates, controllerConfig.ClusterName, controllerConfig.DefaultTags, sets.New(controllerConfig.ExternalManagedTags...), controllerConfig.DefaultSSLPolicy, controllerConfig.DefaultTargetType, controllerConfig.DefaultLoadBalancerScheme, backendSGProvider, sgResolver, controllerConfig.EnableBackendSecurityGroup, controllerConfig.DisableRestrictedSGRules, logger)
63+
modelBuilder := gatewaymodel.NewModelBuilder(subnetResolver, vpcInfoProvider, cloud.VpcID(), lbType, trackingProvider, elbv2TaggingManager, controllerConfig, cloud.EC2(), cloud.ACM(), controllerConfig.FeatureGates, controllerConfig.ClusterName, controllerConfig.DefaultTags, sets.New(controllerConfig.ExternalManagedTags...), controllerConfig.DefaultSSLPolicy, controllerConfig.DefaultTargetType, controllerConfig.DefaultLoadBalancerScheme, backendSGProvider, sgResolver, controllerConfig.EnableBackendSecurityGroup, controllerConfig.DisableRestrictedSGRules, controllerConfig.IngressConfig.AllowedCertificateAuthorityARNs, logger)
6464

6565
stackMarshaller := deploy.NewDefaultStackMarshaller()
6666
stackDeployer := deploy.NewDefaultStackDeployer(cloud, k8sClient, networkingSGManager, networkingSGReconciler, elbv2TaggingManager, controllerConfig, gatewayTagPrefix, logger, metricsCollector, controllerName)

pkg/ingress/cert_discovery.go renamed to pkg/certs/cert_discovery.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
package ingress
1+
package certs
22

33
import (
44
"context"
5+
"strings"
6+
"sync"
7+
"time"
8+
59
awssdk "github.com/aws/aws-sdk-go-v2/aws"
610
"github.com/aws/aws-sdk-go-v2/service/acm"
711
acmTypes "github.com/aws/aws-sdk-go-v2/service/acm/types"
@@ -13,9 +17,6 @@ import (
1317
"k8s.io/apimachinery/pkg/util/sets"
1418
"k8s.io/utils/strings/slices"
1519
"sigs.k8s.io/aws-load-balancer-controller/pkg/aws/services"
16-
"strings"
17-
"sync"
18-
"time"
1920
)
2021

2122
const (

pkg/ingress/cert_discovery_mocks.go renamed to pkg/certs/cert_discovery_mocks.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/ingress/cert_discovery_test.go renamed to pkg/certs/cert_discovery_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
package ingress
1+
package certs
22

33
import (
4-
"github.com/stretchr/testify/assert"
54
"testing"
5+
6+
"github.com/stretchr/testify/assert"
67
)
78

89
func Test_acmCertDiscovery_domainMatchesHost(t *testing.T) {

pkg/gateway/model/base_model_builder.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package model
22

33
import (
44
"context"
5+
"strconv"
6+
57
"github.com/go-logr/logr"
68
"github.com/pkg/errors"
79
"k8s.io/apimachinery/pkg/util/sets"
@@ -19,7 +21,6 @@ import (
1921
"sigs.k8s.io/aws-load-balancer-controller/pkg/networking"
2022
"sigs.k8s.io/aws-load-balancer-controller/pkg/shared_constants"
2123
gwv1 "sigs.k8s.io/gateway-api/apis/v1"
22-
"strconv"
2324
)
2425

2526
// Builder builds the model stack for a Gateway resource.
@@ -31,10 +32,10 @@ type Builder interface {
3132
// NewModelBuilder construct a new baseModelBuilder
3233
func NewModelBuilder(subnetsResolver networking.SubnetsResolver,
3334
vpcInfoProvider networking.VPCInfoProvider, vpcID string, loadBalancerType elbv2model.LoadBalancerType, trackingProvider tracking.Provider,
34-
elbv2TaggingManager elbv2deploy.TaggingManager, lbcConfig config.ControllerConfig, ec2Client services.EC2, featureGates config.FeatureGates, clusterName string, defaultTags map[string]string,
35+
elbv2TaggingManager elbv2deploy.TaggingManager, lbcConfig config.ControllerConfig, ec2Client services.EC2, acmClient services.ACM, featureGates config.FeatureGates, clusterName string, defaultTags map[string]string,
3536
externalManagedTags sets.Set[string], defaultSSLPolicy string, defaultTargetType string, defaultLoadBalancerScheme string,
3637
backendSGProvider networking.BackendSGProvider, sgResolver networking.SecurityGroupResolver, enableBackendSG bool,
37-
disableRestrictedSGRules bool, logger logr.Logger) Builder {
38+
disableRestrictedSGRules bool, allowedCAARNs []string, logger logr.Logger) Builder {
3839

3940
gwTagHelper := newTagHelper(sets.New(lbcConfig.ExternalManagedTags...), lbcConfig.DefaultTags)
4041
subnetBuilder := newSubnetModelBuilder(loadBalancerType, trackingProvider, subnetsResolver, elbv2TaggingManager)
@@ -51,6 +52,7 @@ func NewModelBuilder(subnetsResolver networking.SubnetsResolver,
5152
elbv2TaggingManager: elbv2TaggingManager,
5253
featureGates: featureGates,
5354
ec2Client: ec2Client,
55+
acmClient: acmClient,
5456
subnetBuilder: subnetBuilder,
5557
securityGroupBuilder: sgBuilder,
5658
loadBalancerType: loadBalancerType,
@@ -65,6 +67,7 @@ func NewModelBuilder(subnetsResolver networking.SubnetsResolver,
6567

6668
defaultLoadBalancerScheme: elbv2model.LoadBalancerScheme(defaultLoadBalancerScheme),
6769
defaultIPType: elbv2model.IPAddressTypeIPV4,
70+
allowedCAARNs: allowedCAARNs,
6871
}
6972
}
7073

@@ -89,6 +92,8 @@ type baseModelBuilder struct {
8992
defaultTargetType string
9093
disableRestrictedSGRules bool
9194
ec2Client services.EC2
95+
acmClient services.ACM
96+
allowedCAARNs []string
9297
metricsCollector lbcmetrics.MetricCollector
9398
lbBuilder loadBalancerBuilder
9499
gwTagHelper tagHelper
@@ -105,7 +110,7 @@ type baseModelBuilder struct {
105110
func (baseBuilder *baseModelBuilder) Build(ctx context.Context, gw *gwv1.Gateway, lbConf *elbv2gw.LoadBalancerConfiguration, routes map[int32][]routeutils.RouteDescriptor) (core.Stack, *elbv2model.LoadBalancer, bool, error) {
106111
stack := core.NewDefaultStack(core.StackID(k8s.NamespacedName(gw)))
107112
tgBuilder := newTargetGroupBuilder(baseBuilder.clusterName, baseBuilder.vpcID, baseBuilder.gwTagHelper, baseBuilder.loadBalancerType, baseBuilder.disableRestrictedSGRules, baseBuilder.defaultTargetType)
108-
listenerBuilder := newListenerBuilder(baseBuilder.loadBalancerType, tgBuilder, baseBuilder.gwTagHelper, baseBuilder.clusterName, baseBuilder.defaultSSLPolicy, baseBuilder.logger)
113+
listenerBuilder := newListenerBuilder(ctx, baseBuilder.loadBalancerType, tgBuilder, baseBuilder.gwTagHelper, baseBuilder.clusterName, baseBuilder.defaultSSLPolicy, baseBuilder.acmClient, baseBuilder.allowedCAARNs, baseBuilder.logger)
109114
if gw.DeletionTimestamp != nil && !gw.DeletionTimestamp.IsZero() {
110115
if baseBuilder.isDeleteProtected(lbConf) {
111116
return nil, nil, false, errors.Errorf("Unable to delete gateway %+v because deletion protection is enabled.", k8s.NamespacedName(gw))
@@ -151,7 +156,7 @@ func (baseBuilder *baseModelBuilder) Build(ctx context.Context, gw *gwv1.Gateway
151156

152157
lb := elbv2model.NewLoadBalancer(stack, resourceIDLoadBalancer, spec)
153158

154-
if err := listenerBuilder.buildListeners(stack, lb, securityGroups, gw, routes, lbConf); err != nil {
159+
if err := listenerBuilder.buildListeners(ctx, stack, lb, securityGroups, gw, routes, lbConf); err != nil {
155160
return nil, nil, false, err
156161
}
157162

0 commit comments

Comments
 (0)