Skip to content

Commit 15bea43

Browse files
committed
introduce tg protocol in tgb
1 parent 069140f commit 15bea43

20 files changed

+659
-298
lines changed

apis/elbv2/v1beta1/targetgroupbinding_types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package v1beta1
1919
import (
2020
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2121
"k8s.io/apimachinery/pkg/util/intstr"
22+
"sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2"
2223
)
2324

2425
// +kubebuilder:validation:Enum=instance;ip
@@ -139,6 +140,11 @@ type TargetGroupBindingSpec struct {
139140
// +optional
140141
TargetType *TargetType `json:"targetType,omitempty"`
141142

143+
// targetGroupProtocol is the Protocol of the TargetGroup. If unspecified, it will be automatically inferred.
144+
// +optional
145+
// +kubebuilder:validation:Enum=HTTP;HTTPS;TCP;TLS;UDP;TCP_UDP
146+
TargetGroupProtocol *elbv2.Protocol `json:"targetGroupProtocol,omitempty"`
147+
142148
// serviceRef is a reference to a Kubernetes Service and ServicePort.
143149
ServiceRef ServiceReference `json:"serviceRef"`
144150

apis/elbv2/v1beta1/zz_generated.deepcopy.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/bases/elbv2.k8s.aws_targetgroupbindings.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,17 @@ spec:
421421
targetGroupName:
422422
description: targetGroupName is the Name of the TargetGroup.
423423
type: string
424+
targetGroupProtocol:
425+
description: targetGroupProtocol is the Protocol of the TargetGroup.
426+
If unspecified, it will be automatically inferred.
427+
enum:
428+
- HTTP
429+
- HTTPS
430+
- TCP
431+
- TLS
432+
- UDP
433+
- TCP_UDP
434+
type: string
424435
targetType:
425436
description: targetType is the TargetType of TargetGroup. If unspecified,
426437
it will be automatically inferred.

helm/aws-load-balancer-controller/crds/crds.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,17 @@ spec:
695695
targetGroupName:
696696
description: targetGroupName is the Name of the TargetGroup.
697697
type: string
698+
targetGroupProtocol:
699+
description: targetGroupProtocol is the Protocol of the TargetGroup.
700+
If unspecified, it will be automatically inferred.
701+
enum:
702+
- HTTP
703+
- HTTPS
704+
- TCP
705+
- TLS
706+
- UDP
707+
- TCP_UDP
708+
type: string
698709
targetType:
699710
description: targetType is the TargetType of TargetGroup. If unspecified,
700711
it will be automatically inferred.

pkg/deploy/elbv2/target_group_binding_manager.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
"sigs.k8s.io/aws-load-balancer-controller/pkg/annotations"
1616
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/tracking"
1717
"sigs.k8s.io/aws-load-balancer-controller/pkg/k8s"
18-
elbv2model "sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2"
18+
elbv2model "sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2/k8s"
1919
"sigs.k8s.io/controller-runtime/pkg/client"
2020
"time"
2121
)
@@ -196,9 +196,10 @@ func buildK8sTargetGroupBindingSpec(ctx context.Context, resTGB *elbv2model.Targ
196196
}
197197

198198
k8sTGBSpec := elbv2api.TargetGroupBindingSpec{
199-
TargetGroupARN: tgARN,
200-
TargetType: resTGB.Spec.Template.Spec.TargetType,
201-
ServiceRef: resTGB.Spec.Template.Spec.ServiceRef,
199+
TargetGroupARN: tgARN,
200+
TargetType: resTGB.Spec.Template.Spec.TargetType,
201+
TargetGroupProtocol: resTGB.Spec.Template.Spec.TargetGroupProtocol,
202+
ServiceRef: resTGB.Spec.Template.Spec.ServiceRef,
202203
}
203204

204205
if resTGB.Spec.Template.Spec.Networking != nil {

pkg/deploy/elbv2/target_group_binding_manager_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"sigs.k8s.io/aws-load-balancer-controller/pkg/annotations"
1212
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/tracking"
1313
coremodel "sigs.k8s.io/aws-load-balancer-controller/pkg/model/core"
14-
elbv2model "sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2"
14+
elbv2model "sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2/k8s"
1515
"sigs.k8s.io/aws-load-balancer-controller/pkg/testutils"
1616
"sigs.k8s.io/controller-runtime/pkg/client"
1717
"testing"

pkg/deploy/elbv2/target_group_binding_synthesizer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
elbv2api "sigs.k8s.io/aws-load-balancer-controller/apis/elbv2/v1beta1"
88
"sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/tracking"
99
"sigs.k8s.io/aws-load-balancer-controller/pkg/model/core"
10-
elbv2model "sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2"
10+
elbv2model "sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2/k8s"
1111
"sigs.k8s.io/controller-runtime/pkg/client"
1212
)
1313

pkg/gateway/model/mock_tg_builder.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"sigs.k8s.io/aws-load-balancer-controller/pkg/gateway/routeutils"
77
"sigs.k8s.io/aws-load-balancer-controller/pkg/model/core"
88
elbv2model "sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2"
9+
"sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2/k8s"
910
gwv1 "sigs.k8s.io/gateway-api/apis/v1"
1011
)
1112

@@ -30,7 +31,7 @@ func (m *MockTargetGroupBuilder) buildTargetGroupSpec(gw *gwv1.Gateway, route ro
3031
panic("implement me")
3132
}
3233

33-
func (m *MockTargetGroupBuilder) buildTargetGroupBindingSpec(gw *gwv1.Gateway, tgProps *elbv2gw.TargetGroupProps, tgSpec elbv2model.TargetGroupSpec, nodeSelector *metav1.LabelSelector, backend routeutils.Backend, backendSGIDToken core.StringToken) elbv2model.TargetGroupBindingResourceSpec {
34+
func (m *MockTargetGroupBuilder) buildTargetGroupBindingSpec(gw *gwv1.Gateway, tgProps *elbv2gw.TargetGroupProps, tgSpec elbv2model.TargetGroupSpec, nodeSelector *metav1.LabelSelector, backend routeutils.Backend, backendSGIDToken core.StringToken) k8s.TargetGroupBindingResourceSpec {
3435
//TODO implement me
3536
panic("implement me")
3637
}

pkg/gateway/model/model_build_target_group.go

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,22 @@ import (
1818
"sigs.k8s.io/aws-load-balancer-controller/pkg/k8s"
1919
"sigs.k8s.io/aws-load-balancer-controller/pkg/model/core"
2020
elbv2model "sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2"
21+
k8s2 "sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2/k8s"
2122
"sigs.k8s.io/aws-load-balancer-controller/pkg/shared_constants"
2223
gwv1 "sigs.k8s.io/gateway-api/apis/v1"
2324
"strconv"
2425
)
2526

2627
type buildTargetGroupOutput struct {
2728
targetGroupSpec elbv2model.TargetGroupSpec
28-
bindingSpec elbv2model.TargetGroupBindingResourceSpec
29+
bindingSpec k8s2.TargetGroupBindingResourceSpec
2930
}
3031

3132
type targetGroupBuilder interface {
3233
buildTargetGroup(stack core.Stack,
3334
gw *gwv1.Gateway, lbConfig elbv2gw.LoadBalancerConfiguration, lbIPType elbv2model.IPAddressType, routeDescriptor routeutils.RouteDescriptor, backend routeutils.Backend, backendSGIDToken core.StringToken) (*elbv2model.TargetGroup, error)
3435
buildTargetGroupSpec(gw *gwv1.Gateway, route routeutils.RouteDescriptor, lbConfig elbv2gw.LoadBalancerConfiguration, lbIPType elbv2model.IPAddressType, backend routeutils.Backend, targetGroupProps *elbv2gw.TargetGroupProps) (elbv2model.TargetGroupSpec, error)
35-
buildTargetGroupBindingSpec(gw *gwv1.Gateway, tgProps *elbv2gw.TargetGroupProps, tgSpec elbv2model.TargetGroupSpec, nodeSelector *metav1.LabelSelector, backend routeutils.Backend, backendSGIDToken core.StringToken) elbv2model.TargetGroupBindingResourceSpec
36+
buildTargetGroupBindingSpec(gw *gwv1.Gateway, tgProps *elbv2gw.TargetGroupProps, tgSpec elbv2model.TargetGroupSpec, nodeSelector *metav1.LabelSelector, backend routeutils.Backend, backendSGIDToken core.StringToken) k8s2.TargetGroupBindingResourceSpec
3637
}
3738

3839
type targetGroupBuilderImpl struct {
@@ -118,12 +119,12 @@ func (t *targetGroupBuilderImpl) buildTargetGroup(stack core.Stack,
118119
}
119120
tg := elbv2model.NewTargetGroup(stack, tgResID, tgOut.targetGroupSpec)
120121
tgOut.bindingSpec.Template.Spec.TargetGroupARN = tg.TargetGroupARN()
121-
elbv2model.NewTargetGroupBindingResource(stack, tg.ID(), tgOut.bindingSpec)
122+
k8s2.NewTargetGroupBindingResource(stack, tg.ID(), tgOut.bindingSpec)
122123
t.tgByResID[tgResID] = tg
123124
return tg, nil
124125
}
125126

126-
func (builder *targetGroupBuilderImpl) buildTargetGroupBindingSpec(gw *gwv1.Gateway, tgProps *elbv2gw.TargetGroupProps, tgSpec elbv2model.TargetGroupSpec, nodeSelector *metav1.LabelSelector, backend routeutils.Backend, backendSGIDToken core.StringToken) elbv2model.TargetGroupBindingResourceSpec {
127+
func (builder *targetGroupBuilderImpl) buildTargetGroupBindingSpec(gw *gwv1.Gateway, tgProps *elbv2gw.TargetGroupProps, tgSpec elbv2model.TargetGroupSpec, nodeSelector *metav1.LabelSelector, backend routeutils.Backend, backendSGIDToken core.StringToken) k8s2.TargetGroupBindingResourceSpec {
127128
targetType := elbv2api.TargetType(tgSpec.TargetType)
128129
targetPort := backend.ServicePort.TargetPort
129130
if targetType == elbv2api.TargetTypeInstance {
@@ -150,15 +151,15 @@ func (builder *targetGroupBuilderImpl) buildTargetGroupBindingSpec(gw *gwv1.Gate
150151
}
151152
}
152153

153-
return elbv2model.TargetGroupBindingResourceSpec{
154-
Template: elbv2model.TargetGroupBindingTemplate{
154+
return k8s2.TargetGroupBindingResourceSpec{
155+
Template: k8s2.TargetGroupBindingTemplate{
155156
ObjectMeta: metav1.ObjectMeta{
156157
Namespace: backend.Service.Namespace,
157158
Name: tgSpec.Name,
158159
Annotations: annotations,
159160
Labels: labels,
160161
},
161-
Spec: elbv2model.TargetGroupBindingSpec{
162+
Spec: k8s2.TargetGroupBindingSpec{
162163
TargetGroupARN: nil, // This should get filled in later!
163164
TargetType: &targetType,
164165
ServiceRef: elbv2api.ServiceReference{
@@ -170,12 +171,13 @@ func (builder *targetGroupBuilderImpl) buildTargetGroupBindingSpec(gw *gwv1.Gate
170171
IPAddressType: elbv2api.TargetGroupIPAddressType(tgSpec.IPAddressType),
171172
VpcID: builder.vpcID,
172173
MultiClusterTargetGroup: multiClusterEnabled,
174+
TargetGroupProtocol: &tgSpec.Protocol,
173175
},
174176
},
175177
}
176178
}
177179

178-
func (builder *targetGroupBuilderImpl) buildTargetGroupBindingNetworking(targetPort intstr.IntOrString, healthCheckPort intstr.IntOrString, tgProtocol elbv2model.Protocol, backendSGIDToken core.StringToken) *elbv2model.TargetGroupBindingNetworking {
180+
func (builder *targetGroupBuilderImpl) buildTargetGroupBindingNetworking(targetPort intstr.IntOrString, healthCheckPort intstr.IntOrString, tgProtocol elbv2model.Protocol, backendSGIDToken core.StringToken) *k8s2.TargetGroupBindingNetworking {
179181
if backendSGIDToken == nil {
180182
return nil
181183
}
@@ -199,12 +201,12 @@ func (builder *targetGroupBuilderImpl) buildTargetGroupBindingNetworking(targetP
199201
})
200202
}
201203

202-
return &elbv2model.TargetGroupBindingNetworking{
203-
Ingress: []elbv2model.NetworkingIngressRule{
204+
return &k8s2.TargetGroupBindingNetworking{
205+
Ingress: []k8s2.NetworkingIngressRule{
204206
{
205-
From: []elbv2model.NetworkingPeer{
207+
From: []k8s2.NetworkingPeer{
206208
{
207-
SecurityGroup: &elbv2model.SecurityGroup{
209+
SecurityGroup: &k8s2.SecurityGroup{
208210
GroupID: backendSGIDToken,
209211
},
210212
},
@@ -241,20 +243,20 @@ func (builder *targetGroupBuilderImpl) buildTargetGroupBindingNetworking(targetP
241243
})
242244
}
243245

244-
var networkingRules []elbv2model.NetworkingIngressRule
246+
var networkingRules []k8s2.NetworkingIngressRule
245247
for _, port := range networkingPorts {
246-
networkingRules = append(networkingRules, elbv2model.NetworkingIngressRule{
247-
From: []elbv2model.NetworkingPeer{
248+
networkingRules = append(networkingRules, k8s2.NetworkingIngressRule{
249+
From: []k8s2.NetworkingPeer{
248250
{
249-
SecurityGroup: &elbv2model.SecurityGroup{
251+
SecurityGroup: &k8s2.SecurityGroup{
250252
GroupID: backendSGIDToken,
251253
},
252254
},
253255
},
254256
Ports: []elbv2api.NetworkingPort{port},
255257
})
256258
}
257-
return &elbv2model.TargetGroupBindingNetworking{
259+
return &k8s2.TargetGroupBindingNetworking{
258260
Ingress: networkingRules,
259261
}
260262
}

0 commit comments

Comments
 (0)