From ffb8c00c0656d67aaf68e24e173081a8700aea5b Mon Sep 17 00:00:00 2001 From: Dave Protasowski Date: Sun, 13 Apr 2025 16:42:25 -0400 Subject: [PATCH 01/11] set proper min/max value for listenerentry.port We had to drop the use of the PortNumber type because of limitations with overriding min max using kubebuilder annotations --- apisx/v1alpha1/xlistenerset_types.go | 7 ++++++- applyconfiguration/apisx/v1alpha1/listenerentry.go | 4 ++-- .../gateway.networking.x-k8s.io_xlistenersets.yaml | 2 +- geps/gep-1713/index.md | 5 ++++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/apisx/v1alpha1/xlistenerset_types.go b/apisx/v1alpha1/xlistenerset_types.go index 529b7f3508..bb06fbf424 100644 --- a/apisx/v1alpha1/xlistenerset_types.go +++ b/apisx/v1alpha1/xlistenerset_types.go @@ -127,7 +127,12 @@ type ListenerEntry struct { // Port is the network port. Multiple listeners may use the // same port, subject to the Listener compatibility rules. - Port PortNumber `json:"port"` + // + // +optional + // + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Maximum=65535 + Port int32 `json:"port,omitempty"` // Protocol specifies the network protocol this listener expects to receive. Protocol ProtocolType `json:"protocol"` diff --git a/applyconfiguration/apisx/v1alpha1/listenerentry.go b/applyconfiguration/apisx/v1alpha1/listenerentry.go index e6396bf199..9da13afce1 100644 --- a/applyconfiguration/apisx/v1alpha1/listenerentry.go +++ b/applyconfiguration/apisx/v1alpha1/listenerentry.go @@ -28,7 +28,7 @@ import ( type ListenerEntryApplyConfiguration struct { Name *v1.SectionName `json:"name,omitempty"` Hostname *v1.Hostname `json:"hostname,omitempty"` - Port *v1.PortNumber `json:"port,omitempty"` + Port *int32 `json:"port,omitempty"` Protocol *v1.ProtocolType `json:"protocol,omitempty"` TLS *apisv1.GatewayTLSConfigApplyConfiguration `json:"tls,omitempty"` AllowedRoutes *apisv1.AllowedRoutesApplyConfiguration `json:"allowedRoutes,omitempty"` @@ -59,7 +59,7 @@ func (b *ListenerEntryApplyConfiguration) WithHostname(value v1.Hostname) *Liste // WithPort sets the Port field in the declarative configuration to the given value // and returns the receiver, so that objects can be built by chaining "With" function invocations. // If called multiple times, the Port field is set to the value of the last call. -func (b *ListenerEntryApplyConfiguration) WithPort(value v1.PortNumber) *ListenerEntryApplyConfiguration { +func (b *ListenerEntryApplyConfiguration) WithPort(value int32) *ListenerEntryApplyConfiguration { b.Port = &value return b } diff --git a/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml b/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml index d370a07373..56ac4e3361 100644 --- a/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml +++ b/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml @@ -276,7 +276,7 @@ spec: same port, subject to the Listener compatibility rules. format: int32 maximum: 65535 - minimum: 1 + minimum: 0 type: integer protocol: description: Protocol specifies the network protocol this listener diff --git a/geps/gep-1713/index.md b/geps/gep-1713/index.md index f51f044dda..023c207c76 100644 --- a/geps/gep-1713/index.md +++ b/geps/gep-1713/index.md @@ -172,7 +172,10 @@ type ListenerEntry struct { // Support: Core // // +optional - Port *PortNumber `json:"port,omitempty"` + // + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Maximum=65535 + Port int32 `json:"port,omitempty"` // Protocol specifies the network protocol this listener expects to receive. // From 47793aaf5887cea698f02aca877db1742d6d808d Mon Sep 17 00:00:00 2001 From: Dave Protasowski Date: Mon, 14 Apr 2025 18:32:52 -0400 Subject: [PATCH 02/11] adjust kubebuilder annotations for PortNumber to accomodate ListenerSet changes --- apis/v1/gateway_types.go | 3 +++ apis/v1/httproute_types.go | 3 +++ apis/v1/shared_types.go | 6 +++--- apis/v1alpha2/shared_types.go | 3 --- apis/v1beta1/shared_types.go | 3 --- apisx/v1alpha1/xlistenerset_types.go | 2 +- applyconfiguration/apisx/v1alpha1/listenerentry.go | 4 ++-- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apis/v1/gateway_types.go b/apis/v1/gateway_types.go index 3e1ec4c7ea..febde8c7bc 100644 --- a/apis/v1/gateway_types.go +++ b/apis/v1/gateway_types.go @@ -390,6 +390,9 @@ type Listener struct { // same port, subject to the Listener compatibility rules. // // Support: Core + // + // +kubebuilder:validation:Minimum=1 + // +kubebuilder:validation:Maximum=65535 Port PortNumber `json:"port"` // Protocol specifies the network protocol this listener expects to receive. diff --git a/apis/v1/httproute_types.go b/apis/v1/httproute_types.go index 6131d70b7b..21304aa518 100644 --- a/apis/v1/httproute_types.go +++ b/apis/v1/httproute_types.go @@ -1209,6 +1209,9 @@ type HTTPRequestRedirectFilter struct { // Support: Extended // // +optional + // + // +kubebuilder:validation:Minimum=1 + // +kubebuilder:validation:Maximum=65535 Port *PortNumber `json:"port,omitempty"` // StatusCode is the HTTP status code to be used in response. diff --git a/apis/v1/shared_types.go b/apis/v1/shared_types.go index e059b98145..586eb916b8 100644 --- a/apis/v1/shared_types.go +++ b/apis/v1/shared_types.go @@ -148,6 +148,9 @@ type ParentReference struct { // Support: Extended // // +optional + // + // +kubebuilder:validation:Minimum=1 + // +kubebuilder:validation:Maximum=65535 Port *PortNumber `json:"port,omitempty"` } @@ -227,9 +230,6 @@ type CommonRouteSpec struct { } // PortNumber defines a network port. -// -// +kubebuilder:validation:Minimum=1 -// +kubebuilder:validation:Maximum=65535 type PortNumber int32 // BackendRef defines how a Route should forward a request to a Kubernetes diff --git a/apis/v1alpha2/shared_types.go b/apis/v1alpha2/shared_types.go index 2fb84d5f3b..3d2f787909 100644 --- a/apis/v1alpha2/shared_types.go +++ b/apis/v1alpha2/shared_types.go @@ -40,9 +40,6 @@ type ParentReference = v1.ParentReference type CommonRouteSpec = v1.CommonRouteSpec // PortNumber defines a network port. -// -// +kubebuilder:validation:Minimum=1 -// +kubebuilder:validation:Maximum=65535 type PortNumber = v1.PortNumber // BackendRef defines how a Route should forward a request to a Kubernetes diff --git a/apis/v1beta1/shared_types.go b/apis/v1beta1/shared_types.go index 3dbcc280fc..ce1c430649 100644 --- a/apis/v1beta1/shared_types.go +++ b/apis/v1beta1/shared_types.go @@ -40,9 +40,6 @@ type ParentReference = v1.ParentReference type CommonRouteSpec = v1.CommonRouteSpec // PortNumber defines a network port. -// -// +kubebuilder:validation:Minimum=1 -// +kubebuilder:validation:Maximum=65535 type PortNumber = v1.PortNumber // BackendRef defines how a Route should forward a request to a Kubernetes diff --git a/apisx/v1alpha1/xlistenerset_types.go b/apisx/v1alpha1/xlistenerset_types.go index bb06fbf424..b1fe991528 100644 --- a/apisx/v1alpha1/xlistenerset_types.go +++ b/apisx/v1alpha1/xlistenerset_types.go @@ -132,7 +132,7 @@ type ListenerEntry struct { // // +kubebuilder:validation:Minimum=0 // +kubebuilder:validation:Maximum=65535 - Port int32 `json:"port,omitempty"` + Port PortNumber `json:"port,omitempty"` // Protocol specifies the network protocol this listener expects to receive. Protocol ProtocolType `json:"protocol"` diff --git a/applyconfiguration/apisx/v1alpha1/listenerentry.go b/applyconfiguration/apisx/v1alpha1/listenerentry.go index 9da13afce1..e6396bf199 100644 --- a/applyconfiguration/apisx/v1alpha1/listenerentry.go +++ b/applyconfiguration/apisx/v1alpha1/listenerentry.go @@ -28,7 +28,7 @@ import ( type ListenerEntryApplyConfiguration struct { Name *v1.SectionName `json:"name,omitempty"` Hostname *v1.Hostname `json:"hostname,omitempty"` - Port *int32 `json:"port,omitempty"` + Port *v1.PortNumber `json:"port,omitempty"` Protocol *v1.ProtocolType `json:"protocol,omitempty"` TLS *apisv1.GatewayTLSConfigApplyConfiguration `json:"tls,omitempty"` AllowedRoutes *apisv1.AllowedRoutesApplyConfiguration `json:"allowedRoutes,omitempty"` @@ -59,7 +59,7 @@ func (b *ListenerEntryApplyConfiguration) WithHostname(value v1.Hostname) *Liste // WithPort sets the Port field in the declarative configuration to the given value // and returns the receiver, so that objects can be built by chaining "With" function invocations. // If called multiple times, the Port field is set to the value of the last call. -func (b *ListenerEntryApplyConfiguration) WithPort(value int32) *ListenerEntryApplyConfiguration { +func (b *ListenerEntryApplyConfiguration) WithPort(value v1.PortNumber) *ListenerEntryApplyConfiguration { b.Port = &value return b } From 4d659d8c1a8471567d12b67f0ce1d74eee14c36f Mon Sep 17 00:00:00 2001 From: Dave Protasowski Date: Mon, 14 Apr 2025 18:42:23 -0400 Subject: [PATCH 03/11] add constraints to listenerset port number in status --- apisx/v1alpha1/xlistenerset_types.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apisx/v1alpha1/xlistenerset_types.go b/apisx/v1alpha1/xlistenerset_types.go index b1fe991528..19ed050db8 100644 --- a/apisx/v1alpha1/xlistenerset_types.go +++ b/apisx/v1alpha1/xlistenerset_types.go @@ -213,6 +213,9 @@ type ListenerEntryStatus struct { Name SectionName `json:"name"` // Port is the network port the listener is configured to listen on. + // + // +kubebuilder:validation:Minimum=1 + // +kubebuilder:validation:Maximum=65535 Port PortNumber `json:"port"` // SupportedKinds is the list indicating the Kinds supported by this From 49991a71b98175690bab5f850147c7a3167e33c1 Mon Sep 17 00:00:00 2001 From: Dave Protasowski Date: Wed, 16 Apr 2025 23:26:47 -0400 Subject: [PATCH 04/11] make generate --- ....networking.k8s.io_backendtlspolicies.yaml | 2 -- .../gateway.networking.k8s.io_gateways.yaml | 4 --- .../gateway.networking.k8s.io_grpcroutes.yaml | 10 ------- .../gateway.networking.k8s.io_httproutes.yaml | 28 ------------------- .../gateway.networking.k8s.io_tcproutes.yaml | 6 ---- .../gateway.networking.k8s.io_tlsroutes.yaml | 6 ---- .../gateway.networking.k8s.io_udproutes.yaml | 6 ---- ...king.x-k8s.io_xbackendtrafficpolicies.yaml | 2 -- ...way.networking.x-k8s.io_xlistenersets.yaml | 4 --- .../gateway.networking.k8s.io_gateways.yaml | 4 --- .../gateway.networking.k8s.io_grpcroutes.yaml | 10 ------- .../gateway.networking.k8s.io_httproutes.yaml | 28 ------------------- 12 files changed, 110 deletions(-) diff --git a/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml b/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml index d812b64621..45f4aff40d 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml @@ -504,8 +504,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml b/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml index b88a6c7f31..190e920272 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml @@ -782,8 +782,6 @@ spec: Support: Core format: int32 - maximum: 65535 - minimum: 1 type: integer protocol: description: |- @@ -2120,8 +2118,6 @@ spec: Support: Core format: int32 - maximum: 65535 - minimum: 1 type: integer protocol: description: |- diff --git a/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml index 8efb5867b7..cba112442f 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml @@ -325,8 +325,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- @@ -729,8 +727,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer required: - name @@ -1048,8 +1044,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer weight: default: 1 @@ -1378,8 +1372,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer required: - name @@ -2159,8 +2151,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml index 050ba3277d..7274d993f7 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml @@ -305,8 +305,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- @@ -1004,8 +1002,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer required: - name @@ -1169,8 +1165,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer scheme: description: |- @@ -1604,8 +1598,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer weight: default: 1 @@ -2229,8 +2221,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer required: - name @@ -2394,8 +2384,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer scheme: description: |- @@ -3592,8 +3580,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- @@ -3931,8 +3917,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- @@ -4630,8 +4614,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer required: - name @@ -4795,8 +4777,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer scheme: description: |- @@ -5230,8 +5210,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer weight: default: 1 @@ -5855,8 +5833,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer required: - name @@ -6020,8 +5996,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer scheme: description: |- @@ -7218,8 +7192,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml index d780b71a6d..9e6fa78e04 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml @@ -224,8 +224,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- @@ -393,8 +391,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer weight: default: 1 @@ -672,8 +668,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml index 6379a3b10e..193154dedd 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml @@ -284,8 +284,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- @@ -456,8 +454,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer weight: default: 1 @@ -735,8 +731,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml index e05d726d01..2f42c0a1d0 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml @@ -224,8 +224,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- @@ -393,8 +391,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer weight: default: 1 @@ -672,8 +668,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.x-k8s.io_xbackendtrafficpolicies.yaml b/config/crd/experimental/gateway.networking.x-k8s.io_xbackendtrafficpolicies.yaml index 6eaa56d254..f536d1edb2 100644 --- a/config/crd/experimental/gateway.networking.x-k8s.io_xbackendtrafficpolicies.yaml +++ b/config/crd/experimental/gateway.networking.x-k8s.io_xbackendtrafficpolicies.yaml @@ -462,8 +462,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml b/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml index 56ac4e3361..8c8870fd38 100644 --- a/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml +++ b/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml @@ -275,8 +275,6 @@ spec: Port is the network port. Multiple listeners may use the same port, subject to the Listener compatibility rules. format: int32 - maximum: 65535 - minimum: 0 type: integer protocol: description: Protocol specifies the network protocol this listener @@ -779,8 +777,6 @@ spec: description: Port is the network port the listener is configured to listen on. format: int32 - maximum: 65535 - minimum: 1 type: integer supportedKinds: description: |- diff --git a/config/crd/standard/gateway.networking.k8s.io_gateways.yaml b/config/crd/standard/gateway.networking.k8s.io_gateways.yaml index f5f91e0203..834f6d7522 100644 --- a/config/crd/standard/gateway.networking.k8s.io_gateways.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_gateways.yaml @@ -637,8 +637,6 @@ spec: Support: Core format: int32 - maximum: 65535 - minimum: 1 type: integer protocol: description: |- @@ -1743,8 +1741,6 @@ spec: Support: Core format: int32 - maximum: 65535 - minimum: 1 type: integer protocol: description: |- diff --git a/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml b/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml index 4f18905f6d..3b2f96daba 100644 --- a/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml @@ -296,8 +296,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- @@ -682,8 +680,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer required: - name @@ -1001,8 +997,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer weight: default: 1 @@ -1331,8 +1325,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer required: - name @@ -1993,8 +1985,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml b/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml index a8df425088..1032be94bd 100644 --- a/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml @@ -276,8 +276,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- @@ -674,8 +672,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer required: - name @@ -839,8 +835,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer scheme: description: |- @@ -1268,8 +1262,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer weight: default: 1 @@ -1610,8 +1602,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer required: - name @@ -1775,8 +1765,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer scheme: description: |- @@ -2761,8 +2749,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- @@ -3071,8 +3057,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- @@ -3469,8 +3453,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer required: - name @@ -3634,8 +3616,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer scheme: description: |- @@ -4063,8 +4043,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer weight: default: 1 @@ -4405,8 +4383,6 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 - maximum: 65535 - minimum: 1 type: integer required: - name @@ -4570,8 +4546,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer scheme: description: |- @@ -5556,8 +5530,6 @@ spec: Support: Extended format: int32 - maximum: 65535 - minimum: 1 type: integer sectionName: description: |- From 6228c0b3464bb554b9761dea3aedd94dd595b49a Mon Sep 17 00:00:00 2001 From: Dave Protasowski Date: Thu, 17 Apr 2025 01:01:14 -0400 Subject: [PATCH 05/11] override min/max markers when generating crds to avoid kubebuilder bug --- ....networking.k8s.io_backendtlspolicies.yaml | 2 + .../gateway.networking.k8s.io_gateways.yaml | 4 ++ .../gateway.networking.k8s.io_grpcroutes.yaml | 4 ++ .../gateway.networking.k8s.io_httproutes.yaml | 16 +++++++ .../gateway.networking.k8s.io_tcproutes.yaml | 4 ++ .../gateway.networking.k8s.io_tlsroutes.yaml | 4 ++ .../gateway.networking.k8s.io_udproutes.yaml | 4 ++ ...king.x-k8s.io_xbackendtrafficpolicies.yaml | 2 + ...way.networking.x-k8s.io_xlistenersets.yaml | 4 ++ .../gateway.networking.k8s.io_gateways.yaml | 4 ++ .../gateway.networking.k8s.io_grpcroutes.yaml | 4 ++ .../gateway.networking.k8s.io_httproutes.yaml | 16 +++++++ pkg/generator/main.go | 2 + pkg/generator/markers.go | 45 +++++++++++++++++++ 14 files changed, 115 insertions(+) create mode 100644 pkg/generator/markers.go diff --git a/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml b/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml index 45f4aff40d..d812b64621 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml @@ -504,6 +504,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml b/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml index 190e920272..b88a6c7f31 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml @@ -782,6 +782,8 @@ spec: Support: Core format: int32 + maximum: 65535 + minimum: 1 type: integer protocol: description: |- @@ -2118,6 +2120,8 @@ spec: Support: Core format: int32 + maximum: 65535 + minimum: 1 type: integer protocol: description: |- diff --git a/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml index cba112442f..aab6c9dddc 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml @@ -325,6 +325,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- @@ -2151,6 +2153,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml index 7274d993f7..db85816ba6 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml @@ -305,6 +305,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- @@ -1165,6 +1167,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer scheme: description: |- @@ -2384,6 +2388,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer scheme: description: |- @@ -3580,6 +3586,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- @@ -3917,6 +3925,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- @@ -4777,6 +4787,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer scheme: description: |- @@ -5996,6 +6008,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer scheme: description: |- @@ -7192,6 +7206,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml index 9e6fa78e04..6de1f4f4aa 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml @@ -224,6 +224,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- @@ -668,6 +670,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml index 193154dedd..5f8c4738e4 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml @@ -284,6 +284,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- @@ -731,6 +733,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml index 2f42c0a1d0..f579816a73 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml @@ -224,6 +224,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- @@ -668,6 +670,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.x-k8s.io_xbackendtrafficpolicies.yaml b/config/crd/experimental/gateway.networking.x-k8s.io_xbackendtrafficpolicies.yaml index f536d1edb2..6eaa56d254 100644 --- a/config/crd/experimental/gateway.networking.x-k8s.io_xbackendtrafficpolicies.yaml +++ b/config/crd/experimental/gateway.networking.x-k8s.io_xbackendtrafficpolicies.yaml @@ -462,6 +462,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml b/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml index 8c8870fd38..56ac4e3361 100644 --- a/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml +++ b/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml @@ -275,6 +275,8 @@ spec: Port is the network port. Multiple listeners may use the same port, subject to the Listener compatibility rules. format: int32 + maximum: 65535 + minimum: 0 type: integer protocol: description: Protocol specifies the network protocol this listener @@ -777,6 +779,8 @@ spec: description: Port is the network port the listener is configured to listen on. format: int32 + maximum: 65535 + minimum: 1 type: integer supportedKinds: description: |- diff --git a/config/crd/standard/gateway.networking.k8s.io_gateways.yaml b/config/crd/standard/gateway.networking.k8s.io_gateways.yaml index 834f6d7522..f5f91e0203 100644 --- a/config/crd/standard/gateway.networking.k8s.io_gateways.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_gateways.yaml @@ -637,6 +637,8 @@ spec: Support: Core format: int32 + maximum: 65535 + minimum: 1 type: integer protocol: description: |- @@ -1741,6 +1743,8 @@ spec: Support: Core format: int32 + maximum: 65535 + minimum: 1 type: integer protocol: description: |- diff --git a/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml b/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml index 3b2f96daba..648c0f1cd0 100644 --- a/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml @@ -296,6 +296,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- @@ -1985,6 +1987,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- diff --git a/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml b/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml index 1032be94bd..0f6942f0dc 100644 --- a/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml @@ -276,6 +276,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- @@ -835,6 +837,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer scheme: description: |- @@ -1765,6 +1769,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer scheme: description: |- @@ -2749,6 +2755,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- @@ -3057,6 +3065,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- @@ -3616,6 +3626,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer scheme: description: |- @@ -4546,6 +4558,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer scheme: description: |- @@ -5530,6 +5544,8 @@ spec: Support: Extended format: int32 + maximum: 65535 + minimum: 1 type: integer sectionName: description: |- diff --git a/pkg/generator/main.go b/pkg/generator/main.go index dc170b8823..1149e1a902 100644 --- a/pkg/generator/main.go +++ b/pkg/generator/main.go @@ -69,6 +69,8 @@ func main() { log.Fatalf("failed to register markers: %s", err) } + registerMarkerOverrides(parser.Collector.Registry) + crd.AddKnownTypes(parser) for _, r := range roots { parser.NeedPackage(r) diff --git a/pkg/generator/markers.go b/pkg/generator/markers.go new file mode 100644 index 0000000000..b8406f1ab3 --- /dev/null +++ b/pkg/generator/markers.go @@ -0,0 +1,45 @@ +package main + +import ( + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "sigs.k8s.io/controller-tools/pkg/markers" +) + +type Minimum float64 + +func (m Minimum) Value() float64 { + return float64(m) +} +func (m Minimum) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + val := m.Value() + schema.Minimum = &val + return nil +} + +type Maximum float64 + +func (m Maximum) Value() float64 { + return float64(m) +} +func (m Maximum) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + val := m.Value() + schema.Maximum = &val + return nil +} + +// kubebuilder Min Max markers are broken with type aliases +func registerMarkerOverrides(into *markers.Registry) { + min, _ := markers.MakeDefinition( + "kubebuilder:validation:Minimum", + markers.DescribesField, + Minimum(0), + ) + + max, _ := markers.MakeDefinition( + "kubebuilder:validation:Maximum", + markers.DescribesField, + Maximum(0), + ) + into.Register(min) + into.Register(max) +} From 6cedab55e125ba5608ae0ef92a8c8535b2788c12 Mon Sep 17 00:00:00 2001 From: Dave Protasowski Date: Thu, 17 Apr 2025 01:08:17 -0400 Subject: [PATCH 06/11] add missing object reference validation --- apis/v1/object_reference_types.go | 2 ++ .../gateway.networking.k8s.io_grpcroutes.yaml | 6 ++++++ .../gateway.networking.k8s.io_httproutes.yaml | 12 ++++++++++++ .../gateway.networking.k8s.io_tcproutes.yaml | 2 ++ .../gateway.networking.k8s.io_tlsroutes.yaml | 2 ++ .../gateway.networking.k8s.io_udproutes.yaml | 2 ++ .../gateway.networking.k8s.io_grpcroutes.yaml | 6 ++++++ .../gateway.networking.k8s.io_httproutes.yaml | 12 ++++++++++++ 8 files changed, 44 insertions(+) diff --git a/apis/v1/object_reference_types.go b/apis/v1/object_reference_types.go index dd507b2136..0b254b367e 100644 --- a/apis/v1/object_reference_types.go +++ b/apis/v1/object_reference_types.go @@ -143,6 +143,8 @@ type BackendObjectReference struct { // resource or this field. // // +optional + // +kubebuilder:validation:Minimum=1 + // +kubebuilder:validation:Maximum=65535 Port *PortNumber `json:"port,omitempty"` } diff --git a/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml index aab6c9dddc..8efb5867b7 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml @@ -729,6 +729,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer required: - name @@ -1046,6 +1048,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer weight: default: 1 @@ -1374,6 +1378,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer required: - name diff --git a/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml index db85816ba6..050ba3277d 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml @@ -1004,6 +1004,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer required: - name @@ -1602,6 +1604,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer weight: default: 1 @@ -2225,6 +2229,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer required: - name @@ -4624,6 +4630,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer required: - name @@ -5222,6 +5230,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer weight: default: 1 @@ -5845,6 +5855,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer required: - name diff --git a/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml index 6de1f4f4aa..d780b71a6d 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml @@ -393,6 +393,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer weight: default: 1 diff --git a/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml index 5f8c4738e4..6379a3b10e 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml @@ -456,6 +456,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer weight: default: 1 diff --git a/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml index f579816a73..e05d726d01 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml @@ -393,6 +393,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer weight: default: 1 diff --git a/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml b/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml index 648c0f1cd0..4f18905f6d 100644 --- a/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml @@ -682,6 +682,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer required: - name @@ -999,6 +1001,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer weight: default: 1 @@ -1327,6 +1331,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer required: - name diff --git a/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml b/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml index 0f6942f0dc..a8df425088 100644 --- a/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml @@ -674,6 +674,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer required: - name @@ -1266,6 +1268,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer weight: default: 1 @@ -1606,6 +1610,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer required: - name @@ -3463,6 +3469,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer required: - name @@ -4055,6 +4063,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer weight: default: 1 @@ -4395,6 +4405,8 @@ spec: For other resources, destination port might be derived from the referent resource or this field. format: int32 + maximum: 65535 + minimum: 1 type: integer required: - name From f5232993759557ac5d7fec9659010dcfbfcae1d2 Mon Sep 17 00:00:00 2001 From: Dave Protasowski Date: Thu, 17 Apr 2025 01:32:59 -0400 Subject: [PATCH 07/11] address linter warnings --- pkg/generator/markers.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pkg/generator/markers.go b/pkg/generator/markers.go index b8406f1ab3..5d37a6c043 100644 --- a/pkg/generator/markers.go +++ b/pkg/generator/markers.go @@ -10,6 +10,8 @@ type Minimum float64 func (m Minimum) Value() float64 { return float64(m) } + +//nolint:unparam func (m Minimum) ApplyToSchema(schema *apiext.JSONSchemaProps) error { val := m.Value() schema.Minimum = &val @@ -21,6 +23,8 @@ type Maximum float64 func (m Maximum) Value() float64 { return float64(m) } + +//nolint:unparam func (m Maximum) ApplyToSchema(schema *apiext.JSONSchemaProps) error { val := m.Value() schema.Maximum = &val @@ -29,17 +33,18 @@ func (m Maximum) ApplyToSchema(schema *apiext.JSONSchemaProps) error { // kubebuilder Min Max markers are broken with type aliases func registerMarkerOverrides(into *markers.Registry) { - min, _ := markers.MakeDefinition( + minMarker, _ := markers.MakeDefinition( "kubebuilder:validation:Minimum", markers.DescribesField, Minimum(0), ) - max, _ := markers.MakeDefinition( + maxMarker, _ := markers.MakeDefinition( "kubebuilder:validation:Maximum", markers.DescribesField, Maximum(0), ) - into.Register(min) - into.Register(max) + + into.Register(minMarker) //nolint:errcheck + into.Register(maxMarker) //nolint:errcheck } From 2797f27e6968744b33cafb9d2c66a10619e9a431 Mon Sep 17 00:00:00 2001 From: Dave Protasowski Date: Thu, 17 Apr 2025 01:41:28 -0400 Subject: [PATCH 08/11] make generate --- apisx/v1alpha1/xlistenerset_types.go | 1 + applyconfiguration/internal/internal.go | 1 - .../gateway.networking.x-k8s.io_xlistenersets.yaml | 1 - pkg/generated/openapi/zz_generated.openapi.go | 3 +-- 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/apisx/v1alpha1/xlistenerset_types.go b/apisx/v1alpha1/xlistenerset_types.go index 19ed050db8..03711288d4 100644 --- a/apisx/v1alpha1/xlistenerset_types.go +++ b/apisx/v1alpha1/xlistenerset_types.go @@ -130,6 +130,7 @@ type ListenerEntry struct { // // +optional // + // +kubebuilder:validation:Default=0 // +kubebuilder:validation:Minimum=0 // +kubebuilder:validation:Maximum=65535 Port PortNumber `json:"port,omitempty"` diff --git a/applyconfiguration/internal/internal.go b/applyconfiguration/internal/internal.go index 7a69ee3876..58971ef5e2 100644 --- a/applyconfiguration/internal/internal.go +++ b/applyconfiguration/internal/internal.go @@ -1753,7 +1753,6 @@ var schemaYAML = typed.YAMLObject(`types: - name: port type: scalar: numeric - default: 0 - name: protocol type: scalar: string diff --git a/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml b/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml index 56ac4e3361..e6a4f736c5 100644 --- a/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml +++ b/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml @@ -514,7 +514,6 @@ spec: > 0 || size(self.options) > 0 : true' required: - name - - port - protocol type: object maxItems: 64 diff --git a/pkg/generated/openapi/zz_generated.openapi.go b/pkg/generated/openapi/zz_generated.openapi.go index 1516450f27..9279b1767a 100644 --- a/pkg/generated/openapi/zz_generated.openapi.go +++ b/pkg/generated/openapi/zz_generated.openapi.go @@ -7748,7 +7748,6 @@ func schema_sigsk8sio_gateway_api_apisx_v1alpha1_ListenerEntry(ref common.Refere "port": { SchemaProps: spec.SchemaProps{ Description: "Port is the network port. Multiple listeners may use the same port, subject to the Listener compatibility rules.", - Default: 0, Type: []string{"integer"}, Format: "int32", }, @@ -7774,7 +7773,7 @@ func schema_sigsk8sio_gateway_api_apisx_v1alpha1_ListenerEntry(ref common.Refere }, }, }, - Required: []string{"name", "port", "protocol"}, + Required: []string{"name", "protocol"}, }, }, Dependencies: []string{ From 223c2acaa5a43b31486faa3f373a0037748543c0 Mon Sep 17 00:00:00 2001 From: Dave Protasowski Date: Thu, 17 Apr 2025 01:44:20 -0400 Subject: [PATCH 09/11] revert gep changes - they are done in another PR --- geps/gep-1713/index.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/geps/gep-1713/index.md b/geps/gep-1713/index.md index 023c207c76..f51f044dda 100644 --- a/geps/gep-1713/index.md +++ b/geps/gep-1713/index.md @@ -172,10 +172,7 @@ type ListenerEntry struct { // Support: Core // // +optional - // - // +kubebuilder:validation:Minimum=0 - // +kubebuilder:validation:Maximum=65535 - Port int32 `json:"port,omitempty"` + Port *PortNumber `json:"port,omitempty"` // Protocol specifies the network protocol this listener expects to receive. // From 70e8cb5b7a37baa380297e963af60a1276ca3d5f Mon Sep 17 00:00:00 2001 From: Dave Protasowski Date: Thu, 17 Apr 2025 01:46:29 -0400 Subject: [PATCH 10/11] fix default --- apisx/v1alpha1/xlistenerset_types.go | 2 +- .../experimental/gateway.networking.x-k8s.io_xlistenersets.yaml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apisx/v1alpha1/xlistenerset_types.go b/apisx/v1alpha1/xlistenerset_types.go index 03711288d4..37df1f776d 100644 --- a/apisx/v1alpha1/xlistenerset_types.go +++ b/apisx/v1alpha1/xlistenerset_types.go @@ -130,7 +130,7 @@ type ListenerEntry struct { // // +optional // - // +kubebuilder:validation:Default=0 + // +kubebuilder:default=0 // +kubebuilder:validation:Minimum=0 // +kubebuilder:validation:Maximum=65535 Port PortNumber `json:"port,omitempty"` diff --git a/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml b/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml index e6a4f736c5..9f03354693 100644 --- a/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml +++ b/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml @@ -271,6 +271,7 @@ spec: pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string port: + default: 0 description: |- Port is the network port. Multiple listeners may use the same port, subject to the Listener compatibility rules. From bbdc171887acc9d987f74c3d4ce0c28684b76597 Mon Sep 17 00:00:00 2001 From: Dave Protasowski Date: Thu, 17 Apr 2025 08:56:51 -0400 Subject: [PATCH 11/11] add boilerplate --- pkg/generator/markers.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pkg/generator/markers.go b/pkg/generator/markers.go index 5d37a6c043..ab5f625aae 100644 --- a/pkg/generator/markers.go +++ b/pkg/generator/markers.go @@ -1,3 +1,19 @@ +/* +Copyright 2025 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package main import (