Skip to content

Commit 195f6a2

Browse files
committed
Enable autodiscovery for ACM using SSL hosts annotation
1 parent e5d625f commit 195f6a2

File tree

4 files changed

+23
-3
lines changed

4 files changed

+23
-3
lines changed

pkg/annotations/constants.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ const (
6363
SvcLBSuffixAccessLogS3BucketName = "aws-load-balancer-access-log-s3-bucket-name"
6464
SvcLBSuffixAccessLogS3BucketPrefix = "aws-load-balancer-access-log-s3-bucket-prefix"
6565
SvcLBSuffixCrossZoneLoadBalancingEnabled = "aws-load-balancer-cross-zone-load-balancing-enabled"
66+
SvcLBSuffixSSLDomains = "aws-load-balancer-ssl-domains"
6667
SvcLBSuffixSSLCertificate = "aws-load-balancer-ssl-cert"
6768
SvcLBSuffixSSLPorts = "aws-load-balancer-ssl-ports"
6869
SvcLBSuffixSSLNegotiationPolicy = "aws-load-balancer-ssl-negotiation-policy"

pkg/ingress/model_builder.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ type defaultModelBuilder struct {
110110
logger logr.Logger
111111
}
112112

113-
// build mode stack for a IngressGroup.
113+
// Build builds mode stack for a IngressGroup.
114114
func (b *defaultModelBuilder) Build(ctx context.Context, ingGroup Group) (core.Stack, *elbv2model.LoadBalancer, []types.NamespacedName, bool, error) {
115115
stack := core.NewDefaultStack(core.StackID(ingGroup.ID))
116116
task := &defaultModelBuildTask{

pkg/service/model_build_listener.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,14 +108,27 @@ func (t *defaultModelBuildTask) buildSSLNegotiationPolicy(_ context.Context) *st
108108
return &t.defaultSSLPolicy
109109
}
110110

111-
func (t *defaultModelBuildTask) buildListenerCertificates(_ context.Context) []elbv2model.Certificate {
111+
func (t *defaultModelBuildTask) buildListenerCertificates(ctx context.Context) []elbv2model.Certificate {
112112
var rawCertificateARNs []string
113+
var rawSSLDomains []string
113114
_ = t.annotationParser.ParseStringSliceAnnotation(annotations.SvcLBSuffixSSLCertificate, &rawCertificateARNs, t.service.Annotations)
115+
_ = t.annotationParser.ParseStringSliceAnnotation(annotations.SvcLBSuffixSSLDomains, &rawSSLDomains, t.service.Annotations)
114116

115117
var certificates []elbv2model.Certificate
116118
for _, cert := range rawCertificateARNs {
117119
certificates = append(certificates, elbv2model.Certificate{CertificateARN: aws.String(cert)})
118120
}
121+
122+
// TODO: Refactoring required
123+
autoDiscoveredCertARNs, err := t.certDiscovery.Discover(ctx, rawSSLDomains)
124+
if err != nil {
125+
return certificates
126+
}
127+
for _, cert := range autoDiscoveredCertARNs {
128+
certificates = append(certificates, elbv2model.Certificate{
129+
CertificateARN: aws.String(cert),
130+
})
131+
}
119132
return certificates
120133
}
121134

pkg/service/model_builder.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package service
22

33
import (
44
"context"
5+
"github.com/go-logr/logr"
6+
"sigs.k8s.io/aws-load-balancer-controller/pkg/aws/services"
7+
"sigs.k8s.io/aws-load-balancer-controller/pkg/ingress"
58
"strconv"
69
"sync"
710

@@ -41,7 +44,7 @@ func NewDefaultModelBuilder(annotationParser annotations.Parser, subnetsResolver
4144
elbv2TaggingManager elbv2deploy.TaggingManager, ec2Client services.EC2, featureGates config.FeatureGates, clusterName string, defaultTags map[string]string,
4245
externalManagedTags []string, defaultSSLPolicy string, defaultTargetType string, enableIPTargetType bool, serviceUtils ServiceUtils,
4346
backendSGProvider networking.BackendSGProvider, sgResolver networking.SecurityGroupResolver, enableBackendSG bool,
44-
disableRestrictedSGRules bool, logger logr.Logger) *defaultModelBuilder {
47+
disableRestrictedSGRules bool, certDiscovery ingress.CertDiscovery, logger logr.Logger) *defaultModelBuilder {
4548
return &defaultModelBuilder{
4649
annotationParser: annotationParser,
4750
subnetsResolver: subnetsResolver,
@@ -50,6 +53,7 @@ func NewDefaultModelBuilder(annotationParser annotations.Parser, subnetsResolver
5053
elbv2TaggingManager: elbv2TaggingManager,
5154
featureGates: featureGates,
5255
serviceUtils: serviceUtils,
56+
certDiscovery: certDiscovery,
5357
clusterName: clusterName,
5458
vpcID: vpcID,
5559
defaultTags: defaultTags,
@@ -78,6 +82,7 @@ type defaultModelBuilder struct {
7882
elbv2TaggingManager elbv2deploy.TaggingManager
7983
featureGates config.FeatureGates
8084
serviceUtils ServiceUtils
85+
certDiscovery ingress.CertDiscovery
8186
ec2Client services.EC2
8287
enableBackendSG bool
8388
disableRestrictedSGRules bool
@@ -165,6 +170,7 @@ type defaultModelBuildTask struct {
165170
featureGates config.FeatureGates
166171
serviceUtils ServiceUtils
167172
enableIPTargetType bool
173+
certDiscovery ingress.CertDiscovery
168174
ec2Client services.EC2
169175
logger logr.Logger
170176

0 commit comments

Comments
 (0)