diff --git a/CHANGELOG/1.4-CHANGELOG.md b/CHANGELOG/1.4-CHANGELOG.md index 65c00e5aa3..ab86248b7b 100644 --- a/CHANGELOG/1.4-CHANGELOG.md +++ b/CHANGELOG/1.4-CHANGELOG.md @@ -2,8 +2,40 @@ ## Table of Contents +- [v1.4.0-rc.2](#v140-rc2) - [v1.4.0-rc.1](#v140-rc1) +## Changes Since v1.4.0-rc.1 + +* Allow preprepared CoreDNS image to be used by @aaronjwood in https://github.com/kubernetes-sigs/gateway-api/pull/3906 +* Update index.md field after moving BackendTLS struct by @kl52752 in https://github.com/kubernetes-sigs/gateway-api/pull/4041 +* Issue 3940: Move BackendTLSPolicy to standard by @candita in https://github.com/kubernetes-sigs/gateway-api/pull/4074 +* Add allowOrigins configuration to CORSAllowCredentialsBehavior and perform cleanup by @snorwin in https://github.com/kubernetes-sigs/gateway-api/pull/4094 +* fix: fix validation and wording when making gateway spec addresses value optional by @bjee19 in https://github.com/kubernetes-sigs/gateway-api/pull/4084 +* Fix broken link in TLS Configuration page by @4n86rakam1 in https://github.com/kubernetes-sigs/gateway-api/pull/4091 +* Automate GEP TOC generation and validate by @rikatz in https://github.com/kubernetes-sigs/gateway-api/pull/4075 +* conformance: fix per-test cleanup by @howardjohn in https://github.com/kubernetes-sigs/gateway-api/pull/4104 +* Added flag for running mesh conformance suite and automatically inferring supported features from Mesh.Status by @bexxmodd in https://github.com/kubernetes-sigs/gateway-api/pull/4097 +* Fixed couple of typos in conformance tests. by @bexxmodd in https://github.com/kubernetes-sigs/gateway-api/pull/4106 +* Issue 3940: Update BackendTLSPolicy GEP to move to standard by @candita in https://github.com/kubernetes-sigs/gateway-api/pull/4099 +* Removing experimental annotation from SupportedFeatures in GWC Status. by @bexxmodd in https://github.com/kubernetes-sigs/gateway-api/pull/4115 +* conformance: fix invalid BackendTLSPolicy conformance test by @howardjohn in https://github.com/kubernetes-sigs/gateway-api/pull/4105 +* fix: use inferred supported features to set extendedSupportedFeatures by @snorwin in https://github.com/kubernetes-sigs/gateway-api/pull/4113 +* conformance: make backend TLS tests IPv6-safe by @howardjohn in https://github.com/kubernetes-sigs/gateway-api/pull/4120 +* concepts/tooling.md: Add Headlamp tool by @illume in https://github.com/kubernetes-sigs/gateway-api/pull/4083 +* docs: update implements page by @zirain in https://github.com/kubernetes-sigs/gateway-api/pull/3996 +* Fix broken link in TLS Configuration page by @4n86rakam1 in https://github.com/kubernetes-sigs/gateway-api/pull/4091 + +## New Contributors + +* @aaronjwood made their first contribution in https://github.com/kubernetes-sigs/gateway-api/pull/3906 +* @illume made their first contribution in https://github.com/kubernetes-sigs/gateway-api/pull/4083 +* @4n86rakam1 made their first contribution in https://github.com/kubernetes-sigs/gateway-api/pull/4091 + +## Full Changelog + +**Full Changelog**: https://github.com/kubernetes-sigs/gateway-api/compare/v1.4.0-rc.1...v1.4.0-rc2 + # v1.4.0-rc.1 ## Major Changes since v1.3.0 @@ -220,4 +252,6 @@ and `HTTPRouteMatch`. * @aaronjwood made their first contribution in https://github.com/kubernetes-sigs/gateway-api/pull/3906 * @illume made their first contribution in https://github.com/kubernetes-sigs/gateway-api/pull/4083 +## Full Changelog + **Full Changelog**: https://github.com/kubernetes-sigs/gateway-api/compare/v1.3.0...v1.4.0-rc.1 diff --git a/README.md b/README.md index e8ebd1ad5b..e6a7ebad8c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ the specification and Custom Resource Definitions (CRDs). ## Status The latest supported version is `v1` as released by -the [v1.3.0 release][gh_release] of this project. +the [v1.4.0 release][gh_release] of this project. This version of the API is has GA level support for the following resources: @@ -71,7 +71,7 @@ Participation in the Kubernetes community is governed by the [spec]: https://gateway-api.sigs.k8s.io/reference/spec/ [concepts]: https://gateway-api.sigs.k8s.io/concepts/api-overview [security-model]: https://gateway-api.sigs.k8s.io/concepts/security-model -[gh_release]: https://github.com/kubernetes-sigs/gateway-api/releases/tag/v1.3.0 +[gh_release]: https://github.com/kubernetes-sigs/gateway-api/releases/tag/v1.4.0 [godoc]: https://pkg.go.dev/sigs.k8s.io/gateway-api [conformance-docs]: https://gateway-api.sigs.k8s.io/concepts/conformance/ [reports-readme]: ./conformance/reports/README.md diff --git a/apis/v1/backendtlspolicy_types.go b/apis/v1/backendtlspolicy_types.go index 5a755eb1ba..5e44936cc8 100644 --- a/apis/v1/backendtlspolicy_types.go +++ b/apis/v1/backendtlspolicy_types.go @@ -189,7 +189,6 @@ type BackendTLSPolicyValidation struct { // Support: Implementation-specific // // +optional - // +listType=atomic WellKnownCACertificates *WellKnownCACertificatesType `json:"wellKnownCACertificates,omitempty"` // Hostname is used for two purposes in the connection between Gateways and diff --git a/apis/v1/gateway_types.go b/apis/v1/gateway_types.go index 58d9751866..3b856a1567 100644 --- a/apis/v1/gateway_types.go +++ b/apis/v1/gateway_types.go @@ -803,7 +803,6 @@ type AllowedRoutes struct { // Support: Core // // +optional - // +listType=atomic // +kubebuilder:default={from: Same} Namespaces *RouteNamespaces `json:"namespaces,omitempty"` diff --git a/apis/v1/httproute_types.go b/apis/v1/httproute_types.go index 3d89af0da7..97ffd1e719 100644 --- a/apis/v1/httproute_types.go +++ b/apis/v1/httproute_types.go @@ -1671,7 +1671,7 @@ type GRPCAuthConfig struct { // // +optional // +listType=set - // +kubebuilder:validation:MaxLength=64 + // +kubebuilder:validation:MaxItems=64 AllowedRequestHeaders []string `json:"allowedHeaders,omitempty"` } @@ -1719,7 +1719,7 @@ type HTTPAuthConfig struct { // // +optional // +listType=set - // +kubebuilder:validation:MaxLength=64 + // +kubebuilder:validation:MaxItems=64 AllowedRequestHeaders []string `json:"allowedHeaders,omitempty"` // AllowedResponseHeaders specifies what headers from the authorization response @@ -1730,7 +1730,7 @@ type HTTPAuthConfig struct { // // +optional // +listType=set - // +kubebuilder:validation:MaxLength=64 + // +kubebuilder:validation:MaxItems=64 AllowedResponseHeaders []string `json:"allowedResponseHeaders,omitempty"` } diff --git a/apisx/v1alpha1/shared_types.go b/apisx/v1alpha1/shared_types.go index 94851df261..f2d6228380 100644 --- a/apisx/v1alpha1/shared_types.go +++ b/apisx/v1alpha1/shared_types.go @@ -27,7 +27,6 @@ type ( Hostname = v1.Hostname Kind = v1.Kind ObjectName = v1.ObjectName - PortNumber = v1.PortNumber ProtocolType = v1.ProtocolType RouteGroupKind = v1.RouteGroupKind SectionName = v1.SectionName @@ -38,6 +37,20 @@ type ( SessionPersistence = v1.SessionPersistence ) +// PortNumber defines a network port. +// +// +kubebuilder:validation:Minimum=0 +// +kubebuilder:validation:Maximum=65535 +type PortNumber int32 + +// StatusPortNumber defines a network port in status fields. +// Unlike PortNumber, this does not allow 0 since status fields +// reflect actual assigned ports. +// +// +kubebuilder:validation:Minimum=1 +// +kubebuilder:validation:Maximum=65535 +type StatusPortNumber int32 + // ParentGatewayReference identifies an API object including its namespace, // defaulting to Gateway. type ParentGatewayReference struct { diff --git a/apisx/v1alpha1/xlistenerset_types.go b/apisx/v1alpha1/xlistenerset_types.go index f8198c8659..7f25c9a79c 100644 --- a/apisx/v1alpha1/xlistenerset_types.go +++ b/apisx/v1alpha1/xlistenerset_types.go @@ -167,8 +167,6 @@ type ListenerEntry struct { // +optional // // +kubebuilder:default=0 - // +kubebuilder:validation:Minimum=0 - // +kubebuilder:validation:Maximum=65535 Port PortNumber `json:"port,omitempty"` // Protocol specifies the network protocol this listener expects to receive. @@ -253,11 +251,8 @@ type ListenerEntryStatus struct { // Port is the network port the listener is configured to listen on. // - // +kubebuilder:validation:Minimum=1 - // +kubebuilder:validation:Maximum=65535 - // // +required - Port PortNumber `json:"port"` + Port StatusPortNumber `json:"port"` // SupportedKinds is the list indicating the Kinds supported by this // listener. This MUST represent the kinds an implementation supports for diff --git a/applyconfiguration/apisx/v1alpha1/listenerentry.go b/applyconfiguration/apisx/v1alpha1/listenerentry.go index d9f4dc9a4e..22d94351ac 100644 --- a/applyconfiguration/apisx/v1alpha1/listenerentry.go +++ b/applyconfiguration/apisx/v1alpha1/listenerentry.go @@ -20,6 +20,7 @@ package v1alpha1 import ( v1 "sigs.k8s.io/gateway-api/apis/v1" + apisxv1alpha1 "sigs.k8s.io/gateway-api/apisx/v1alpha1" apisv1 "sigs.k8s.io/gateway-api/applyconfiguration/apis/v1" ) @@ -28,7 +29,7 @@ import ( type ListenerEntryApplyConfiguration struct { Name *v1.SectionName `json:"name,omitempty"` Hostname *v1.Hostname `json:"hostname,omitempty"` - Port *int32 `json:"port,omitempty"` + Port *apisxv1alpha1.PortNumber `json:"port,omitempty"` Protocol *v1.ProtocolType `json:"protocol,omitempty"` TLS *apisv1.ListenerTLSConfigApplyConfiguration `json:"tls,omitempty"` AllowedRoutes *apisv1.AllowedRoutesApplyConfiguration `json:"allowedRoutes,omitempty"` @@ -59,7 +60,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 apisxv1alpha1.PortNumber) *ListenerEntryApplyConfiguration { b.Port = &value return b } diff --git a/applyconfiguration/apisx/v1alpha1/listenerentrystatus.go b/applyconfiguration/apisx/v1alpha1/listenerentrystatus.go index 888f57d75d..4b389199e4 100644 --- a/applyconfiguration/apisx/v1alpha1/listenerentrystatus.go +++ b/applyconfiguration/apisx/v1alpha1/listenerentrystatus.go @@ -21,6 +21,7 @@ package v1alpha1 import ( metav1 "k8s.io/client-go/applyconfigurations/meta/v1" v1 "sigs.k8s.io/gateway-api/apis/v1" + apisxv1alpha1 "sigs.k8s.io/gateway-api/apisx/v1alpha1" apisv1 "sigs.k8s.io/gateway-api/applyconfiguration/apis/v1" ) @@ -28,7 +29,7 @@ import ( // with apply. type ListenerEntryStatusApplyConfiguration struct { Name *v1.SectionName `json:"name,omitempty"` - Port *int32 `json:"port,omitempty"` + Port *apisxv1alpha1.StatusPortNumber `json:"port,omitempty"` SupportedKinds []apisv1.RouteGroupKindApplyConfiguration `json:"supportedKinds,omitempty"` AttachedRoutes *int32 `json:"attachedRoutes,omitempty"` Conditions []metav1.ConditionApplyConfiguration `json:"conditions,omitempty"` @@ -51,7 +52,7 @@ func (b *ListenerEntryStatusApplyConfiguration) WithName(value v1.SectionName) * // 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 *ListenerEntryStatusApplyConfiguration) WithPort(value int32) *ListenerEntryStatusApplyConfiguration { +func (b *ListenerEntryStatusApplyConfiguration) WithPort(value apisxv1alpha1.StatusPortNumber) *ListenerEntryStatusApplyConfiguration { b.Port = &value return b } diff --git a/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml b/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml index acb50051fe..5f0de9ad22 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_backendtlspolicies.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: experimental labels: gateway.networking.k8s.io/policy: Direct diff --git a/config/crd/experimental/gateway.networking.k8s.io_gatewayclasses.yaml b/config/crd/experimental/gateway.networking.k8s.io_gatewayclasses.yaml index ace25e4bf1..ebdee85705 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_gatewayclasses.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_gatewayclasses.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: experimental name: gatewayclasses.gateway.networking.k8s.io spec: diff --git a/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml b/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml index 1fbd20a972..1d27104859 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_gateways.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: experimental name: gateways.gateway.networking.k8s.io spec: diff --git a/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml index b40275f361..a5a39bc7a6 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_grpcroutes.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: experimental name: grpcroutes.gateway.networking.k8s.io spec: diff --git a/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml index 85a5fc4779..1f51e9a882 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_httproutes.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: experimental name: httproutes.gateway.networking.k8s.io spec: @@ -915,6 +915,7 @@ spec: If the list has entries, only those entries must be sent. items: type: string + maxItems: 64 type: array x-kubernetes-list-type: set type: object @@ -953,6 +954,7 @@ spec: request must be set to the actual number of bytes forwarded. items: type: string + maxItems: 64 type: array x-kubernetes-list-type: set allowedResponseHeaders: @@ -964,6 +966,7 @@ spec: except Authority or Host must be copied. items: type: string + maxItems: 64 type: array x-kubernetes-list-type: set path: @@ -2395,6 +2398,7 @@ spec: If the list has entries, only those entries must be sent. items: type: string + maxItems: 64 type: array x-kubernetes-list-type: set type: object @@ -2433,6 +2437,7 @@ spec: request must be set to the actual number of bytes forwarded. items: type: string + maxItems: 64 type: array x-kubernetes-list-type: set allowedResponseHeaders: @@ -2444,6 +2449,7 @@ spec: except Authority or Host must be copied. items: type: string + maxItems: 64 type: array x-kubernetes-list-type: set path: @@ -5073,6 +5079,7 @@ spec: If the list has entries, only those entries must be sent. items: type: string + maxItems: 64 type: array x-kubernetes-list-type: set type: object @@ -5111,6 +5118,7 @@ spec: request must be set to the actual number of bytes forwarded. items: type: string + maxItems: 64 type: array x-kubernetes-list-type: set allowedResponseHeaders: @@ -5122,6 +5130,7 @@ spec: except Authority or Host must be copied. items: type: string + maxItems: 64 type: array x-kubernetes-list-type: set path: @@ -6553,6 +6562,7 @@ spec: If the list has entries, only those entries must be sent. items: type: string + maxItems: 64 type: array x-kubernetes-list-type: set type: object @@ -6591,6 +6601,7 @@ spec: request must be set to the actual number of bytes forwarded. items: type: string + maxItems: 64 type: array x-kubernetes-list-type: set allowedResponseHeaders: @@ -6602,6 +6613,7 @@ spec: except Authority or Host must be copied. items: type: string + maxItems: 64 type: array x-kubernetes-list-type: set path: diff --git a/config/crd/experimental/gateway.networking.k8s.io_referencegrants.yaml b/config/crd/experimental/gateway.networking.k8s.io_referencegrants.yaml index b65b6594ba..0533671487 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_referencegrants.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_referencegrants.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: experimental name: referencegrants.gateway.networking.k8s.io spec: diff --git a/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml index ab17dc3e85..55d504b5de 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: experimental name: tcproutes.gateway.networking.k8s.io spec: diff --git a/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml index 3196e57eb7..c3cb1792da 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_tlsroutes.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: experimental name: tlsroutes.gateway.networking.k8s.io spec: diff --git a/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml index 86a2b81ac8..39db999d86 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: experimental name: udproutes.gateway.networking.k8s.io spec: 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 9a80b8ad51..49f0474d38 100644 --- a/config/crd/experimental/gateway.networking.x-k8s.io_xbackendtrafficpolicies.yaml +++ b/config/crd/experimental/gateway.networking.x-k8s.io_xbackendtrafficpolicies.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: experimental labels: gateway.networking.k8s.io/policy: Direct 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 30af99dee9..3d566b97c9 100644 --- a/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml +++ b/config/crd/experimental/gateway.networking.x-k8s.io_xlistenersets.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: experimental name: xlistenersets.gateway.networking.x-k8s.io spec: diff --git a/config/crd/experimental/gateway.networking.x-k8s.io_xmeshes.yaml b/config/crd/experimental/gateway.networking.x-k8s.io_xmeshes.yaml index 0c7a87af72..1557b94422 100644 --- a/config/crd/experimental/gateway.networking.x-k8s.io_xmeshes.yaml +++ b/config/crd/experimental/gateway.networking.x-k8s.io_xmeshes.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: experimental name: xmeshes.gateway.networking.x-k8s.io spec: diff --git a/config/crd/standard/gateway.networking.k8s.io_backendtlspolicies.yaml b/config/crd/standard/gateway.networking.k8s.io_backendtlspolicies.yaml index 5faedd15d1..f90aba8bf3 100644 --- a/config/crd/standard/gateway.networking.k8s.io_backendtlspolicies.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_backendtlspolicies.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: standard labels: gateway.networking.k8s.io/policy: Direct diff --git a/config/crd/standard/gateway.networking.k8s.io_gatewayclasses.yaml b/config/crd/standard/gateway.networking.k8s.io_gatewayclasses.yaml index 68060bf305..4d54568c1a 100644 --- a/config/crd/standard/gateway.networking.k8s.io_gatewayclasses.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_gatewayclasses.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: standard name: gatewayclasses.gateway.networking.k8s.io spec: diff --git a/config/crd/standard/gateway.networking.k8s.io_gateways.yaml b/config/crd/standard/gateway.networking.k8s.io_gateways.yaml index 9ab97f5e45..0930cff5a9 100644 --- a/config/crd/standard/gateway.networking.k8s.io_gateways.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_gateways.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: standard name: gateways.gateway.networking.k8s.io spec: diff --git a/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml b/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml index dd0a9817eb..6cb625fb1b 100644 --- a/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: standard name: grpcroutes.gateway.networking.k8s.io spec: diff --git a/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml b/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml index b844524812..42c5b4b1ee 100644 --- a/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: standard name: httproutes.gateway.networking.k8s.io spec: diff --git a/config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml b/config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml index 768b50b34b..61e9a756b7 100644 --- a/config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml +++ b/config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml @@ -3,7 +3,7 @@ kind: CustomResourceDefinition metadata: annotations: api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328 - gateway.networking.k8s.io/bundle-version: v1.4.0-rc.1 + gateway.networking.k8s.io/bundle-version: v1.4.0 gateway.networking.k8s.io/channel: standard name: referencegrants.gateway.networking.k8s.io spec: diff --git a/hack/mkdocs-generate-conformance.py b/hack/mkdocs-generate-conformance.py index 55c8251e06..9abeaf68bd 100644 --- a/hack/mkdocs-generate-conformance.py +++ b/hack/mkdocs-generate-conformance.py @@ -184,7 +184,7 @@ def generate_profiles_report(reports, route, version): http_table = http_table.rename( columns={"project": "Project", "version": "Version", "mode": "Mode", "core.result": "Core"}) - if semver.compare(version.removeprefix('v'), '1.3.0') < 0: + if semver.compare(version.removeprefix('v'), '1.4.0') < 0: http_table = http_table.drop(columns=["Core"]) if version == 'v1.0.0': http_table = http_table.drop(columns=["Mode"]) diff --git a/hack/update-clientset.sh b/hack/update-clientset.sh index e9fda1f32d..3a1dae5ae6 100755 --- a/hack/update-clientset.sh +++ b/hack/update-clientset.sh @@ -118,3 +118,10 @@ go run sigs.k8s.io/controller-tools/cmd/controller-gen \ object:headerFile=${SCRIPT_ROOT}/hack/boilerplate/boilerplate.generatego.txt \ paths="./apis/..." \ paths="./apisx/..." + +echo "Validating CRD markers" +go run sigs.k8s.io/controller-tools/cmd/controller-gen \ + crd:headerFile=${SCRIPT_ROOT}/hack/boilerplate/boilerplate.generatego.txt \ + paths="./apis/..." \ + paths="./apisx/..." \ + output:crd:dir=/tmp/gateway-api-crd-validation diff --git a/nav.yml b/nav.yml index a51849e367..570856a3f5 100644 --- a/nav.yml +++ b/nav.yml @@ -19,6 +19,7 @@ nav: - Implementations: - List: implementations.md - Comparisons: + - v1.4: implementations/v1.4.md - v1.3: implementations/v1.3.md - v1.2: implementations/v1.2.md - v1.1: implementations/v1.1.md diff --git a/nav.yml.tmpl b/nav.yml.tmpl index 94e9a0aa1d..c7c0d84248 100644 --- a/nav.yml.tmpl +++ b/nav.yml.tmpl @@ -19,6 +19,7 @@ nav: - Implementations: - List: implementations.md - Comparisons: + - v1.4: implementations/v1.4.md - v1.3: implementations/v1.3.md - v1.2: implementations/v1.2.md - v1.1: implementations/v1.1.md diff --git a/pkg/consts/consts.go b/pkg/consts/consts.go index 8b558d385c..715f975d6a 100644 --- a/pkg/consts/consts.go +++ b/pkg/consts/consts.go @@ -27,7 +27,7 @@ const ( // BundleVersion is the value used for the "gateway.networking.k8s.io/bundle-version" annotation. // These value must be updated during the release process. - BundleVersion = "v1.4.0-rc.1" + BundleVersion = "v1.4.0" // ApprovalLink is the value used for the "api-approved.kubernetes.io" annotation. // These value must be updated during the release process. diff --git a/pkg/generated/openapi/zz_generated.openapi.go b/pkg/generated/openapi/zz_generated.openapi.go index 34b5ca191d..0968ead79a 100644 --- a/pkg/generated/openapi/zz_generated.openapi.go +++ b/pkg/generated/openapi/zz_generated.openapi.go @@ -2882,11 +2882,6 @@ func schema_sigsk8sio_gateway_api_apis_v1_AllowedRoutes(ref common.ReferenceCall Type: []string{"object"}, Properties: map[string]spec.Schema{ "namespaces": { - VendorExtensible: spec.VendorExtensible{ - Extensions: spec.Extensions{ - "x-kubernetes-list-type": "atomic", - }, - }, SchemaProps: spec.SchemaProps{ Description: "Namespaces indicates namespaces from which Routes may be attached to this Listener. This is restricted to the namespace of this Gateway by default.\n\nSupport: Core", Ref: ref("sigs.k8s.io/gateway-api/apis/v1.RouteNamespaces"), @@ -3210,11 +3205,6 @@ func schema_sigsk8sio_gateway_api_apis_v1_BackendTLSPolicyValidation(ref common. }, }, "wellKnownCACertificates": { - VendorExtensible: spec.VendorExtensible{ - Extensions: spec.Extensions{ - "x-kubernetes-list-type": "atomic", - }, - }, SchemaProps: spec.SchemaProps{ Description: "WellKnownCACertificates specifies whether system CA certificates may be used in the TLS handshake between the gateway and backend pod.\n\nIf WellKnownCACertificates is unspecified or empty (\"\"), then CACertificateRefs must be specified with at least one entry for a valid configuration. Only one of CACertificateRefs or WellKnownCACertificates may be specified, not both. If an implementation does not support the WellKnownCACertificates field, or the supplied value is not recognized, the implementation MUST ensure the `Accepted` Condition on the BackendTLSPolicy is set to `status: False`, with a Reason `Invalid`.\n\nSupport: Implementation-specific", Type: []string{"string"}, diff --git a/site-src/guides/index.md b/site-src/guides/index.md index 21fbe942b1..6d9411595e 100644 --- a/site-src/guides/index.md +++ b/site-src/guides/index.md @@ -45,7 +45,7 @@ beta, including GatewayClass, Gateway, HTTPRoute, and ReferenceGrant. To install this channel, run the following kubectl command: ```bash -kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.3.0/standard-install.yaml +kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.4.0/standard-install.yaml ``` ### Install Experimental Channel @@ -63,7 +63,7 @@ documentation](../concepts/versioning.md). To install the experimental channel, run the following kubectl command: ```bash -kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.3.0/experimental-install.yaml +kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.4.0/experimental-install.yaml ``` ### v1.2 Upgrade Notes