Skip to content

Commit a5dd7d7

Browse files
committed
[gw api] gateway class reconciler, config generation
1 parent 3149c32 commit a5dd7d7

19 files changed

+1620
-127
lines changed

apis/gateway/v1beta1/loadbalancerconfig_types.go

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@ import (
44
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
55
)
66

7+
// +kubebuilder:validation:Enum=prefer-gateway;prefer-gateway-class
8+
// LoadBalancerConfigMergeMode is the merging behavior defined when both Gateway and GatewayClass have lb configurations. See the individual
9+
// configuration fields for the exact merge behavior applied.
10+
type LoadBalancerConfigMergeMode string
11+
12+
const (
13+
// MergeModePreferGatewayClass when both lb configurations have a field specified, this mode gives precedence to the configuration in the GatewayClass
14+
MergeModePreferGatewayClass LoadBalancerConfigMergeMode = "prefer-gateway-class"
15+
// MergeModePreferGatewayClass when both lb configurations have a field specified, this mode gives precedence to the configuration in the Gateway
16+
MergeModePreferGateway LoadBalancerConfigMergeMode = "prefer-gateway"
17+
)
18+
719
// +kubebuilder:validation:Enum=internal;internet-facing
820
// LoadBalancerScheme is the scheme of your LB
921
//
@@ -44,15 +56,6 @@ type ListenerAttribute struct {
4456
Value string `json:"value"`
4557
}
4658

47-
// AWSTag defines a AWS Tag on resources.
48-
type AWSTag struct {
49-
// The key of the tag.
50-
Key string `json:"key"`
51-
52-
// The value of the tag.
53-
Value string `json:"value"`
54-
}
55-
5659
// SubnetConfiguration defines the subnet settings for a Load Balancer.
5760
type SubnetConfiguration struct {
5861
// identifier [Application LoadBalancer / Network LoadBalancer] name or id for the subnet
@@ -125,7 +128,7 @@ type MutualAuthenticationAttributes struct {
125128
// +optional
126129
IgnoreClientCertificateExpiry *bool `json:"ignoreClientCertificateExpiry,omitempty"`
127130

128-
// The client certificate handling method. Options are off , passthrough or verify
131+
// The client certificate handling method. Options are off, passthrough or verify
129132
Mode MutualAuthenticationMode `json:"mode"`
130133

131134
// The Name or ARN of the trust store.
@@ -165,6 +168,12 @@ type ListenerConfiguration struct {
165168

166169
// LoadBalancerConfigurationSpec defines the desired state of LoadBalancerConfiguration
167170
type LoadBalancerConfigurationSpec struct {
171+
172+
// mergingMode defines the merge behavior when both the Gateway and GatewayClass have a defined LoadBalancerConfiguration.
173+
// This field is only honored for the configuration attached to the GatewayClass.
174+
// +optional
175+
MergingMode *LoadBalancerConfigMergeMode `json:"mergingMode,omitempty"`
176+
168177
// +kubebuilder:validation:MinLength=1
169178
// +kubebuilder:validation:MaxLength=32
170179
// loadBalancerName defines the name of the LB to provision. If unspecified, it will be automatically generated.
@@ -228,15 +237,15 @@ type LoadBalancerConfigurationSpec struct {
228237
// +optional
229238
LoadBalancerAttributes []LoadBalancerAttribute `json:"loadBalancerAttributes,omitempty"`
230239

231-
// Tags defines list of Tags on LB.
240+
// Tags the AWS Tags on all related resources to the gateway.
232241
// +optional
233-
Tags []AWSTag `json:"tags,omitempty"`
242+
Tags *map[string]string `json:"tags,omitempty"`
234243

235244
// EnableICMP [Network LoadBalancer]
236245
// enables the creation of security group rules to the managed security group
237246
// to allow explicit ICMP traffic for Path MTU discovery for IPv4 and dual-stack VPCs
238247
// +optional
239-
EnableICMP bool `json:"enableICMP,omitempty"`
248+
EnableICMP *bool `json:"enableICMP,omitempty"`
240249

241250
// ManageBackendSecurityGroupRules [Application / Network LoadBalancer]
242251
// specifies whether you want the controller to configure security group rules on Node/Pod for traffic access

apis/gateway/v1beta1/targetgroupconfig_types.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,12 @@ const (
139139
)
140140

141141
// +kubebuilder:validation:Enum=none;prefer-route-specific;prefer-default
142-
type MergeMode string
142+
type TargetGroupConfigMergeMode string
143143

144144
const (
145-
MergeModeNone MergeMode = "none"
146-
MergeModePreferRouteSpecific MergeMode = "prefer-route-specific"
147-
MergeModePreferDefault MergeMode = "prefer-default"
145+
MergeModeNone TargetGroupConfigMergeMode = "none"
146+
MergeModePreferRouteSpecific TargetGroupConfigMergeMode = "prefer-route-specific"
147+
MergeModePreferDefault TargetGroupConfigMergeMode = "prefer-default"
148148
)
149149

150150
// TargetGroupConfigurationSpec defines the TargetGroup properties for a route.

apis/gateway/v1beta1/zz_generated.deepcopy.go

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

0 commit comments

Comments
 (0)