@@ -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.
5760type 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
167170type 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
0 commit comments