sigs.k8s.io/gateway-api@v1.0.0/CHANGELOG.md (about) 1 # Changelog 2 3 ## Table of Contents 4 5 - [v1.0.0][#v100] 6 - [v1.0.0-rc2][#v100-rc2] 7 - [v1.0.0-rc1][#v100-rc1] 8 - [v0.8.1](#v081) 9 - [v0.8.0](#v080) 10 - [v0.8.0-rc2](#v080-rc2) 11 - [v0.8.0-rc1](#v080-rc1) 12 - [v0.7.1](#v071) 13 - [v0.7.0](#v070) 14 - [v0.7.0-rc2](#v070-rc2) 15 - [v0.7.0-rc1](#v070-rc1) 16 - [v0.6.2](#v062) 17 - [v0.6.1](#v061) 18 - [v0.6.0](#v060) 19 - [v0.6.0-rc2](#v060-rc2) 20 - [v0.6.0-rc1](#v060-rc1) 21 - [v0.5.1](#v051) 22 - [v0.5.0](#v050) 23 - [v0.5.0-rc2](#v050-rc2) 24 - [v0.5.0-rc1](#v050-rc1) 25 - [v0.4.3](#v043) 26 - [v0.4.2](#v042) 27 - [v0.4.1](#v041) 28 - [v0.4.0](#v040) 29 - [v0.4.0-rc2](#v040-rc2) 30 - [v0.4.0-rc1](#v040-rc1) 31 - [v0.3.0](#v030) 32 - [v0.2.0](#v020) 33 - [v0.1.0](#v010) 34 - [v0.1.0-rc2](#v010-rc2) 35 - [v0.1.0-rc1](#v010-rc1) 36 37 # v1.0.0 38 39 On behalf of Kubernetes SIG Network, we are pleased to announce the v1.0 release! 40 This release marks a huge milestone for this project. Several key APIs are 41 graduating to GA (generally available), while other significant features have 42 been added to the Experimental channel. 43 44 It's been four years since this project began, and we would never have gotten 45 here without the support of a dedicated and active community. The maintainers 46 would like to thanks _everyone_ who's contributed to Gateway API, whether in the 47 form of commits to the repo, discussion, ideas, or general support. We literally 48 couldn't have gotten this far without you. 49 50 This project is nowhere near finished, as you can see from the large amount of 51 features being added into the Experimental Channel. With such a big set of 52 things still to do, contributors and contributions are more vital than ever. 53 Please feel welcome to join our 54 [community!](https://gateway-api.sigs.k8s.io/contributing/)! 55 56 ## Gateway, GatewayClass, and HTTPRoute are GA 🎉 57 58 Gateway, GatewayClass, and HTTPRoute have all graduated to GA with a `v1` API 59 version. Although these APIs will continue to grow with future additions, the 60 versions of these resources available via the Standard Channel are stable and 61 recommended for use in production. Many implementations are fully passing 62 conformance tests that cover the functionality of each of these resources. These 63 APIs are graduating to GA with only minor spec clarifications since the v0.8.0 64 release. 65 66 ## CEL Migration 67 68 Starting in v0.8.0, Gateway API CRDs now include CEL validation. In this release 69 the validating webhook is no longer bundled with CRD installation. Instead we 70 include a separate `webhook-install.yaml` file as part of the release artifacts. 71 72 If you're running Kubernetes 1.25+, we do not recommend installing the webhook 73 and additionally suggest that you uninstall any previously installed versions of 74 the webhook. 75 76 If you're still running Kubernetes 1.23 or 1.24, we recommend installing the 77 webhook until you can upgrade to Kubernetes 1.25 or newer. 78 79 ## New Experimental Features 80 81 There are several exciting new experimental features in this release: 82 83 ### BackendTLSPolicy 84 A new `BackendTLSPolicy` resource has been introduced for configuring TLS 85 connections from Gateways to Backends. This allows you to configure the Gateway 86 to validate the certificates served by Backends. For more information, refer to 87 [GEP 1897](https://gateway-api.sigs.k8s.io/geps/gep-1897/). 88 89 Primary Author: @candita 90 91 ### HTTPRoute Timeouts 92 HTTPRoute has a new `Timeouts` field on Route Rules. This allows you to 93 configure overall Request Timeouts as well as Backend Request Timeouts. For more 94 information, refer to [GEP 1742](https://gateway-api.sigs.k8s.io/geps/gep-1742/). 95 96 Primary Authors: @frankbu, @SRodi 97 98 ### Gateway Infrastructure Labels 99 Gateway has a new `Infrastructure` field that allows you to specify `Labels` or 100 `Annotations` that you'd like to be propagated to each resource generated for a 101 Gateway. For example, these labels and annotations may be copied to Services and 102 Deployments provisioned for in-cluster Gateways, or to other 103 implementation-specific resources, such as Cloud Load Balancers. For more 104 information, refer to [GEP 105 1762](https://gateway-api.sigs.k8s.io/geps/gep-1762/). 106 107 Primary Author: @howardjohn 108 109 ### WebSockets, HTTP/2, and More 110 Some coordinated work across both Gateway API and upstream Kubernetes has 111 defined 3 new values for the AppProtocol field on Service Ports: 112 113 * `kubernetes.io/h2c` - HTTP/2 over cleartext as described in 114 [RFC7540](https://www.rfc-editor.org/rfc/rfc7540) 115 * `kubernetes.io/ws` - WebSocket over cleartext as described in 116 [RFC6445](https://www.rfc-editor.org/rfc/rfc6455) 117 * `kubernetes.io/wss` - WebSocket over TLS as described in 118 [RFC6455](https://www.rfc-editor.org/rfc/rfc6455) 119 120 These can now be used with Gateway API to describe the protocol to use for 121 connections to Kubernetes Services. For more information, refer to [GEP 122 1911](https://gateway-api.sigs.k8s.io/geps/gep-1911/). 123 124 ### A new CLI tool: gwctl 125 An experimental new CLI tool and kubectl plugin, gwctl aims to improve the UX 126 when interacting with Gateway API. Initially it is focused on Policy Attachment, 127 making it easier to understand which policies are available in a cluster, and 128 which have been applied. In future releases, we hope to expand the scope of this 129 tool to provide more detailed responses when getting and describing Gateway API 130 resources. Note that this tool is still in very early stages and it's very 131 likely that future releases will include breaking changes for gwctl. For more 132 information, refer to the [gwctl 133 Readme](https://github.com/kubernetes-sigs/gateway-api/tree/main/gwctl). 134 135 Primary Author: @gauravkghildiyal 136 137 ## Everything Else 138 139 Of course there's a lot more in this release: 140 141 ### Spec Clarifications 142 - Clarify that the Gateway Listener status AttachedRoutes field is a count of 143 the number of Routes associated with a Listener regardless of Gateway or Route 144 status. (#2396, @sunjayBhatia) 145 - Gateway: A new concept called "Listener Isolation" has been introduced to 146 describe the recommendation that at most one Listener matches a request, and 147 only Routes attached to that Listener are used for routing. (#2465, @robscott) 148 - Experimental Channel: For ParentRefs to be considered distinct, they either 149 both need to specify a distinct SectionName, both need to specify a distinct 150 Port, or both. (#2433, @robscott) 151 - Updated rules about Listener uniqueness to use the term `distinct` (#2436, 152 @youngnick) 153 154 ### Status 155 - GatewayClass Status: A new experimental `supportedFeatures` field has been 156 added. Implementations should populate this with the features they support. 157 (#2461, @Liorlieberman, @robscott) 158 - GatewayClass Status: A new SupportedVersion condition has been added that MUST 159 be set when a GatewayClass is accepted. (#2384, @robscott) 160 - Route Status: A new "PartiallyInvalid" condition has been added for all Route 161 types. This condition also includes guidance for how partially invalid states 162 should be handled with Gateway API. (#2429, @robscott) 163 - The condition reason `GatewayReasonUnsupportedAddress` for `Accepted` now ONLY 164 applies when an address type is provided for a `Gateway` which it does not 165 support. 166 (#2412 @shaneutt) 167 - The condition reason `GatewayReasonAddressNotAssigned` for `Programmed` now 168 ONLY applies to problems with dynamic address allocation. 169 (#2412 @shaneutt) 170 - The condition reason `GatewayReasonAddressNotUsable` for `Programmed` has been 171 added to deal with situations where a static address has been provided for a 172 Gateway which is of a supported type, and is syntactically valid, but for some 173 reason it can not be used for this Gateway (e.g. the address is already in use 174 on the network). 175 (#2412 @shaneutt) 176 177 ### Documentation 178 - A guide for Gateway API implementers is now included in the specification. 179 (#2454, @youngnick) 180 - Gateway API versioning will continue to rely on two release channels - 181 Standard and Experimental. New resources will start in the Experimental 182 Channel with an alpha API Version and then graduate to the Standard Channel 183 with a GA API version. Resources that already have Beta API versions will 184 continue to have them, but no additional Gateway API resources will get a Beta 185 API version. (#2446, @robscott) 186 187 ### Cleanup 188 - Validating Webhook logs now use `Errorf` instead of `Fatalf`. (#2361, @yylt) 189 190 ### Bug Fixes 191 * CEL validation for BackendTLSPolicy was fixed with corresponding tests added 192 (#2491, @ygnas) 193 * Fixes the API version for `ReferenceGrant` from `v1` to `v1beta1` in the 194 `GatewaySecretInvalidReferenceGrant` conformance test YAML (#2494, @arkodg) 195 * Gateway infrastructure field is now a pointer (#2508, @danehans) 196 197 ## Conformance Tests 198 * h2c Backend Protocol conformance tests were added (#2456, @dprotaso) 199 * WebSocket Backend Protocol conformance tests were added (#2495, @dprotaso) 200 * New conformance test for Gateway Status AttachedRoutes (#2477, @danehans) 201 * Implemented the `ExemptFeatures` field for Experimental Conformance Profiles 202 (#2515, @arkodg) 203 204 ### Other (Cleanup or Flake) 205 - Resources related to the validating webhook such as the `gateway-system` 206 namespace and the `gateway-api-admission-server` deployment have been removed 207 from the installation manifests, in favor of CEL based Validations that are 208 built into the CRD definition. These are still available in 209 `webhook-install.yaml` in case you would like to optionally install them. 210 (#2401, @arkodg) 211 212 # v1.0.0-rc2 213 214 The working group expects that this release candidate is quite close to the 215 final v0.8.0 release. However, breaking API changes are still possible. 216 217 This release candidate is suitable for implementors, but the working group does 218 not recommend shipping products based on a release candidate API due to the 219 possibility of incompatible changes prior to the final release. The following 220 represents the changes since v1.0.0-rc1: 221 222 ## Bug Fixes 223 * CEL validation for BackendTLSPolicy was fixed with corresponding tests added 224 (#2491, @ygnas) 225 * Fixes the API version for `ReferenceGrant` from `v1` to `v1beta1` in the 226 `GatewaySecretInvalidReferenceGrant` conformance test YAML (#2494, @arkodg) 227 * Gateway infrastructure field is now a pointer (#2508, @danehans) 228 229 ## Conformance Tests 230 * h2c Backend Protocol conformance tests were added (#2456, @dprotaso) 231 * WebSocket Backend Protocol conformance tests were added (#2495, @dprotaso) 232 * New conformance test for Gateway Status AttachedRoutes (#2477, @danehans) 233 * Implemented the `ExemptFeatures` field for Experimental Conformance Profiles 234 (#2515, @arkodg) 235 236 # v1.0.0-rc1 237 238 The working group expects that this release candidate is quite close to the 239 final v0.8.0 release. However, breaking API changes are still possible. 240 241 This release candidate is suitable for implementors, but the working group does 242 not recommend shipping products based on a release candidate API due to the 243 possibility of incompatible changes prior to the final release. The following 244 represents the changes since v0.8.0-rc1: 245 246 ## Gateway, GatewayClass, and HTTPRoute are GA 🎉 247 248 Gateway, GatewayClass, and HTTPRoute have all graduated to GA with a `v1` API 249 version. Although these APIs will continue to grow with future additions, the 250 versions of these resources available via the Standard Channel are stable and 251 recommended for use in production. Many implementations are fully passing 252 conformance tests that cover the functionality of each of these resources. These 253 APIs are graduating to GA with only minor spec clarifications since the v0.8.0 254 release. 255 256 ## CEL Migration 257 258 Starting in v0.8.0, Gateway API CRDs now include CEL validation. In this release 259 the validating webhook is no longer bundled with CRD installation. Instead we 260 include a separate `webhook-install.yaml` file as part of the release artifacts. 261 262 If you're running Kubernetes 1.25+, we do not recommend installing the webhook 263 and additionally suggest that you uninstall any previously installed versions of 264 the webhook. 265 266 If you're still running Kubernetes 1.23 or 1.24, we recommend installing the 267 webhook until you can upgrade to Kubernetes 1.25 or newer. 268 269 ## New Experimental Features 270 271 There are several exciting new experimental features in this release: 272 273 ### BackendTLSPolicy 274 A new `BackendTLSPolicy` resource has been introduced for configuring TLS 275 connections from Gateways to Backends. This allows you to configure the Gateway 276 to validate the certificates served by Backends. For more information, refer to 277 [GEP 1897](https://gateway-api.sigs.k8s.io/geps/gep-1897/). 278 279 Primary Author: @candita 280 281 ### HTTPRoute Timeouts 282 HTTPRoute has a new `Timeouts` field on Route Rules. This allows you to 283 configure overall Request Timeouts as well as Backend Request Timeouts. For more 284 information, refer to [GEP 1742](https://gateway-api.sigs.k8s.io/geps/gep-1742/). 285 286 Primary Authors: @frankbu, @SRodi 287 288 ### Gateway Infrastructure Labels 289 Gateway has a new `Infrastructure` field that allows you to specify `Labels` or 290 `Annotations` that you'd like to be propagated to each resource generated for a 291 Gateway. For example, these labels and annotations may be copied to Services and 292 Deployments provisioned for in-cluster Gateways, or to other 293 implementation-specific resources, such as Cloud Load Balancers. For more 294 information, refer to [GEP 295 1762](https://gateway-api.sigs.k8s.io/geps/gep-1762/). 296 297 Primary Author: @howardjohn 298 299 ### WebSockets, HTTP/2, and More 300 Some coordinated work across both Gateway API and upstream Kubernetes has 301 defined 3 new values for the AppProtocol field on Service Ports: 302 303 * `kubernetes.io/h2c` - HTTP/2 over cleartext as described in 304 [RFC7540](https://www.rfc-editor.org/rfc/rfc7540) 305 * `kubernetes.io/ws` - WebSocket over cleartext as described in 306 [RFC6445](https://www.rfc-editor.org/rfc/rfc6455) 307 * `kubernetes.io/wss` - WebSocket over TLS as described in 308 [RFC6455](https://www.rfc-editor.org/rfc/rfc6455) 309 310 These can now be used with Gateway API to describe the protocol to use for 311 connections to Kubernetes Services. For more information, refer to [GEP 312 1911](https://gateway-api.sigs.k8s.io/geps/gep-1911/). 313 314 ### A new CLI tool: gwctl 315 An experimental new CLI tool and kubectl plugin, gwctl aims to improve the UX 316 when interacting with Gateway API. Initially it is focused on Policy Attachment, 317 making it easier to understand which policies are available in a cluster, and 318 which have been applied. In future releases, we hope to expand the scope of this 319 tool to provide more detailed responses when getting and describing Gateway API 320 resources. Note that this tool is still in very early stages and it's very 321 likely that future releases will include breaking changes for gwctl. For more 322 information, refer to the [gwctl 323 Readme](https://github.com/kubernetes-sigs/gateway-api/tree/main/gwctl). 324 325 Primary Author: @gauravkghildiyal 326 327 ## Everything Else 328 329 Of course there's a lot more in this release: 330 331 ### Spec Clarifications 332 - Clarify that the Gateway Listener status AttachedRoutes field is a count of 333 the number of Routes associated with a Listener regardless of Gateway or Route 334 status. (#2396, @sunjayBhatia) 335 - Gateway: A new concept called "Listener Isolation" has been introduced to 336 describe the recommendation that at most one Listener matches a request, and 337 only Routes attached to that Listener are used for routing. (#2465, @robscott) 338 - Experimental Channel: For ParentRefs to be considered distinct, they either 339 both need to specify a distinct SectionName, both need to specify a distinct 340 Port, or both. (#2433, @robscott) 341 - Updated rules about Listener uniqueness to use the term `distinct` (#2436, 342 @youngnick) 343 344 ### Status 345 - GatewayClass Status: A new experimental `supportedFeatures` field has been 346 added. Implementations should populate this with the features they support. 347 (#2461, @Liorlieberman, @robscott) 348 - GatewayClass Status: A new SupportedVersion condition has been added that MUST 349 be set when a GatewayClass is accepted. (#2384, @robscott) 350 - Route Status: A new "PartiallyInvalid" condition has been added for all Route 351 types. This condition also includes guidance for how partially invalid states 352 should be handled with Gateway API. (#2429, @robscott) 353 - The condition reason `GatewayReasonUnsupportedAddress` for `Accepted` now ONLY 354 applies when an address type is provided for a `Gateway` which it does not 355 support. 356 (#2412 @shaneutt) 357 - The condition reason `GatewayReasonAddressNotAssigned` for `Programmed` now 358 ONLY applies to problems with dynamic address allocation. 359 (#2412 @shaneutt) 360 - The condition reason `GatewayReasonAddressNotUsable` for `Programmed` has been 361 added to deal with situations where a static address has been provided for a 362 Gateway which is of a supported type, and is syntactically valid, but for some 363 reason it can not be used for this Gateway (e.g. the address is already in use 364 on the network). 365 (#2412 @shaneutt) 366 367 ### Documentation 368 - A guide for Gateway API implementers is now included in the specification. 369 (#2454, @youngnick) 370 - Gateway API versioning will continue to rely on two release channels - 371 Standard and Experimental. New resources will start in the Experimental 372 Channel with an alpha API Version and then graduate to the Standard Channel 373 with a GA API version. Resources that already have Beta API versions will 374 continue to have them, but no additional Gateway API resources will get a Beta 375 API version. (#2446, @robscott) 376 377 ### Cleanup 378 - Validating Webhook logs now use `Errorf` instead of `Fatalf`. (#2361, @yylt) 379 380 ### Other (Cleanup or Flake) 381 - Resources related to the validating webhook such as the `gateway-system` 382 namespace and the `gateway-api-admission-server` deployment have been removed 383 from the installation manifests, in favor of CEL based Validations that are 384 built into the CRD definition. These are still available in 385 `webhook-install.yaml` in case you would like to optionally install them. 386 (#2401, @arkodg) 387 388 389 # v0.8.1 390 391 This is a patch release that includes small bug fixes and a new conformance test 392 as a follow up to the v0.8.0 release. 393 394 ## Changes by Kind 395 396 ### Bug Fixes 397 398 - Fix CEL validation not handling missing listener hostname correctly. (#2370, 399 @frankbu) 400 - Fix IPv6 parsing in conformance tests (#2375, @keithmattix) 401 402 ### Conformance Tests 403 404 - Add conformance test for multiple mirror filters. (#2359, @levikobi) 405 406 # v0.8.0 407 408 ## Major Themes 409 410 ### GAMMA (Service Mesh) 411 Service mesh support per the GAMMA initiative has moved to **experimental** in 412 `v0.8.0`. As an experimental API, **it is still possible that this will 413 change**; the working group does not recommend shipping products based on any 414 experimental API. 415 416 When using the Gateway API to configure a service mesh, the Gateway and 417 GatewayClass resources are not used (as there will typically only be one mesh 418 in the cluster) and, instead, individual route resources are associated 419 directly with Service resources. This permits configuring mesh routing while 420 preserving the Gateway API's overall semantics. 421 422 We encourage service mesh implementers and users to try this new support and 423 we welcome feedback! Once again, though, the working group does not recommend 424 shipping products based on this or any other experimental API. due to the 425 possibility of incompatible changes prior to the final release. 426 427 ### CEL Validation 428 This release marks the beginning of a transition from webhook validation to CEL 429 validation that is built into the CRDs. That will mean different things 430 depending on the version of Kubernetes you're using: 431 432 #### Kubernetes 1.25+ 433 CEL validation is fully supported. Most validation is now covered by the 434 validating webhook, but unfortunately not quite everything. 435 436 All but one validation has been translated from the 437 webhook to CEL. Currently the CRDs only have a case-sensitive uniqueness check 438 for header names in header modifier filters. The webhook validation is more 439 thorough, ensuring that the uniqueness is case-insensitive. Unfortunately that 440 is not possible to represent with CEL today. There is more information in 441 [#2277](https://github.com/kubernetes-sigs/gateway-api/issues/2277). 442 443 Installing the validating webhook is still recommended for this release to allow 444 controllers to catch up to cover this gap in CEL validation. We expect this is 445 the last release we will make this recommendation for, for more information, 446 refer to [#2319](https://github.com/kubernetes-sigs/gateway-api/issues/2319). 447 448 #### Kubernetes 1.23 and 1.24 449 CEL validation is not supported, but Gateway API v0.8.0 CRDs can still be 450 installed. When you upgrade to Kubernetes 1.25+, the validation included in 451 these CRDs will automatically take effect. We recommend continuing to install 452 the validating webhook on these Kubernetes versions. 453 454 #### Kubernetes 1.22 and older 455 Unfortunately Gateway API v0.8.0 is not supported on these Kubernetes versions. 456 Gateway API v0.8.0 CRDs include CEL validation and cannot be installed on these 457 versions of Kubernetes. Note that Gateway API only commits to providing support 458 for the [5 most recent versions of 459 Kubernetes](https://gateway-api.sigs.k8s.io/concepts/versioning/#supported-versions), 460 and thus these versions are no longer supported by Gateway API. 461 462 ### API Version Changes 463 As we prepare for a v1.0 release that will graduate Gateway, GatewayClass, and 464 HTTPRoute to the `v1` API Version from `v1beta1`, we are continuing the process 465 of moving away from `v1alpha2` for resources that have graduated to `v1beta1`. 466 The following changes are included in this release: 467 468 - `v1alpha2` of Gateway, GatewayClass, and HTTPRoute is no longer served 469 - `v1alpha2` of ReferenceGrant is deprecated 470 - `v1beta1` is now the storage version for ReferenceGrant 471 472 Those changes mean that: 473 474 - Users and implementations that were reading or writing from `v1alpha2` of 475 Gateway, GatewayClass, or HTTPRoute MUST upgrade to use `v1beta1`. 476 - Users and implementations that were reading or writing from `v1alpha2` of 477 ReferenceGrant SHOULD upgrade to use `v1beta1`. 478 479 For more information, refer to 480 [#2069](https://github.com/kubernetes-sigs/gateway-api/pull/2069). 481 482 ### Multiple RequestMirror filters in the same HTTPRoute or GRPCRoute Rule 483 Gateway API now supports multiple RequestMirror filters within the same rule. 484 This enables implementations to mirror a request to multiple backends which 485 was not supported before. (#2199, #2256, @Liorlieberman) 486 487 ### Supported Features and Conformance Levels 488 Gateway API conformance tests have a concept of "Supported Features". 489 Implementations state which features they support, and then all the tests 490 covering that set of features are run. 491 492 Prior to v0.8.0, we had a concept of "StandardCoreFeatures" that represented the 493 set of features we expected every implementation to implement. Support for the 494 Gateway and HTTPRoute resources was included in that list. 495 496 Alongside that, Gateway API also has a concept of "Support Levels" such as 497 "Core", "Extended", and "Implementation-Specific". The API had labeled 2 498 resources as having support levels, but these didn't really make sense with 499 the modular API model of Gateway API. 500 501 In this release, we've simplified the concepts here. Individual resources no 502 longer have assigned support levels, instead these are represented as "Supported 503 Features." Implementations can separately claim to support Gateway, 504 ReferenceGrant, or any other resource. This change helps accommodate incoming 505 Mesh implementations, many of which do not support one or both of these 506 resources. 507 508 For more information refer to 509 [#2323](https://github.com/kubernetes-sigs/gateway-api/pull/2323). 510 511 512 ## Other Changes 513 514 ### Status 515 - Add IncompatibleFilters reason for implementations to specify when a route is 516 invalid due to an invalid combination of route filters. (#2150, @sunjayBhatia) 517 518 ### Validation 519 520 - Add CEL validation for GRPCRoute. (#2305, @gnossen) 521 - HTTPRoute and GRPCRoute CRDs now provide built-in validation that ensures the 522 uniqueness of names in Header Modifier "Remove" lists. (#2306, @robscott) 523 524 ### Spec Clarifications 525 526 - RequestMirrorFilter: Enhanced the doc string to be explicit about sending the 527 mirrored request to a single destination endpoint within the backendRef 528 specified. (#2317, @arkodg) 529 - HTTPRoute Method matching precedence has been clarified (#2054, 530 @gauravkghildiyal) 531 - Clarify that implementations must not modify HTTP Host header. Adds 532 specificity alongside spec that port in Host header must be ignored when 533 matching on host. (#2092, @sunjayBhatia) 534 - Fix typo: rename GatewaReasonUnsupportedAddress -> 535 GatewayReasonUnsupportedAddress (#2149, @panslava) 536 - HTTPRoute: Clarified that exact path matches are truly exact, both trailing 537 slashes and capitalization are meaningful. (#2055, @robscott) 538 - Implementations MUST ignore any port value specified in the HTTP Host header 539 while performing a match against HTTPRoute.Hostnames (#1980, 540 @gauravkghildiyal) 541 - Clarify support for using the same filter multiple times within the same HTTP or GRPC rule (#2199, #2256, @Liorlieberman) 542 543 ### Conformance 544 545 - Add conformance tests against accepting invalid ReferenceGrants in HTTPRoute 546 and TLSRoute (#2076, @meyskens) 547 - Fixed an issues causing conformance tests to fail when using IPv6 addresses 548 (#2024, @howardjohn) 549 - HTTPRoute connectivity is in now enforced in conformance tests if a relevant 550 ReferenceGrant gets deleted. (#1853, @pmalek) 551 - The `--skip-tests` flag has been added to the conformance CLI to enable tests 552 opt-out when using it. (#2170, @mlavacca) 553 - The experimental conformance profile suite can now be added as a stand-alone 554 cli and by means of `go test`. (#2066, @mlavacca) 555 - GEPs now must have a Conformance Details section that specifies the feature's 556 name for conformance purposes. (#2115, @youngnick) 557 - Better support mesh-only conformance testing (#2312, @kflynn) 558 - SupportedFeatures have been restructured to be per-resource (#2323, @robscott) 559 - Add SupportedFeature for port 8080 on Gateway (#2184, @xtineskim) 560 - Fixes for IPv6 in Mesh (#2340, @keithmattix) 561 - Fix leaking TCP connections which can lead to conformance test failures 562 (#2358, @gauravkghildiyal) 563 564 ### Webhook 565 566 - Changed default imagePullPolicy for gateway-api-admission-server to 567 IfNotPresent. (#2215, @networkhermit) 568 - Webhook config works with PodAdmission restricted (#2016, @jcpunk) 569 570 ### Documentation 571 572 - Adds support for ParentRef targeting a Kubernetes Service resource for mesh 573 implementations. (#2146, @mikemorris) 574 - Clarify wording on website around Gateway API vs API Gateway (#2191, 575 @david-martin) 576 - GEP-1282, Backend Properties, has been declined. (#2132, @youngnick) 577 - Added missing GEPs. (#2114, @levikobi) 578 579 ### Bug Fixes 580 581 - Added the missing ReferenceGrant resource the kustomization.yaml for the 582 standard channel (#2084, @howardjohn) 583 - Webhook validation now ensures that BackendRefs can not be specified in the 584 same HTTPRoute rule as a Redirect filter (#2161, @slayer321) 585 - GRPCRoute: The default match has been removed as it was invalid (it only 586 specified a type of "Exact" without a corresponding Service or Method). Note 587 that the match type still defaults to "Exact". (#2311, @gauravkghildiyal) 588 589 590 # v0.8.0-rc2 591 592 The working group expects that this release candidate is quite close to the final 593 v0.8.0 release. However, breaking API changes are still possible. 594 595 This release candidate is suitable for implementors, but the working group does 596 not recommend shipping products based on a release candidate API due to the 597 possibility of incompatible changes prior to the final release. The following 598 represents the changes since v0.8.0-rc1: 599 600 ## Changes by Kind 601 602 ### Validation 603 604 - Add CEL validation for GRPCRoute. (#2305, @gnossen) 605 - HTTPRoute and GRPCRoute CRDs now provide built-in validation that ensures the 606 uniqueness of names in Header Modifier "Remove" lists. (#2306, @robscott) 607 608 ### Bug Fixes 609 610 - GRPCRoute: The default match has been removed as it was invalid (it only 611 specified a type of "Exact" without a corresponding Service or Method). Note 612 that the match type still defaults to "Exact". (#2311, @gauravkghildiyal) 613 614 ### Spec Clarifications 615 616 - RequestMirrorFilter: Enhanced the doc string to be explicit about sending the 617 mirrored request to a single destination endpoint within the backendRef 618 specified. (#2317, @arkodg) 619 - Resources no longer have support levels, implementations can choose to support 620 whichever set of resources they want (#2323, @robscott) 621 622 ### Conformance 623 624 - Better support mesh-only conformance testing (#2312, @kflynn) 625 - SupportedFeatures have been restructured to be per-resource (#2323, @robscott) 626 627 # v0.8.0-rc1 628 629 The working group expects that this release candidate is quite close to the final 630 v0.8.0 release. However, breaking API changes are still possible. 631 632 This release candidate is suitable for implementors, but the working group does 633 not recommend shipping products based on a release candidate API due to the 634 possibility of incompatible changes prior to the final release. 635 636 ## Major Themes 637 638 ### GAMMA (Service Mesh) 639 Service mesh support per the GAMMA initiative has moved to **experimental** in 640 `v0.8.0`. As an experimental API, **it is still possible that this will 641 change**; the working group does not recommend shipping products based on any 642 experimental API. 643 644 When using the Gateway API to configure a service mesh, the Gateway and 645 GatewayClass resources are not used (as there will typically only be one mesh 646 in the cluster) and, instead, individual route resources are associated 647 directly with Service resources. This permits configuring mesh routing while 648 preserving the Gateway API's overall semantics. 649 650 We encourage service mesh implementers and users to try this new support and 651 we welcome feedback! Once again, though, the working group does not recommend 652 shipping products based on this or any other experimental API. due to the 653 possibility of incompatible changes prior to the final release. 654 655 ### CEL Validation 656 This release marks the beginning of a transition from webhook validation to CEL 657 validation that is built into the CRDs. That will mean different things 658 depending on the version of Kubernetes you're using: 659 660 #### Kubernetes 1.25+ 661 CEL validation is fully supported. Most validation is now covered by the 662 validating webhook, but unfortunately not quite everything. 663 664 **Standard Channel:** All but one validation has been translated from the 665 webhook to CEL. Currently the CRDs only have a case-sensitive uniqueness check 666 for header names in header modifier filters. The webhook validation is more 667 thorough, ensuring that the uniqueness is case-insensitive. Unfortunately that 668 is not possible to represent with CEL today. There is more information in 669 [#2277](https://github.com/kubernetes-sigs/gateway-api/issues/2277). 670 671 **Experimental Channel:** TCPRoute, TLSRoute, and UDPRoute are fully covered by 672 CEL validation. GRPCRoute still has some significant gaps in CEL validation that 673 will be covered in a future release. 674 675 #### Kubernetes 1.23 and 1.24 676 CEL validation is not supported, but Gateway API v0.8.0 CRDs can still be 677 installed. When you upgrade to Kubernetes 1.25+, the validation included in 678 these CRDs will automatically take effect. We recommend continuing to install 679 the validating webhook on these Kubernetes versions. 680 681 #### Kubernetes 1.22 and older 682 Unfortunately Gateway API v0.8.0 is not supported on these Kubernetes versions. 683 Gateway API v0.8.0 CRDs include CEL validation and cannot be installed on these 684 versions of Kubernetes. Note that Gateway API only commits to providing support 685 for the [5 most recent versions of 686 Kubernetes](https://gateway-api.sigs.k8s.io/concepts/versioning/#supported-versions), 687 and thus these versions are no longer supported by Gateway API. 688 689 ### API Version Changes 690 As we prepare for a v1.0 release that will graduate Gateway, GatewayClass, and 691 HTTPRoute to the `v1` API Version from `v1beta1`, we are continuing the process 692 of moving away from `v1alpha2` for resources that have graduated to `v1beta1`. 693 The following changes are included in this release: 694 695 - `v1alpha2` of Gateway, GatewayClass, and HTTPRoute is no longer served 696 - `v1alpha2` of ReferenceGrant is deprecated 697 - `v1beta1` is now the storage version for ReferenceGrant 698 699 Those changes mean that: 700 701 - Users and implementations that were reading or writing from `v1alpha2` of 702 Gateway, GatewayClass, or HTTPRoute MUST upgrade to use `v1beta1`. 703 - Users and implementations that were reading or writing from `v1alpha2` of 704 ReferenceGrant SHOULD upgrade to use `v1beta1`. 705 706 For more information, refer to 707 [#2069](https://github.com/kubernetes-sigs/gateway-api/pull/2069). 708 709 ## Other Changes 710 711 ### Status 712 - Add IncompatibleFilters reason for implementations to specify when a route is 713 invalid due to an invalid combination of route filters. (#2150, @sunjayBhatia) 714 715 ### Spec Clarifications 716 717 - HTTPRoute Method matching precedence has been clarified (#2054, 718 @gauravkghildiyal) 719 - Clarify that implementations must not modify HTTP Host header. Adds 720 specificity alongside spec that port in Host header must be ignored when 721 matching on host. (#2092, @sunjayBhatia) 722 - Fix typo: rename GatewaReasonUnsupportedAddress -> 723 GatewayReasonUnsupportedAddress (#2149, @panslava) 724 - HTTPRoute: Clarified that exact path matches are truly exact, both trailing 725 slashes and capitalization are meaningful. (#2055, @robscott) 726 - Implementations MUST ignore any port value specified in the HTTP Host header 727 while performing a match against HTTPRoute.Hostnames (#1980, 728 @gauravkghildiyal) 729 730 ### Conformance 731 732 - Add conformance tests against accepting invalid ReferenceGrants in HTTPRoute 733 and TLSRoute (#2076, @meyskens) 734 - Fixed an issues causing conformance tests to fail when using IPv6 addresses 735 (#2024, @howardjohn) 736 - HTTPRoute connectivity is in now enforced in conformance tests if a relevant 737 ReferenceGrant gets deleted. (#1853, @pmalek) 738 - The `--skip-tests` flag has been added to the conformance CLI to enable tests 739 opt-out when using it. (#2170, @mlavacca) 740 - The experimental conformance profile suite can now be added as a stand-alone 741 cli and by means of `go test`. (#2066, @mlavacca) 742 - GEPs now must have a Conformance Details section that specifies the feature's 743 name for conformance purposes. (#2115, @youngnick) 744 745 ### Webhook 746 747 - Changed default imagePullPolicy for gateway-api-admission-server to 748 IfNotPresent. (#2215, @networkhermit) 749 - Webhook config works with PodAdmission restricted (#2016, @jcpunk) 750 751 ### Documentation 752 753 - Adds support for ParentRef targeting a Kubernetes Service resource for mesh 754 implementations. (#2146, @mikemorris) 755 - Clarify wording on website around Gateway API vs API Gateway (#2191, 756 @david-martin) 757 - GEP-1282, Backend Properties, has been declined. (#2132, @youngnick) 758 - Added missing GEPs. (#2114, @levikobi) 759 760 ### Bug Fixes 761 762 - Added the missing ReferenceGrant resource the kustomization.yaml for the 763 standard channel (#2084, @howardjohn) 764 - Webhook validation now ensures that BackendRefs can not be specified in the 765 same HTTPRoute rule as a Redirect filter (#2161, @slayer321) 766 767 # v0.7.1 768 769 This is a patch release that includes small fixes, clarifications, and 770 conformance tests as a follow up to the v0.7.0 release. 771 772 ## Changes by Kind 773 774 ### Conformance Tests 775 776 - Fixed an issues causing conformance tests to fail when using IPv6 addresses. 777 (#2024, @howardjohn) 778 - HTTPRoute connectivity is in now enforced in conformance tests if a relevant 779 ReferenceGrant gets deleted. (#1853, @pmalek) 780 - New: Conformance tests for HTTP request mirroring. (#1912, @liorlieberman) 781 - Fixes to port and scheme redirect tests: Tests now send HTTPS requests with 782 consistent SNI and Host, Gateway now has the correct SANs. (#2039, @sunjaybhatia) 783 - TLSRoute test now waits for namespaces to be ready. (#2067, @skriss) 784 785 ### Validating Webhook 786 787 - Webhook config works with "restricted" Pod Security level. (#2016, @jcpunk) 788 789 ### Clarifications 790 791 - HTTPRoute Method matching precedence has been clarified. (#2054, 792 @gauravkghildiyal) 793 - Implementations MUST ignore any port value specified in the HTTP Host header 794 while performing a match against HTTPRoute.Hostnames. (#1980, 795 @gauravkghildiyal) 796 - HTTPRoute: Clarified that exact path matches are truly exact, both trailing 797 slashes and capitalization are meaningful. (#2055, @robscott) 798 - Gateway: Clarified that AttachedRoutes should only consider Routes that have 799 been accepted. (#2050, @mlavacca) 800 801 # v0.7.0 802 803 The v0.7.0 release focuses on refining and stabilizing existing APIs. This 804 included a focus on both conformance tests and clarifying ambiguous parts of the 805 API spec. 806 807 ## Features Graduating to Standard 808 In addition to those broad focuses, 2 features are graduating to the 809 standard channel: 810 811 * GEP-1323: Response Header Modifiers (#1905, @robscott) 812 * GEP-726: Path Redirects and Rewrites (#1905, @robscott) 813 814 ## GEPs 815 There are a lot of interesting GEPs in the pipeline right now, but only some of 816 these GEPs have made it to experimental status in time for v0.7.0. The GEPs 817 highlighted below are both in an experimental state and are either entirely new 818 (GEP-1748) or had significant new concepts introduced (GEP-713): 819 820 ### GEP-713: Policy Attachment 821 This GEP received a major update, splitting policy attachment into two 822 categories "Direct" and "Inherited". The new "Direct" mode enables a simplified 823 form of policy attachment for targeting a single resource (#1565, @youngnick). 824 825 ### GEP-1748: Gateway API Interaction with Multi-Cluster Services 826 A new GEP was introduced to define how Gateway API interacts with Multi-Cluster 827 Services. At a high level, this states that ServiceImports have "Extended" 828 support and can be used anywhere Services can throughout the API. There's a lot 829 more nuance here, so for the full details, refer to the GEP. (#1843, @robscott) 830 831 ## Other Changes by Kind 832 833 ### Status Changes 834 835 - The "Ready" Gateway and Listener condition has been reserved for future use. 836 (#1888, @howardjohn) 837 - The UnsupportedAddress Listener condition reason has been moved to a Gateway 838 condition reason. (#1888, @howardjohn) 839 - The AddressNotAssigned Gateway condition reasons has moved from Accepted to 840 Programmed. (#1888, @howardjohn) 841 - The NoResources Gateway condition reasons has moved from Ready to Programmed. 842 (#1888, @howardjohn) 843 844 ### Spec Cleanup 845 846 - Clarification that port redirects should not add port number to Location 847 header for HTTP and HTTPS requests on 80 and 443. (#1908, @robscott) 848 - Port redirect when empty will depend on the configured Redirect scheme (#1880, 849 @gauravkghildiyal) 850 - Updated spec to clarify that Exact matches have precedence over Prefix matches 851 and RegularExpression matches have implementation specific precedence. (#1855, 852 @Xunzhuo) 853 - The `gateway-exists-finalizer.gateway.networking.k8s.io` finalizer is no 854 longer required and is now just recommended. (#1917, @howardjohn) 855 856 ### Validation Fixes 857 858 - Removes GRPCRoute method match defaulting to allow for matching all requests, 859 or matching only by header. (#1753, @skriss) 860 - Update route validation to comply with RFC-3986 "p-char" characters. (#1644, 861 @jackstine) 862 - Illegal names like " " will be not allowed for query param name in 863 HTTPQueryParamMatch. (#1796, @gyohuangxin) 864 * Webhook: Port is now considered when validating that ParentRefs are unique 865 (#1995, @howardjohn) 866 867 ### Conformance 868 869 - No conformance tests run by default anymore, including tests for GatewayClass 870 and Gateway. A new SupportGateway feature must be opted into in order to run 871 those tests (similar to what we've done previously for ReferenceGrant and 872 HTTPRoute). Also with this release, `EnableAllSupportedFeatures` enables all 873 Gateway AND Mesh features (where previously that was just Gateway). (#1894, 874 @shaneutt) 875 - Gateways must publish the "Programmed" condition. (#1732, @robscott) 876 - Add `all-features` flag to enable all supported feature conformance tests. 877 (#1642, @gyohuangxin) 878 - A new SkipTests field has been added to the conformance test options to 879 opt-out of specific tests. (#1578, @mlavacca) 880 - Added: conformance tests for http rewrite host and path filters. (#1622, 881 @LiorLieberman) 882 - In Conformance tests, when a Route references a gateway having no listener 883 whose allowedRoutes criteria permit the route, the reason 884 NotAllowedByListeners should be used for the accepted condition. (#1669, 885 @mlavacca) 886 - Support configurable timeout for GatewayObservedGenerationBump (#1887, 887 @Xunzhuo) 888 - The conformance test HTTPRouteInvalidCrossNamespaceParentRef now requires the 889 HTTPRoute accepted condition to be failing with the ParentRefNotPermitted 890 reason. (#1694, @mlavacca) 891 - The conformance tests always check that the HTTPRoute ResolvedRefs condition 892 is enforced, even when the status is true. (#1668, @mlavacca) 893 - Checks for the NotAllowedByListeners reason on the HTTPRoute's Accepted: false 894 condition in the HTTPRouteInvalidCrossNamespaceParentRef conformance test. 895 (#1714, @skriss) 896 - Added conformance test to verify that path matching precedence is 897 implemented correctly. (#1855, @Xunzhuo) 898 - Remove a test that only covered redirect status without any other changes. 899 (#2007, @robscott) 900 - Port redirect when empty will depend on the configured Redirect scheme (#1880, 901 @gauravkghildiyal) 902 - Fixes for mesh conformance tests (#2017, @keithmattix) 903 904 ### Documentation 905 906 - Updated outdated content on list of resources in installation guide page. 907 (#1857, @randmonkey) 908 - Fix description of ReferenceGrant example in documentation by making it use 909 the correct resources. (#1864, @matteoolivi) 910 - Fix grammar mistake in ReferenceGrant implementation guidelines. (#1865, 911 @matteoolivi) 912 913 # v0.7.0-rc2 914 915 We expect this to be our final release candidate before launching v0.7.0. This 916 release candidate includes a variety of clarifications and conformance updates. 917 The changelog below represents the changes since v0.7.0-rc1. 918 919 ## Changes by Kind 920 921 ### Spec Clarification 922 923 - Port redirect when empty will depend on the configured Redirect scheme (#1880, 924 @gauravkghildiyal) 925 926 ### Conformance 927 928 - Remove a test that only covered redirect status without any other changes. 929 (#2007, @robscott) 930 - Port redirect when empty will depend on the configured Redirect scheme (#1880, 931 @gauravkghildiyal) 932 933 ### Validation Fixes 934 935 * Webhook: Port is now considered when validating that ParentRefs are unique 936 (#1995, @howardjohn) 937 938 # v0.7.0-rc1 939 940 ## Changes by Kind 941 942 ### Graduating to Standard 943 944 - GEP-1323: Response Header Modifier has graduated to standard (#1905, 945 @robscott) 946 - GEP-726: Path Redirects and Rewrites has graduated to the standard channel. 947 (#1874, @robscott) 948 949 ### Experimental GEPs 950 951 - The Policy Attachment GEP received a major update, splitting policy attachment 952 into two categories "Direct" and "Inherited". The new "Direct" mode enables a 953 simplified form of policy attachment for targeting a single resource (#1565, 954 @youngnick) 955 - A new GEP was introduced to define how Gateway API interacts with 956 Multi-Cluster Services (#1843, @robscott) 957 958 ### Status Changes 959 960 - The "Ready" Gateway and Listener condition has been reserved for future use. 961 (#1888, @howardjohn) 962 - The UnsupportedAddress Listener condition reason has been moved to a Gateway 963 condition reason. (#1888, @howardjohn) 964 - The AddressNotAssigned Gateway condition reasons has moved from Accepted to 965 Programmed. (#1888, @howardjohn) 966 - The NoResources Gateway condition reasons has moved from Ready to Programmed. 967 (#1888, @howardjohn) 968 969 ### Spec Cleanup 970 971 - Clarification that port redirects should not add port number to Location 972 header for HTTP and HTTPS requests on 80 and 443. (#1908, @robscott) 973 - Updated spec to clarify that Exact matches have precedence over Prefix matches 974 and RegularExpression matches have implementation specific precedence. (#1855, 975 @Xunzhuo) 976 - The `gateway-exists-finalizer.gateway.networking.k8s.io` finalizer is no 977 longer required and is now just recommended. (#1917, @howardjohn) 978 979 ### Validation Fixes 980 981 - Removes GRPCRoute method match defaulting to allow for matching all requests, 982 or matching only by header. (#1753, @skriss) 983 - Update route validation to comply with RFC-3986 "p-char" characters. (#1644, 984 @jackstine) 985 - Illegal names like " " will be not allowed for query param name in 986 HTTPQueryParamMatch. (#1796, @gyohuangxin) 987 988 ### Conformance 989 990 - No conformance tests run by default anymore, including tests for GatewayClass 991 and Gateway. A new SupportGateway feature must be opted into in order to run 992 those tests (similar to what we've done previously for ReferenceGrant and 993 HTTPRoute). Also with this release, `EnableAllSupportedFeatures` enables all 994 Gateway AND Mesh features (where previously that was just Gateway). (#1894, 995 @shaneutt) 996 - Gateways must publish the "Programmed" condition. (#1732, @robscott) 997 - Add `all-features` flag to enable all supported feature conformance tests. 998 (#1642, @gyohuangxin) 999 - A new SkipTests field has been added to the conformance test options to 1000 opt-out of specific tests. (#1578, @mlavacca) 1001 - Added: conformance tests for http rewrite host and path filters. (#1622, 1002 @LiorLieberman) 1003 - In Conformance tests, when a Route references a gateway having no listener 1004 whose allowedRoutes criteria permit the route, the reason 1005 NotAllowedByListeners should be used for the accepted condition. (#1669, 1006 @mlavacca) 1007 - Support configurable timeout for GatewayObservedGenerationBump (#1887, 1008 @Xunzhuo) 1009 - The conformance test HTTPRouteInvalidCrossNamespaceParentRef now requires the 1010 HTTPRoute accepted condition to be failing with the ParentRefNotPermitted 1011 reason. (#1694, @mlavacca) 1012 - The conformance tests always check that the HTTPRoute ResolvedRefs condition 1013 is enforced, even when the status is true. (#1668, @mlavacca) 1014 - Checks for the NotAllowedByListeners reason on the HTTPRoute's Accepted: false 1015 condition in the HTTPRouteInvalidCrossNamespaceParentRef conformance test. 1016 (#1714, @skriss) 1017 - Added conformance test to verify that path matching precedence is 1018 implemented correctly. (#1855, @Xunzhuo) 1019 1020 ### Documentation 1021 1022 - Updated outdated content on list of resources in installation guide page. 1023 (#1857, @randmonkey) 1024 - Fix description of ReferenceGrant example in documentation by making it use 1025 the correct resources. (#1864, @matteoolivi) 1026 - Fix grammar mistake in ReferenceGrant implementation guidelines. (#1865, 1027 @matteoolivi) 1028 1029 # v0.6.2 1030 1031 This is a patch release that predominantly includes updated conformance tests 1032 for implementations to implement. 1033 1034 For all major changes since the `v0.5.x` release series, please see the 1035 [v0.6.0](/#v060) release notes. 1036 1037 ## Maintenance 1038 1039 - As per [changes in upstream to container image registries] we replaced all 1040 usage of the k8s.gcr.io registry with registry.k8s.io. 1041 (#1736, @shaneutt) 1042 1043 [changes in upstream to container image registries]:https://github.com/kubernetes/k8s.io/issues/4738 1044 1045 ## Bug Fixes 1046 1047 - Fix invalid HTTP redirect/rewrite examples. 1048 (#1787, @Xunzhuo) 1049 1050 ## Conformance Test Updates 1051 1052 - The `HTTPRouteInvalidCrossNamespaceParentRef` conformance test now checks for 1053 the `NotAllowedByListeners` reason on the `HTTPRoute`'s `Accepted: false` 1054 condition to better indicate why the route was note accepted. 1055 (#1714, @skriss) 1056 - A conformance test was added for `HTTPRoute` to cover the behavior of a 1057 non-matching `SectionName` similar to what was already present for 1058 `ListenerPort`. 1059 (#1719, @zaunist) 1060 - Fixed an issue where tests may fail erroneously on the removal of resources 1061 that are already removed. 1062 (#1745, @mlavacca) 1063 - Logging in conformance utilities related to resource's `ObservedGeneration` 1064 has been improved to emit the `ObservedGenerations that are found for the 1065 purpose of making it easier to debug test failures and be more verbose about 1066 the objects in question. 1067 (#1761, @briantkennedy) 1068 (#1763, @briantkennedy) 1069 - Patch instead of update in some places in conformance tests to reduce noise 1070 in logs. 1071 (#1760, @michaelbeaumont) 1072 - Added `AttachedRoutes` testing to conformance tests. 1073 (#1624, @ChaningHwang) 1074 - The conformance tests always check that the HTTPRoute ResolvedRefs condition 1075 is enforced, even when the status is true. 1076 (#1668, @mlavacca) 1077 1078 # v0.6.1 1079 1080 This is a patch release that predominantly includes updated conformance tests 1081 for implementations to implement. 1082 1083 For all major changes since the `v0.5.x` release series, please see the 1084 [v0.6.0](/#v060) release notes. 1085 1086 ## Bug Fixes 1087 1088 - Our regex for validating path characters was updated to accurately identify 1089 "p-chars" as per RFC-3986. 1090 (#1644, @jackstine) 1091 - An erroneous "namespace" field was present in our webhook ClusterRoleBindings 1092 and has been removed. 1093 (#1684, @tao12345666333) 1094 1095 ## New Features 1096 1097 - Conditions for Policies have been added to the Golang library, enabling 1098 Go-based implementations to re-use those for their downstream Policies. 1099 (#1682, @mmamczur) 1100 1101 ## Conformance Test Updates 1102 1103 - Added conformance tests for checking Port, Scheme and Path to the extended and 1104 experimental features. 1105 (#1611, @LiorLieberman) 1106 - Added conformance tests for HTTP rewrite 1107 (#1622, #1628, @LiorLieberman) 1108 - Added more conformance tests for path matching to catch known edge cases. 1109 (#1627, @sunjayBhatia) 1110 - Added some initial conformance tests for TLSRoute passthrough. 1111 (#1579, @candita) 1112 - Added conformance tests that exercise NotAllowedByListeners reason. 1113 (#1669, @mlavacca) 1114 - Loosen the Accepted check in GatewayClass observed generation tests to 1115 provide a more realistic test for implementations. 1116 (#1655, @arkodg) 1117 - A "SkipTests" field has been added to accommodate implementations in 1118 running subsets of the tests as needed, this can be particularly helpful 1119 for new implementations that want to add conformance iteratively. 1120 (#1578, @mlavacca) 1121 - Fixed a broken test for GRPCRoute that caused an erroneous failure. 1122 (#1692, @arkodg) 1123 - Added "all-features" flag to conformance test to enable all supported 1124 features on test runs. 1125 (#1642, @gyohuangxin) 1126 - Fixed usage of `net/http` default client in conformance test suite 1127 (#1617, @howardjohn) 1128 - Fixed missing reference to NoMatchingParent in godoc 1129 (#1671, @mlavacca) 1130 1131 # v0.6.0 1132 1133 ## Major Changes 1134 1135 ### ReferenceGrant moves to `v1beta1`, ReferencePolicy removed 1136 1137 With more implementations now supporting ReferenceGrant (and more conformance coverage of the resource), we've moved ReferenceGrant to `v1beta1` in this release. **Note** that moving to beta also moves the object to the Standard channel (it was Experimental previously). 1138 1139 We've also removed the already-deprecated ReferencePolicy resource, so please move over to the shiny new ReferenceGrant, which has all the same features. 1140 1141 - Promotes ReferenceGrant to the v1beta1 API and the standard release channel 1142 (#1455, @nathancoleman) 1143 - ReferencePolicy has been removed from the API in favor of ReferenceGrant. 1144 (#1406, @robscott) 1145 1146 ### Introduce GRPCRoute 1147 1148 The `GRPCRoute` resource has been introduced in order to simplify the routing of GRPC requests. 1149 Its design is described in [GEP-1016](https://gateway-api.sigs.k8s.io/geps/gep-1016/). 1150 As it is a new resource, it is introduced in the experimental channel. 1151 1152 Thanks to @gnossen for pushing this ahead. 1153 1154 - Introduce GRPCRoute resource. (#1115, @gnossen) 1155 1156 ### Status updates 1157 1158 As described in [GEP-1364](https://gateway-api.sigs.k8s.io/geps/gep-1364/), status conditions have been updated within the Gateway resource to make it more consistent with the rest of the API. These changes, along with some other status changes, are detailed below. 1159 1160 Gateway: 1161 1162 * New `Accepted` and `Programmed` conditions introduced. 1163 * `Scheduled` condition deprecated. 1164 * Core Conditions now `Accepted` and `Programmed`. 1165 * Moves to Extended: `Ready`. 1166 1167 Gateway Listener: 1168 1169 * New `Accepted` and `Programmed` conditions introduced. 1170 * `Detached` condition deprecated. 1171 * Core Conditions now `Accepted`, `Programmed`, `ResolvedRefs`, and `Conflicted`. 1172 * Moves to Extended: `Ready`. 1173 1174 All Resources: 1175 1176 * The `Accepted` Condition now has a `Pending` reason, which is the default until 1177 the condition is updated by a controller. 1178 1179 Route resources: 1180 1181 * The `Accepted` Condition now has a `NoMatchingParent` reason, to be set on routes 1182 when no matching parent can be found. 1183 1184 The purpose of these changes is to make the status flows more consistent across objects, and to provide a clear pattern for new objects as we evolve the API. 1185 1186 > **Note**: This change will require updates for implementations to be able to pass conformance tests. Implementations may choose to publish both new and old conditions, or only new conditions. 1187 1188 - Adds `Accepted` and deprecates `Detached` Listener conditions and reasons (#1446, @mikemorris) 1189 - Adds `Accepted` and deprecates `Scheduled` Gateway conditions and reasons (#1447, @mikemorris) 1190 - Adds `Pending` reason for use with all `Accepted` conditions throughout the API (#1453, @youngnick) 1191 - Adds `Programmed` Gateway and Listener conditions, moves `Ready` to extended 1192 conformance (#1499, @LCaparelli) 1193 - Add `RouteReasonNoMatchingParent` reason for `Accepted` condition. (#1516, @pmalek) 1194 1195 ## Other Changes by type 1196 1197 ### Deprecations 1198 1199 - GatewayClass, Gateway, and HTTPRoute are now only supported with the v1beta1 1200 version of the API. The v1alpha2 API versions of these resources will be fully 1201 removed in a future release. Additionally, v1alpha2 is marked as deprecated 1202 everywhere. (#1348 and #1405, @robscott) 1203 1204 ### API Changes 1205 1206 - A new field `responseHeaderModifier` is added to `.spec.rules.filters`, which 1207 allows for modification of HTTP response headers (#1373, @aryan9600) 1208 - Display the Programmed condition instead of the Ready condition in the output 1209 - HTTPRoute: Validating webhook now ensures that Exact and Prefix path match 1210 values can now only include valid path values per RFC-3986. (RegularExpression 1211 path matches are not affected by this change). (#1599, @robscott) 1212 - `RegularExpression` type selectors have been clarified to all be 1213 `ImplementationSpecific` conformance. (#1604, @youngnick) 1214 1215 ### Documentation 1216 1217 - Clarify that BackendObjectReference's Port field specifies a service port, not 1218 a target port, for Kubernetes Service backends. (#1332, @Miciah) 1219 - HTTPRequestHeaderFilter and HTTPResponseHeaderFilter forbid configuring 1220 multiple actions for the same header. (#1497, @rainest) 1221 - Changes "custom" conformance level to "implementation-specific" (#1436, 1222 @LCaparelli) 1223 - Clarification that changes to ReferenceGrants MUST be reconciled (#1429, 1224 @robscott) 1225 1226 ### Conformance Tests 1227 1228 - ExemptFeatures have been merged into SupportedFeatures providing implementations 1229 a uniform way to specify the features they support. 1230 (#1507, @robscott) (#1394, @gyohuangxin) 1231 - To be conformant with the API, if there is no ReferenceGrant that grants a 1232 listener to reference a secret in another namespace, the 1233 ListenerConditionReason for the condition ResolvedRefs must be set to 1234 RefNotPermitted instead of InvalidCertificateRef. (#1305, @mlavacca) 1235 - A new test has been added to cover HTTP Redirects (#1556, @LiorLieberman) 1236 - Fix Gateway reference in HTTPRouteInvalidParentRefNotMatchingListenerPort 1237 (#1591, @sayboras) 1238 1239 ### Build Changes 1240 1241 - We now provide a [multi-arch](https://www.docker.com/blog/multi-arch-images/) 1242 image including new support for `arm64` in addition to `amd64` for our 1243 validating webhook. 1244 (#627, @wilsonwu & @Xunzhuo) 1245 1246 ### Developer Notes 1247 1248 - Deprecated `v1alpha2` Go types are now aliases to their `v1beta1` versions 1249 (#1390, @howardjohn) 1250 1251 # v0.6.0-rc2 1252 1253 We expect this to be our final release candidate before launching v0.6.0. This 1254 release candidate includes a variety of cleanup and documentation updates. The 1255 changelog below represents the changes since v0.6.0-rc1. 1256 1257 ### Conformance Tests 1258 1259 - A new test has been added to cover HTTP Redirects (#1556, @LiorLieberman) 1260 - Fix Gateway reference in HTTPRouteInvalidParentRefNotMatchingListenerPort 1261 (#1591, @sayboras) 1262 1263 ### General Cleanup 1264 1265 - Display the Programmed condition instead of the Ready condition in the output 1266 of `kubectl get gateways`. (#1602, @skriss) 1267 - GRPCRoute: Regex validation for Method and Service has been tightened to match 1268 GRPC spec. (#1599, @robscott) 1269 - GRPCRoute: Webhook validation of GRPCRoute has been expanded to closely match 1270 HTTPRoute validation. (#1599, @robscott) 1271 - HTTPRoute and Gateway: Gaps between webhook validation for v1alpha2 and 1272 v1beta1 have been closed. (#1599, @robscott) 1273 - HTTPRoute: Validating webhook now ensures that Exact and Prefix path match 1274 values can now only include valid path values per RFC-3986. (RegularExpression 1275 path matches are not affected by this change). (#1599, @robscott) 1276 - The Gateway default conditions list now includes the Programmed condition. 1277 (#1604, @youngnick) 1278 - `RegularExpression` type selectors have been clarified to all be 1279 `ImplementationSpecific` conformance. (#1604, @youngnick) 1280 1281 # v0.6.0-rc1 1282 1283 ## Major Changes 1284 1285 ### ReferenceGrant moves to `v1beta1`, ReferencePolicy removed 1286 1287 With more implementations now supporting ReferenceGrant (and more conformance coverage of the resource), we've moved ReferenceGrant to `v1beta1` in this release. **Note** that moving to beta also moves the object to the Standard channel (it was Experimental previously). 1288 1289 We've also removed the already-deprecated ReferencePolicy resource, so please move over to the shiny new ReferenceGrant, which has all the same features. 1290 1291 - Promotes ReferenceGrant to the v1beta1 API and the standard release channel 1292 (#1455, @nathancoleman) 1293 - ReferencePolicy has been removed from the API in favor of ReferenceGrant. 1294 (#1406, @robscott) 1295 1296 ### Introduce GRPCRoute 1297 1298 The `GRPCRoute` resource has been introduced in order to simplify the routing of GRPC requests. 1299 Its design is described in [GEP-1016](https://gateway-api.sigs.k8s.io/geps/gep-1016/). 1300 As it is a new resource, it is introduced in the experimental channel. 1301 1302 Thanks to @gnossen for pushing this ahead. 1303 1304 - Introduce GRPCRoute resource. (#1115, @gnossen) 1305 1306 ### Status updates 1307 1308 As described in [GEP-1364](https://gateway-api.sigs.k8s.io/geps/gep-1364/), status conditions have been updated within the Gateway resource to make it more consistent with the rest of the API. These changes, along with some other status changes, are detailed below. 1309 1310 Gateway: 1311 1312 * New `Accepted` and `Programmed` conditions introduced. 1313 * `Scheduled` condition deprecated. 1314 * Core Conditions now `Accepted` and `Programmed`. 1315 * Moves to Extended: `Ready`. 1316 1317 Gateway Listener: 1318 1319 * New `Accepted` and `Programmed` conditions introduced. 1320 * `Detached` condition deprecated. 1321 * Core Conditions now `Accepted`, `Programmed`, `ResolvedRefs`, and `Conflicted`. 1322 * Moves to Extended: `Ready`. 1323 1324 All Resources: 1325 1326 * The `Accepted` Condition now has a `Pending` reason, which is the default until 1327 the condition is updated by a controller. 1328 1329 Route resources: 1330 1331 * The `Accepted` Condition now has a `NoMatchingParent` reason, to be set on routes 1332 when no matching parent can be found. 1333 1334 The purpose of these changes is to make the status flows more consistent across objects, and to provide a clear pattern for new objects as we evolve the API. 1335 1336 > **Note**: This change will require updates for implementations to be able to pass conformance tests. Implementations may choose to publish both new and old conditions, or only new conditions. 1337 1338 - Adds `Accepted` and deprecates `Detached` Listener conditions and reasons (#1446, @mikemorris) 1339 - Adds `Accepted` and deprecates `Scheduled` Gateway conditions and reasons (#1447, @mikemorris) 1340 - Adds `Pending` reason for use with all `Accepted` conditions throughout the API (#1453, @youngnick) 1341 - Adds `Programmed` Gateway and Listener conditions, moves `Ready` to extended 1342 conformance (#1499, @LCaparelli) 1343 - Add `RouteReasonNoMatchingParent` reason for `Accepted` condition. (#1516, @pmalek) 1344 1345 ## Other Changes by type 1346 1347 ### Deprecations 1348 1349 - GatewayClass, Gateway, and HTTPRoute are now only supported with the v1beta1 1350 version of the API. The v1alpha2 API versions of these resources will be fully 1351 removed in a future release. Additionally, v1alpha2 is marked as deprecated 1352 everywhere. (#1348 and #1405, @robscott) 1353 1354 ### API Changes 1355 1356 - A new field `responseHeaderModifier` is added to `.spec.rules.filters`, which 1357 allows for modification of HTTP response headers (#1373, @aryan9600) 1358 1359 ### Conformance Tests 1360 1361 - ExemptFeatures have been merged into SupportedFeatures providing implementations 1362 a uniform way to specify the features they support. 1363 (#1507, @robscott) (#1394, @gyohuangxin) 1364 - To be conformant with the API, if there is no ReferenceGrant that grants a 1365 listener to reference a secret in another namespace, the 1366 ListenerConditionReason for the condition ResolvedRefs must be set to 1367 RefNotPermitted instead of InvalidCertificateRef. (#1305, @mlavacca) 1368 1369 ### Developer Notes 1370 1371 - Deprecated `v1alpha2` Go types are now aliases to their `v1beta1` versions 1372 (#1390, @howardjohn) 1373 - Moved type translation helpers from the `utils` package to a new package named 1374 `translator`. (#1337, @carlisia) 1375 1376 ### Documentation 1377 1378 - Clarify that BackendObjectReference's Port field specifies a service port, not 1379 a target port, for Kubernetes Service backends. (#1332, @Miciah) 1380 - HTTPRequestHeaderFilter and HTTPResponseHeaderFilter forbid configuring 1381 multiple actions for the same header. (#1497, @rainest) 1382 - Changes "custom" conformance level to "implementation-specific" (#1436, 1383 @LCaparelli) 1384 - Clarification that changes to ReferenceGrants MUST be reconciled (#1429, 1385 @robscott) 1386 1387 ## v0.5.1 1388 1389 API versions: v1beta1, v1alpha2 1390 1391 This release includes a number of bug fixes and clarifications: 1392 1393 ### API Spec 1394 1395 * The spec has been clarified to state that the port specified in BackendRef 1396 refers to the Service port number, not the target port, when a Service is 1397 referenced. [#1332](https://github.com/kubernetes-sigs/gateway-api/pull/1332) 1398 * The spec has been clarified to state that "Accepted" should be used instead of 1399 "Attached" on HTTPRoute. 1400 [#1382](https://github.com/kubernetes-sigs/gateway-api/pull/1382) 1401 1402 ### Webhook: 1403 1404 * The duplicate gateway-system namespace definitions have been removed. 1405 [#1387](https://github.com/kubernetes-sigs/gateway-api/pull/1387) 1406 * The webhook has been updated to watch v1beta1. 1407 [#1365](https://github.com/kubernetes-sigs/gateway-api/pull/1368) 1408 1409 ### Conformance: 1410 1411 * The expected condition for a cross-namespace certificate reference that has 1412 not been allowed by a ReferenceGrant has been changed from 1413 "InvalidCertificateRef" to "RefNotPermitted" to more closely match the spec. 1414 [#1351](https://github.com/kubernetes-sigs/gateway-api/pull/1351) 1415 * A new test has been added to cover when a Gateway references a Secret that 1416 does not exist 1417 [#1334](https://github.com/kubernetes-sigs/gateway-api/pull/1334) 1418 1419 1420 ## v0.5.0 1421 1422 API versions: v1beta1, v1alpha2 1423 1424 This release is all about stability. 1425 1426 Changes in this release can largely be divided into the following categories: 1427 1428 - Release Channels 1429 - Resources graduating to beta 1430 - New experimental features 1431 - Bug Fixes 1432 - General Improvements 1433 - Breaking Changes 1434 - Validation improvements 1435 - Internal type cleanup 1436 1437 Note: This release is largely identical to v0.5.0-rc2, this changelog tracks 1438 the difference between v0.5.0 and v0.4.3. 1439 1440 ### Release channels 1441 1442 In this release, we've made two release channels available, `experimental` and 1443 `standard`. 1444 1445 The `experimental` channel contains all resources and fields, while `standard` 1446 contains only resources that mave moved to beta status. 1447 1448 We've also added a way to flag particular fields within a resource as 1449 experimental, and any fields marked in this way are only present in the 1450 `experimental` channel. Please see the [versioning][vers] docs for a more 1451 detailed explanation. 1452 1453 One caveat for the standard channel - due to work on the new ReferenceGrant 1454 resource: conformance tests may not pass with the `standard` set of CRDs. 1455 1456 [vers]:https://gateway-api.sigs.k8s.io/concepts/versioning/ 1457 1458 ### Resources Graduating to BETA 1459 1460 The following APIs have been promoted to a `v1beta1` maturity: 1461 1462 - `GatewayClass` 1463 - `Gateway` 1464 - `HTTPRoute` 1465 1466 [#1192](https://github.com/kubernetes-sigs/gateway-api/pull/1192) 1467 1468 ### New Experimental Features 1469 1470 - Routes can now select `Gateway` listeners by port number 1471 [#1002](https://github.com/kubernetes-sigs/gateway-api/pull/1002) 1472 - Gateway API now includes "Experimental" release channel. Consequently, CRDs now 1473 include `gateway.networking.k8s.io/bundle-version` and 1474 `gateway.networking.k8s.io/channel` annotations. 1475 [#945](https://github.com/kubernetes-sigs/gateway-api/pull/945) 1476 - URL Rewrites and Path redirects have been added as new "Experimental" features 1477 [#945](https://github.com/kubernetes-sigs/gateway-api/pull/945) 1478 1479 ### Bug Fixes 1480 1481 - Fixes a problem that would cause webhook deployment to fail on Kubernetes 1482 v1.22 and greater. 1483 [#991](https://github.com/kubernetes-sigs/gateway-api/pull/991) 1484 - Fixes a bug where the `Namespace` could be unspecified in `ReferencePolicy` 1485 [#964](https://github.com/kubernetes-sigs/gateway-api/pull/964) 1486 - Fixes a bug where v1alpha2 GatewayClass controller names were not being 1487 shown in the output of `kubectl get gatewayclasses` 1488 [#909](https://github.com/kubernetes-sigs/gateway-api/pull/909) 1489 1490 ### General Improvements 1491 1492 - Conformance tests were introduced with [GEP-917][gep-917] and multiple 1493 conformance tests were added from a variety of contributors under the 1494 `conformance/` directory. 1495 - The status of the GatewayClass "Accepted" condition for the `GatewayClass` 1496 is now present in `kubectl get` output. 1497 [#1168](https://github.com/kubernetes-sigs/gateway-api/pull/1168) 1498 - New `RouteConditionReason` types `RouteReasonNotAllowedByListeners` and 1499 `RouteReasonNoMatchingListenerHostname` were added. 1500 [#1155](https://github.com/kubernetes-sigs/gateway-api/pull/1155) 1501 - New `RouteConditionReason` type added with `RouteReasonAccepted`, 1502 `RouteReasonResolvedRefs` and `RouteReasonRefNotPermitted` constants. 1503 [#1114](https://github.com/kubernetes-sigs/gateway-api/pull/1114) 1504 - Introduced PreciseHostname which prevents wildcard characters in relevant 1505 Hostname values. 1506 [#956](https://github.com/kubernetes-sigs/gateway-api/pull/956) 1507 1508 [gep-917]:https://gateway-api.sigs.k8s.io/geps/gep-917/ 1509 1510 ### Validation Improvements 1511 1512 - Webhook validation now ensures that a path match exists when required by path 1513 modifier in filter. 1514 [#1171](https://github.com/kubernetes-sigs/gateway-api/pull/1171) 1515 - Webhook validation was added to ensure that only type-appropriate fields are 1516 set in `HTTPPathModifier`. 1517 [#1124](https://github.com/kubernetes-sigs/gateway-api/pull/1124) 1518 - The Gateway API webhook is now deployed in a `gateway-system` namespace 1519 instead of `gateway-api`. 1520 [#1051](https://github.com/kubernetes-sigs/gateway-api/pull/1051) 1521 - Adds webhook validation to ensure that no HTTP header or query param is 1522 matched more than once in a given route rule. (#1230, @skriss) 1523 1524 ### Breaking Changes 1525 1526 - The v1alpha1 API version was deprecated and removed. 1527 [#1197](https://github.com/kubernetes-sigs/gateway-api/pull/1197) 1528 [#906](https://github.com/kubernetes-sigs/gateway-api/issues/906) 1529 - The `NamedAddress` value for `Gateway`'s `spec.addresses[].type` field has 1530 been deprecated, and support for domain-prefixed values (like 1531 `example.com/NamedAddress`) has been added instead to better represent the 1532 custom nature of this support. 1533 [#1178](https://github.com/kubernetes-sigs/gateway-api/pull/1178) 1534 - Implementations are now expected to use `500` instead of `503` responses when 1535 the data-plane has no matching route. 1536 [#1151](https://github.com/kubernetes-sigs/gateway-api/pull/1151), 1537 [#1258](https://github.com/kubernetes-sigs/gateway-api/pull/1258) 1538 1539 #### UX and Status Improvements 1540 1541 The following are **breaking changes** related to status updates and end-user 1542 experience changes. 1543 1544 - The `UnsupportedExtension` named `ListenerConditionReason` has been removed. 1545 [#1146](https://github.com/kubernetes-sigs/gateway-api/pull/1146) 1546 - The `RouteConflict` named `ListenerConditionReason` has been removed. 1547 [#1145](https://github.com/kubernetes-sigs/gateway-api/pull/1145) 1548 1549 #### Internal Type Cleanup 1550 1551 These changes will only affect implementations. Implementors will need to adjust 1552 for the type changes when updating the Gateway API dependency in their projects. 1553 1554 **NOTE**: These kinds of changes are not always present in the CHANGELOG so 1555 please be aware that the CHANGELOG is not an exhaustive list of Go 1556 type changes. In this case there were a significant number of changes 1557 in a single release, so we included them for extra visibility for 1558 implementors. 1559 1560 - `ReferencePolicy` has been renamed to `ReferenceGrant`. 1561 [#1179](https://github.com/kubernetes-sigs/gateway-api/pull/1179) 1562 - `GatewayTLSConfig`'s `CertificateRefs` field is now a slice of pointers to 1563 structs instead of the structs directly. 1564 [#1176](https://github.com/kubernetes-sigs/gateway-api/pull/1176) 1565 - `HTTPPathModifier` field `Absolute` renamed to `ReplaceFullPath` 1566 [#1124](https://github.com/kubernetes-sigs/gateway-api/pull/1124) 1567 - the `ParentRef` type was renamed to `ParentReference` 1568 [#982](https://github.com/kubernetes-sigs/gateway-api/pull/982) 1569 - Types `ConditionRouteAccepted` and `ConditionRouteResolvedRefs` are now 1570 deprecated in favor of `RouteConditionAccepted` & `RouteConditionResolvedRefs` 1571 [#1114](https://github.com/kubernetes-sigs/gateway-api/pull/1114) 1572 1573 1574 ## v0.5.0-rc2 1575 1576 API versions: v1beta1, v1alpha2 1577 1578 We expect this to be our final release candidate before launching v0.5.0. This 1579 release candidate includes a variety of cleanup and documentation updates. 1580 1581 ### Webhook 1582 1583 - Adds webhook validation to ensure that no HTTP header or query param is 1584 matched more than once in a given route rule. (#1230, @skriss) 1585 1586 ### Documentation 1587 1588 - Add examples and documentation for v1beta1 (#1238, @EmilyShepherd) 1589 - Add policy attachment example (#1233, @keithmattix) 1590 - Add warning headers for experimental resources/concepts (#1234, @keithmattix) 1591 - All Enum API fields have had updates to clarify that we may add values at any 1592 time, and that implementations must handle unknown Enum values. (#1258, 1593 @youngnick) 1594 - Spacing has been improved around the documentation of feature-level 1595 core/extended support for better readability and clarity. (#1241, @acnodal-tc) 1596 - Update ReferenceGrant docs to include Gateways that reference a Secret in a 1597 different namespace (#1181, @nathancoleman) 1598 1599 ### Cleanup 1600 1601 - ReferencePolicyList Items is an array of ReferencePolicy again (#1239, 1602 @dprotaso) 1603 - This release of experimental-install.yaml will apply successfully. Previous 1604 releases had some extraneous yaml. (#1232, @acnodal-tc) 1605 - The NamedAddress type is back to support backwards compatibility but it is 1606 still formally deprecated. (#1252, @robscott) 1607 1608 ## v0.5.0-rc1 1609 1610 API versions: v1beta1, v1alpha2 1611 1612 This release is all about stability. 1613 1614 Changes in this release can largely be divided into the following categories: 1615 1616 - Release Channels 1617 - Resources graduating to beta 1618 - New experimental features 1619 - Bug Fixes 1620 - General Improvements 1621 - Breaking Changes 1622 - Validation improvements 1623 - Internal type cleanup 1624 1625 ### Release channels 1626 1627 In this release, we've made two release channels available, `experimental` and 1628 `standard`. 1629 1630 The `experimental` channel contains all resources and fields, while `standard` 1631 contains only resources that mave moved to beta status. 1632 1633 We've also added a way to flag particular fields within a resource as 1634 experimental, and any fields marked in this way are only present in the 1635 `experimental` channel. Please see the [versioning][vers] docs for a more 1636 detailed explanation. 1637 1638 One caveat for the standard channel - due to work on the new ReferenceGrant 1639 resource: conformance tests may not pass with the `standard` set of CRDs. 1640 1641 [vers]:https://gateway-api.sigs.k8s.io/concepts/versioning/ 1642 1643 ### Resources Graduating to BETA 1644 1645 The following APIs have been promoted to a `v1beta1` maturity: 1646 1647 - `GatewayClass` 1648 - `Gateway` 1649 - `HTTPRoute` 1650 1651 [#1192](https://github.com/kubernetes-sigs/gateway-api/pull/1192) 1652 1653 ### New Experimental Features 1654 1655 - Routes can now select `Gateway` listeners by port number 1656 [#1002](https://github.com/kubernetes-sigs/gateway-api/pull/1002) 1657 - Gateway API now includes "Experimental" release channel. Consequently, CRDs now 1658 include `gateway.networking.k8s.io/bundle-version` and 1659 `gateway.networking.k8s.io/channel` annotations. 1660 [#945](https://github.com/kubernetes-sigs/gateway-api/pull/945) 1661 - URL Rewrites and Path redirects have been added as new "Experimental" features 1662 [#945](https://github.com/kubernetes-sigs/gateway-api/pull/945) 1663 1664 ### Bug Fixes 1665 1666 - Fixes a problem that would cause webhook deployment to fail on Kubernetes 1667 v1.22 and greater. 1668 [#991](https://github.com/kubernetes-sigs/gateway-api/pull/991) 1669 - Fixes a bug where the `Namespace` could be unspecified in `ReferencePolicy` 1670 [#964](https://github.com/kubernetes-sigs/gateway-api/pull/964) 1671 - Fixes a bug where v1alpha2 GatewayClass controller names were not being 1672 shown in the output of `kubectl get gatewayclasses` 1673 [#909](https://github.com/kubernetes-sigs/gateway-api/pull/909) 1674 1675 ### General Improvements 1676 1677 - Conformance tests were introduced with [GEP-917][gep-917] and multiple 1678 conformance tests were added from a variety of contributors under the 1679 `conformance/` directory. 1680 - The status of the GatewayClass "Accepted" condition for the `GatewayClass` 1681 is now present in `kubectl get` output. 1682 [#1168](https://github.com/kubernetes-sigs/gateway-api/pull/1168) 1683 - New `RouteConditionReason` types `RouteReasonNotAllowedByListeners` and 1684 `RouteReasonNoMatchingListenerHostname` were added. 1685 [#1155](https://github.com/kubernetes-sigs/gateway-api/pull/1155) 1686 - New `RouteConditionReason` type added with `RouteReasonAccepted`, 1687 `RouteReasonResolvedRefs` and `RouteReasonRefNotPermitted` constants. 1688 [#1114](https://github.com/kubernetes-sigs/gateway-api/pull/1114) 1689 - Introduced PreciseHostname which prevents wildcard characters in relevant 1690 Hostname values. 1691 [#956](https://github.com/kubernetes-sigs/gateway-api/pull/956) 1692 1693 [gep-917]:https://gateway-api.sigs.k8s.io/geps/gep-917/ 1694 1695 ### Validation Improvements 1696 1697 - Webhook validation now ensures that a path match exists when required by path 1698 modifier in filter. 1699 [#1171](https://github.com/kubernetes-sigs/gateway-api/pull/1171) 1700 - Webhook validation was added to ensure that only type-appropriate fields are 1701 set in `HTTPPathModifier`. 1702 [#1124](https://github.com/kubernetes-sigs/gateway-api/pull/1124) 1703 - The Gateway API webhook is now deployed in a `gateway-system` namespace 1704 instead of `gateway-api`. 1705 [#1051](https://github.com/kubernetes-sigs/gateway-api/pull/1051) 1706 1707 ### Breaking Changes 1708 1709 - The v1alpha1 API version was deprecated and removed. 1710 [#1197](https://github.com/kubernetes-sigs/gateway-api/pull/1197) 1711 [#906](https://github.com/kubernetes-sigs/gateway-api/issues/906) 1712 - The `NamedAddress` value for `Gateway`'s `spec.addresses[].type` field has 1713 been deprecated, and support for domain-prefixed values (like 1714 `example.com/NamedAddress`) has been added instead to better represent the 1715 custom nature of this support. 1716 [#1178](https://github.com/kubernetes-sigs/gateway-api/pull/1178) 1717 - Implementations are now expected to use `500` instead of `503` responses when 1718 the data-plane has no matching route. 1719 [#1151](https://github.com/kubernetes-sigs/gateway-api/pull/1151) 1720 1721 #### UX and Status Improvements 1722 1723 The following are **breaking changes** related to status updates and end-user 1724 experience changes. 1725 1726 - The `UnsupportedExtension` named `ListenerConditionReason` has been removed. 1727 [#1146](https://github.com/kubernetes-sigs/gateway-api/pull/1146) 1728 - The `RouteConflict` named `ListenerConditionReason` has been removed. 1729 [#1145](https://github.com/kubernetes-sigs/gateway-api/pull/1145) 1730 1731 #### Internal Type Cleanup 1732 1733 These changes will only affect implementations. Implementors will need to adjust 1734 for the type changes when updating the Gateway API dependency in their projects. 1735 1736 **NOTE**: These kinds of changes are not always present in the CHANGELOG so 1737 please be aware that the CHANGELOG is not an exhaustive list of Go 1738 type changes. In this case there were a significant number of changes 1739 in a single release, so we included them for extra visibility for 1740 implementors. 1741 1742 - `ReferencePolicy` has been renamed to `ReferenceGrant`. 1743 [#1179](https://github.com/kubernetes-sigs/gateway-api/pull/1179) 1744 - `GatewayTLSConfig`'s `CertificateRefs` field is now a slice of pointers to 1745 structs instead of the structs directly. 1746 [#1176](https://github.com/kubernetes-sigs/gateway-api/pull/1176) 1747 - `HTTPPathModifier` field `Absolute` renamed to `ReplaceFullPath` 1748 [#1124](https://github.com/kubernetes-sigs/gateway-api/pull/1124) 1749 - the `ParentRef` type was renamed to `ParentReference` 1750 [#982](https://github.com/kubernetes-sigs/gateway-api/pull/982) 1751 - Types `ConditionRouteAccepted` and `ConditionRouteResolvedRefs` are now 1752 deprecated in favor of `RouteConditionAccepted` & `RouteConditionResolvedRefs` 1753 [#1114](https://github.com/kubernetes-sigs/gateway-api/pull/1114) 1754 1755 ## v0.4.3 1756 1757 API version: v1alpha2 1758 1759 This release includes improvements to our webhook, including: 1760 1761 * Migrating kube-webhook-certgen to k8s.gcr.io/ingress-nginx:v1.1.1. 1762 [#1126](https://github.com/kubernetes-sigs/gateway-api/pull/1126) 1763 * New validation to ensure that a HTTPRouterFilter Type matches its value 1764 [#1071](https://github.com/kubernetes-sigs/gateway-api/pull/1071) 1765 * A fix to ensure that Path match validation actually works 1766 [#1071](https://github.com/kubernetes-sigs/gateway-api/pull/1071) 1767 1768 ## v0.4.2 1769 1770 API version: v1alpha2 1771 1772 This release is intended to verify our webhook image tagging process. 1773 1774 ### Bug Fixes 1775 1776 * Update image generation process with more consistent naming 1777 [#1034](https://github.com/kubernetes-sigs/gateway-api/pull/1034) 1778 1779 ## v0.4.1 1780 1781 API version: v1alpha2 1782 1783 This release contains minor bug fixes for v1alpha2. 1784 1785 ### Bug Fixes 1786 1787 * ControllerName now prints correctly in kubectl output for GatewayClass 1788 [#909](https://github.com/kubernetes-sigs/gateway-api/pull/909) 1789 * Namespace can no longer be left unspecified in ReferencePolicy 1790 [#964](https://github.com/kubernetes-sigs/gateway-api/pull/964) 1791 * Wildcard characters can no longer be used in redirect Hostname values 1792 [#956](https://github.com/kubernetes-sigs/gateway-api/pull/956) 1793 1794 ## v0.4.0 1795 1796 API version: v1alpha2 1797 1798 This release contains significant breaking changes as we strive for a concise 1799 API. We anticipate that this API will be very similar to a future v1beta1 1800 release. 1801 1802 The following changes have been made since v0.3.0: 1803 1804 ### Major Changes 1805 1806 * The Gateway API APIGroup has moved from `networking.x-k8s.io` to 1807 `gateway.networking.k8s.io`. This means that, as far as the apiserver is 1808 concerned, this version is wholly distinct from v1alpha1, and automatic 1809 conversion is not possible. As part of this process, Gateway API is now 1810 subject to Kubernetes API review, the same as changes made to core API 1811 resources. More details in 1812 [#780](https://github.com/kubernetes-sigs/gateway-api/pull/780) and 1813 [#716](https://github.com/kubernetes-sigs/gateway-api/issues/716). 1814 1815 * Gateway-Route binding changes ([GEP-724](https://gateway-api.sigs.k8s.io/geps/gep-724/)): 1816 In v1alpha1, Gateways chose which Routes were attached using a combination of 1817 object and namespace selectors, with the option of also specifying object 1818 names. This resulted in a very complex config, that's easy to misinterpret. As 1819 part of v1alpha2, we're changing to: 1820 * Gateways *may* specify what kind of Routes they support (defaults to same 1821 protocol if not specified), and where those Routes can be (defaults to same 1822 namespace). 1823 * Routes *must* directly reference the Gateways the want to attach to, this is 1824 a list, so a Route can attach to more than one Gateway. 1825 * The Route becomes attached only when the specifications intersect. 1826 1827 We believe this is quite a bit easier to understand, and still gives good 1828 flexibility for most use cases. 1829 GEP added in [#725](https://github.com/kubernetes-sigs/gateway-api/pull/725). 1830 Implemented in [#754](https://github.com/kubernetes-sigs/gateway-api/pull/754). 1831 Further documentation was added in [#762](https://github.com/kubernetes-sigs/gateway-api/pull/762). 1832 1833 * Safer cross-namespace references ([GEP-709](https://gateway-api.sigs.k8s.io/geps/gep-709/)): 1834 This concerns (currently), references from Routes to Backends, and Gateways to 1835 Secrets. The new behavior is: 1836 * By default, references across namespaces are not permitted; creating a 1837 reference across a namespace (like a Route referencing a Service in another 1838 namespace) must be rejected by implementations. 1839 * These references can be accepted by creating a ReferencePolicy in the 1840 referent (target) namespace, that specifies what Kind is allowed to accept 1841 incoming references, and from what namespace and Kind the references may be. 1842 1843 The intent here is that the owner of the referent namespace must explicitly 1844 accept incoming references, otherwise we can run into all sorts of bad things 1845 from breaking the namespace security model. 1846 Implemented in [#741](https://github.com/kubernetes-sigs/gateway-api/pull/741). 1847 1848 * Attaching Policy to objects ([GEP-713](https://gateway-api.sigs.k8s.io/geps/gep-713/)): 1849 This has been added so that we have an extensible mechanism for adding a 1850 cascading set of policy to Gateway API objects. 1851 1852 What policy? Well, it's kind of up to the implementations, but the best example 1853 to begin with is timeout policy. 1854 1855 Timeout policy for HTTP connections is highly dependent on how the underlying 1856 implementation handles policy - it's very difficult to extract commonalities. 1857 1858 This is intended to allow things like: 1859 * Attach a policy that specifies the default connection timeout for backends 1860 to a GatewayClass. All Gateways that are part of that Class will have Routes 1861 get that default connection timeout unless they specify differently. 1862 * If a Gateway that's a member of the GatewayClass has a different default 1863 attached, then that will beat the GatewayClass (for defaults, more specific 1864 object beats less specific object). 1865 * Alternatively, a Policy that mandates that you can't set the client timeout 1866 to "no timeout" can be attached to a GatewayClass as an override. An 1867 override will always take effect, with less specific beating more specific. 1868 1869 This one is a bit complex, but will allow implementations to solve some things 1870 that currently require tools like admission control. 1871 Implemented in [#736](https://github.com/kubernetes-sigs/gateway-api/pull/736). 1872 1873 * As part of GEP-713, `BackendPolicy` has been removed, as its functionality is 1874 now better handled using that mechanism. 1875 [#732](https://github.com/kubernetes-sigs/gateway-api/pull/732). 1876 1877 * Removal of certificate references from HTTPRoutes ([GEP-746](https://gateway-api.sigs.k8s.io/geps/gep-746/)): 1878 In v1alpha1, HTTPRoute objects have a stanza that allows referencing a TLS 1879 keypair, intended to allow people to have a more self-service model, where an 1880 app owner can provision a TLS keypair inside their own namespace, attach it to 1881 a HTTPRoute they control, and then have that used to secure their app. 1882 When implementing this, however, there are a large number of edge cases that 1883 are complex, hard to handle, and poorly defined - about checking SNI, hostname, 1884 and overrides, that made even writing a spec on how to implement this very 1885 difficult, let alone actually implementing it. 1886 1887 In removing certificate references from HTTPRoute, we're using the 1888 ReferencePolicy from GEP-709 to allow Gateways to securely create a 1889 cross-namespace reference to TLS keypairs in app namespaces. 1890 We're hopeful that this will hit most of the self-service use case, and even 1891 if not, provide a basis to build from to meet it eventually. 1892 GEP added in [#749](https://github.com/kubernetes-sigs/gateway-api/pull/749). 1893 Implemented in [#768](https://github.com/kubernetes-sigs/gateway-api/pull/768). 1894 1895 [GEP-851](https://github.com/kubernetes-sigs/gateway-api/blob/main/geps/gep-851.md) 1896 was a follow up on this change that allowed multiple Certificate Refs per 1897 Gateway Listener. This was implemented in 1898 [#852](https://github.com/kubernetes-sigs/gateway-api/pull/852). 1899 1900 * The `RouteForwardTo` (YAML: `routeForwardTo`) struct/stanza has been reworked 1901 into the `BackendRef` (YAML: `backendRef`) struct/stanza, 1902 [GEP-718](https://gateway-api.sigs.k8s.io/geps/gep-718/). As part of this 1903 change, the `ServiceName` (YAML: `serviceName`) field has been removed, and 1904 Service references must instead now use the `BackendRef`/`backendRef` 1905 struct/stanza. 1906 1907 ### Small Changes 1908 * Extension points within match blocks from all Routes have been removed 1909 [#829](https://github.com/kubernetes-sigs/gateway-api/pull/829). Implements 1910 [GEP-820](https://github.com/kubernetes-sigs/gateway-api/blob/main/geps/gep-820.md). 1911 These extension points have been removed because they are currently not used, 1912 are poorly understood, and we don't have good use cases for them. We may 1913 consider re-adding them in the future. 1914 1915 * Controller is now a required field in Gateway references from Route status. 1916 [#671](https://github.com/kubernetes-sigs/gateway-api/pull/671). 1917 1918 * Header Matching, Query Param Matching, and HTTPRequestHeaderFilter now use 1919 named subobjects instead of maps. 1920 [#657](https://github.com/kubernetes-sigs/gateway-api/pull/657) and 1921 [#681](https://github.com/kubernetes-sigs/gateway-api/pull/681) 1922 1923 * [#796](https://github.com/kubernetes-sigs/gateway-api/pull/796) API Review 1924 suggestions: 1925 * listener.routes has been renamed to listener.allowedRoutes 1926 * The `NoSuchGatewayClass` has been removed after it was deprecated in 1927 v1alpha1 1928 * `*` is no longer a valid hostname. Instead, leaving hostname unspecified is 1929 interpreted as `*`. 1930 1931 * The `scope` field has been removed from all object references. 1932 [#882](https://github.com/kubernetes-sigs/gateway-api/pull/882) 1933 1934 * "Controller" has been renamed to "ControllerName" 1935 [#839](https://github.com/kubernetes-sigs/gateway-api/pull/839) 1936 1937 * "Admitted" condition has been renamed to "Accepted" and now defaults to an 1938 "Unknown" state instead of "False" 1939 [#839](https://github.com/kubernetes-sigs/gateway-api/pull/839) 1940 1941 * HTTPRequestRedirectFilter's Protocol field has been renamed to Scheme. 1942 [#863](https://github.com/kubernetes-sigs/gateway-api/pull/863) 1943 1944 * ImplementationSpecific match types in HTTPRoute's path, query, and header 1945 matches have been removed. 1946 [#850](https://github.com/kubernetes-sigs/gateway-api/pull/850) 1947 1948 * The "Prefix" path match type has been renamed "PathPrefix". 1949 [#898](https://github.com/kubernetes-sigs/gateway-api/pull/898) 1950 1951 ### Small Additions 1952 * HTTP Method matching is now added into HTTPRoute, with Extended support: 1953 [#733](https://github.com/kubernetes-sigs/gateway-api/pull/733). 1954 1955 * GatewayClass now has a 'Description' field that is printed as a column in 1956 `kubectl get` output. You can now end up with output that looks like this: 1957 ```shell 1958 $> kubectl get gatewayclass 1959 NAME CONTROLLER DESCRIPTION 1960 internal gateway-controller-internal For non-internet-facing Gateways. 1961 external gateway-controller-external For internet-facing Gateways. 1962 ``` 1963 See [#610](https://github.com/kubernetes-sigs/gateway-api/issues/610) and 1964 [#653](https://github.com/kubernetes-sigs/gateway-api/pull/653) for the 1965 details. 1966 1967 ### Validation changes 1968 * Ensure TLSConfig is empty when the protocol is HTTP, TCP, or UDP 1969 [#886](https://github.com/kubernetes-sigs/gateway-api/pull/886) 1970 * Ensure Hostname is empty when the protocol is TCP or UDP. 1971 [#886](https://github.com/kubernetes-sigs/gateway-api/pull/886) 1972 * Listener ProtocolType now has validation. 1973 [#871](https://github.com/kubernetes-sigs/gateway-api/pull/871) 1974 * HTTP Path match values are now validated for PathMatchExact and 1975 PathMatchPrefix match types. 1976 [#894](https://github.com/kubernetes-sigs/gateway-api/pull/894) 1977 * TLS options keys are now subject to the same validation as Kubernetes 1978 annotations. [#886](https://github.com/kubernetes-sigs/gateway-api/pull/886) 1979 * TLS options values now have a max length of 4096 characters. 1980 [#886](https://github.com/kubernetes-sigs/gateway-api/pull/886) 1981 * Make `MirrorFilter.BackendRef` a required field when the mirror filter is used 1982 [#837](https://github.com/kubernetes-sigs/gateway-api/pull/837). 1983 1984 ### Clarifications 1985 * Updated guidance on how HTTP and TLS Route status should be populated when 1986 hostnames do not match. 1987 [#859](https://github.com/kubernetes-sigs/gateway-api/pull/859) 1988 * Aligned path prefix matching with Ingress by clarifying that it is a prefix of 1989 path elements. [#869](https://github.com/kubernetes-sigs/gateway-api/pull/869) 1990 * HTTP listeners may now be used for Cleartext HTTP/2. 1991 [#879](https://github.com/kubernetes-sigs/gateway-api/pull/879) 1992 * Added clarification that implementation-specific TLS options MUST be 1993 domain-prefixed. 1994 [#899](https://github.com/kubernetes-sigs/gateway-api/pull/899) 1995 1996 ### Documentation Updates 1997 * [#782](https://github.com/kubernetes-sigs/gateway-api/pull/782) : Restructure docs and split into versioned and unversioned 1998 * [#777](https://github.com/kubernetes-sigs/gateway-api/pull/777) : Fix typo 1999 * [#765](https://github.com/kubernetes-sigs/gateway-api/pull/765) : document multi-value headers as undefined 2000 * [#761](https://github.com/kubernetes-sigs/gateway-api/pull/761) : minor improvements to navigation on docs site 2001 * [#760](https://github.com/kubernetes-sigs/gateway-api/pull/760) : Remove references of vendor configurations in GatewayTLSConfig 2002 * [#756](https://github.com/kubernetes-sigs/gateway-api/pull/756) : Clarify docs on invalid serviceName 2003 * [#755](https://github.com/kubernetes-sigs/gateway-api/pull/755) : Document the supported kubernetes versions 2004 * [#745](https://github.com/kubernetes-sigs/gateway-api/pull/745) : Remove RouteTLSConfig requirement for gateway TLS passthrough. 2005 * [#744](https://github.com/kubernetes-sigs/gateway-api/pull/744) : automate nav for GEPs 2006 * [#743](https://github.com/kubernetes-sigs/gateway-api/pull/743) : Add READY and ADDRESS to gateway printer columns 2007 * [#742](https://github.com/kubernetes-sigs/gateway-api/pull/742) : Moving method match to v1alpha2 example 2008 * [#729](https://github.com/kubernetes-sigs/gateway-api/pull/729) : Adding suggested reasons for when conditions are healthy 2009 * [#728](https://github.com/kubernetes-sigs/gateway-api/pull/728) : Fixing wording in enhancement template 2010 * [#723](https://github.com/kubernetes-sigs/gateway-api/pull/723) : Clarifying Redirect Support levels 2011 * [#756](https://github.com/kubernetes-sigs/gateway-api/pull/756) : Clarify docs on invalid serviceName 2012 * [#880](https://github.com/kubernetes-sigs/gateway-api/pull/880) : Reworking Policy vs. Filter Documentation 2013 * [#878](https://github.com/kubernetes-sigs/gateway-api/pull/878) : Clarifying the fields that all Route types must include 2014 * [#875](https://github.com/kubernetes-sigs/gateway-api/pull/875) : Fix HTTP path match documentation. 2015 * [#864](https://github.com/kubernetes-sigs/gateway-api/pull/864) : Merging v1alpha2 concepts docs into unversioned docs 2016 * [#858](https://github.com/kubernetes-sigs/gateway-api/pull/858) : Fixing broken link to spec page 2017 * [#857](https://github.com/kubernetes-sigs/gateway-api/pull/857) : Adding missing references pages to docs navigation 2018 * [#853](https://github.com/kubernetes-sigs/gateway-api/pull/853) : docs: Use v0.4.0-rc1 in "Getting started with Gateway APIs" for v1alpha2 2019 * [#845](https://github.com/kubernetes-sigs/gateway-api/pull/845) : Fix markdown list formatting. 2020 * [#844](https://github.com/kubernetes-sigs/gateway-api/pull/844) : docs: add ssl passthrough note in FAQ 2021 * [#843](https://github.com/kubernetes-sigs/gateway-api/pull/843) : Add APISIX implementation 2022 * [#834](https://github.com/kubernetes-sigs/gateway-api/pull/834) : Fixes some broken links 2023 * [#807](https://github.com/kubernetes-sigs/gateway-api/pull/807) : docs: update multiple-ns guide for v1alpha2 2024 * [#888](https://github.com/kubernetes-sigs/gateway-api/pull/888) : Corrected broken getting started 2025 * [#885](https://github.com/kubernetes-sigs/gateway-api/pull/885) : Fix incorrect urls 2026 * [#890](https://github.com/kubernetes-sigs/gateway-api/pull/890) : Updating HTTPRoute docs for v1alpha2 2027 * [#870](https://github.com/kubernetes-sigs/gateway-api/pull/870) : Adding guidance on Kind vs. Resource in implementation guidelines 2028 * [#865](https://github.com/kubernetes-sigs/gateway-api/pull/865) : Route cleanup for v1alpha2 sig-network review 2029 2030 ### Tooling and infra updates 2031 * [#766](https://github.com/kubernetes-sigs/gateway-api/pull/766) : comment out the GEP notice 2032 * [#758](https://github.com/kubernetes-sigs/gateway-api/pull/758) : bump up mkdocs and deps 2033 * [#751](https://github.com/kubernetes-sigs/gateway-api/pull/751) : bump up deps to k8s v1.22 2034 * [#748](https://github.com/kubernetes-sigs/gateway-api/pull/748) : fix kustomize to install v1a2 crds 2035 * [#747](https://github.com/kubernetes-sigs/gateway-api/pull/747) : Cleaning up GEP Template 2036 * [#889](https://github.com/kubernetes-sigs/gateway-api/pull/889) : remove outdated version label 2037 * [#883](https://github.com/kubernetes-sigs/gateway-api/pull/883) : validating webhook cleanup 2038 * [#872](https://github.com/kubernetes-sigs/gateway-api/pull/872) : Remove duplicate validation from CRD & Webhook 2039 2040 ## v0.4.0-rc2 2041 2042 API version: v1alpha2 2043 2044 The group expects that this release candidate has no changes before we release 2045 v1alpha2 final, but are cutting here to allow implementations a chance to check 2046 before we go to the final release. 2047 2048 In general, most of the changes below have been made to reduce the complexity of 2049 the API for v1alpha2, on the assumption that we can add functionality in later 2050 in the API's lifecycle, but cannot remove it. 2051 2052 The following changes have been made since v0.4.0-rc1: 2053 2054 ### GEP implementations 2055 * Replace `CertificateRef` field with `CertificateRefs` in `GatewayTLSConfig`. 2056 [#852](https://github.com/kubernetes-sigs/gateway-api/pull/852). This implements 2057 [GEP-851](https://github.com/kubernetes-sigs/gateway-api/blob/main/geps/gep-851.md), 2058 Allow Multiple Certificate Refs per Gateway Listener. 2059 * Extension points within match blocks from all Routes have been removed 2060 [#829](https://github.com/kubernetes-sigs/gateway-api/pull/829). Implements 2061 [GEP-820](https://github.com/kubernetes-sigs/gateway-api/blob/main/geps/gep-820.md). 2062 These extension points have been removed because they are currently not used, 2063 are poorly understood, and we don't have good use cases for them. We may 2064 consider re-adding them in the future. 2065 2066 ### Field changes 2067 * Make `MirrorFilter.BackendRef` a required field when the mirror filter is used 2068 [#837](https://github.com/kubernetes-sigs/gateway-api/pull/837). 2069 * ImplementationSpecific match types in HTTPRoute's path, query, and header 2070 matches have been removed. 2071 [#850](https://github.com/kubernetes-sigs/gateway-api/pull/850) 2072 * The "Prefix" path match type has been renamed "PathPrefix". 2073 * The "ClassName" field in PolicyTargetReference has been removed. 2074 * A new optional "Name" field has been added to ReferencePolicyTo. 2075 [#898](https://github.com/kubernetes-sigs/gateway-api/pull/898) 2076 2077 ### Field Renames 2078 * "Controller" has been renamed to "ControllerName" 2079 * "Admitted" condition has been renamed to "Accepted" and now defaults to an 2080 "Unknown" state instead of "False" [#839](https://github.com/kubernetes-sigs/gateway-api/pull/839) 2081 * HTTPRequestRedirectFilter's Protocol field has been renamed to Scheme. 2082 [#863](https://github.com/kubernetes-sigs/gateway-api/pull/863) 2083 2084 2085 ### Validation changes 2086 * Validation: Ensure TLSConfig is empty when the protocol is HTTP, TCP, or UDP 2087 [#886](https://github.com/kubernetes-sigs/gateway-api/pull/886) 2088 * Validation: Ensure Hostname is empty when the protocol is TCP or UDP. 2089 [#886](https://github.com/kubernetes-sigs/gateway-api/pull/886) 2090 * Validation: Listener ProtocolType now has validation. 2091 [#871](https://github.com/kubernetes-sigs/gateway-api/pull/871) 2092 * Validation: HTTP Path match values are now validated for PathMatchExact and 2093 PathMatchPrefix match types. [#894](https://github.com/kubernetes-sigs/gateway-api/pull/894) 2094 2095 ### Documentation and specification updates 2096 * Updated guidance on how HTTP and TLS Route status should be populated when 2097 hostnames do not match. 2098 [#859](https://github.com/kubernetes-sigs/gateway-api/pull/859) 2099 * Aligned path prefix matching with Ingress by clarifying that it is a prefix of 2100 path elements. [#869](https://github.com/kubernetes-sigs/gateway-api/pull/869) 2101 * HTTP listeners may now be used for Cleartext HTTP/2. 2102 [#879](https://github.com/kubernetes-sigs/gateway-api/pull/879) 2103 * The `scope` field has been removed from all object references. 2104 * ParentRefs can no longer refer to cluster-scoped resources. 2105 [#882](https://github.com/kubernetes-sigs/gateway-api/pull/882) 2106 * TLS options keys are now subject to the same validation as Kubernetes 2107 annotations. [#886](https://github.com/kubernetes-sigs/gateway-api/pull/886) 2108 * TLS options values now have a max length of 4096 characters. 2109 [#886](https://github.com/kubernetes-sigs/gateway-api/pull/886) 2110 * Added clarification that implementation-specific TLS options MUST be domain-prefixed. 2111 [#899](https://github.com/kubernetes-sigs/gateway-api/pull/899) 2112 2113 ### Other changes 2114 * [#890](https://github.com/kubernetes-sigs/gateway-api/pull/890) : Updating HTTPRoute docs for v1alpha2 2115 * [#889](https://github.com/kubernetes-sigs/gateway-api/pull/889) : remove outdated version label 2116 * [#888](https://github.com/kubernetes-sigs/gateway-api/pull/888) : Corrected broken getting started 2117 * [#885](https://github.com/kubernetes-sigs/gateway-api/pull/885) : Fix incorrect urls 2118 * [#883](https://github.com/kubernetes-sigs/gateway-api/pull/883) : v1alpha2 validation fix/update 2119 * [#880](https://github.com/kubernetes-sigs/gateway-api/pull/880) : Reworking Policy vs. Filter Documentation 2120 * [#878](https://github.com/kubernetes-sigs/gateway-api/pull/878) : Clarifying the fields that all Route types must include 2121 * [#875](https://github.com/kubernetes-sigs/gateway-api/pull/875) : Fix HTTP path match documentation. 2122 * [#872](https://github.com/kubernetes-sigs/gateway-api/pull/872) : Remove duplicate validation from CRD & Webhook 2123 * [#870](https://github.com/kubernetes-sigs/gateway-api/pull/870) : Adding guidance on Kind vs. Resource in implementation guidelines 2124 * [#865](https://github.com/kubernetes-sigs/gateway-api/pull/865) : Route cleanup for v1alpha2 sig-network review 2125 * [#864](https://github.com/kubernetes-sigs/gateway-api/pull/864) : Merging v1alpha2 concepts docs into unversioned docs 2126 * [#858](https://github.com/kubernetes-sigs/gateway-api/pull/858) : Fixing broken link to spec page 2127 * [#857](https://github.com/kubernetes-sigs/gateway-api/pull/857) : Adding missing references pages to docs navigation 2128 * [#853](https://github.com/kubernetes-sigs/gateway-api/pull/853) : docs: Use v0.4.0-rc1 in "Getting started with Gateway APIs" for v1alpha2 2129 * [#845](https://github.com/kubernetes-sigs/gateway-api/pull/845) : Fix markdown list formatting. 2130 * [#844](https://github.com/kubernetes-sigs/gateway-api/pull/844) : docs: add ssl passthrough note in FAQ 2131 * [#843](https://github.com/kubernetes-sigs/gateway-api/pull/843) : Add APISIX implementation 2132 * [#834](https://github.com/kubernetes-sigs/gateway-api/pull/834) : Fixes some broken links 2133 * [#807](https://github.com/kubernetes-sigs/gateway-api/pull/807) : docs: update multiple-ns guide for v1alpha2 2134 2135 2136 ## v0.4.0-rc1 2137 2138 API version: v1alpha2 2139 2140 The working group expects that this release candidate is quite close to the final 2141 v1alpha2 API. However, breaking API changes are still possible. 2142 2143 This release candidate is suitable for implementors, but the working group does 2144 not recommend shipping products based on a release candidate API due to the 2145 possibility of incompatible changes prior to the final release. 2146 2147 ### Major Changes 2148 2149 * The Gateway API APIGroup has moved from `networking.x-k8s.io` to 2150 `gateway.networking.k8s.io`. This means that, as far as the apiserver is 2151 concerned, this version is wholly distinct from v1alpha1, and automatic conversion 2152 is not possible. As part of this process, Gateway API is now subject to Kubernetes 2153 API review, the same as changes made to core API resources. More details in 2154 [#780](https://github.com/kubernetes-sigs/gateway-api/pull/780) and [#716](https://github.com/kubernetes-sigs/gateway-api/issues/716). 2155 2156 * Gateway-Route binding changes: 2157 [GEP-724](https://gateway-api.sigs.k8s.io/geps/gep-724/). Currently, Gateways 2158 choose which Routes are attached using a combination of object and namespace 2159 selectors, with the option of also specifying object names. This has made a very 2160 complex config, that's easy to misinterpret. As part of v1alpha2, we're changing to: 2161 * Gateways *may* specify what kind of Routes they support (defaults to same 2162 protocol if not specified), and where those Routes can be (defaults to same 2163 namespace). 2164 * Routes *must* directly reference the Gateways the want to attach to, this is 2165 a list, so a Route can attach to more than one Gateway. 2166 * The Route becomes attached only when the specifications intersect. 2167 2168 We believe this is quite a bit easier to understand, and still gives good 2169 flexibility for most use cases. 2170 GEP added in [#725](https://github.com/kubernetes-sigs/gateway-api/pull/725). 2171 Implemented in [#754](https://github.com/kubernetes-sigs/gateway-api/pull/754). 2172 Further documentation was added in [#762](https://github.com/kubernetes-sigs/gateway-api/pull/762). 2173 2174 2175 * Safer cross-namespace references: 2176 ([GEP-709](https://gateway-api.sigs.k8s.io/geps/gep-709/)): This concerns 2177 (currently), references from Routes to Backends, and Gateways to Secrets. The 2178 new behavior is: 2179 * By default, references across namespaces are not permitted; creating a 2180 reference across a namespace (like a Route referencing a Service in another 2181 namespace) must be rejected by implementations. 2182 * These references can be accepted by creating a ReferencePolicy in the 2183 referent (target) namespace, that specifies what Kind is allowed to accept 2184 incoming references, and from what namespace and Kind the references may be. 2185 2186 The intent here is that the owner of the referent namespace must explicitly 2187 accept incoming references, otherwise we can run into all sorts of bad things 2188 from breaking the namespace security model. 2189 Implemented in [#741](https://github.com/kubernetes-sigs/gateway-api/pull/741). 2190 2191 * Attaching Policy to objects: 2192 [GEP-713](https://gateway-api.sigs.k8s.io/geps/gep-713/): This has been added 2193 so that we have an extensible mechanism for adding a cascading set of policy to 2194 Gateway API objects. 2195 2196 What policy? Well, it's kind of up to the implementations, but the best example 2197 to begin with is timeout policy. 2198 2199 Timeout policy for HTTP connections is highly dependent on how the underlying 2200 implementation handles policy - it's very difficult to extract commonalities. 2201 2202 This is intended to allow things like: 2203 * Attach a policy that specifies the default connection timeout for backends 2204 to a GatewayClass. All Gateways that are part of that Class will have Routes 2205 get that default connection timeout unless they specify differently. 2206 * If a Gateway that's a member of the GatewayClass has a different default 2207 attached, then that will beat the GatewayClass (for defaults, more specific 2208 object beats less specific object). 2209 * Alternatively, a Policy that mandates that you can't set the client timeout 2210 to "no timeout" can be attached to a GatewayClass as an override. An override 2211 will always take effect, with less specific beating more specific. 2212 2213 This one is a bit complex, but will allow implementations to solve some things 2214 that currently require tools like admission control. 2215 Implemented in [#736](https://github.com/kubernetes-sigs/gateway-api/pull/736). 2216 2217 * As part of GEP-713, `BackendPolicy` has been removed, as its functionality is 2218 now better handled using that mechanism. [#732](https://github.com/kubernetes-sigs/gateway-api/pull/732). 2219 2220 * Removal of certificate references from HTTPRoutes: 2221 [GEP-746](https://gateway-api.sigs.k8s.io/geps/gep-746/): 2222 In v1alpha1, HTTPRoute objects have a stanza that allows referencing a TLS 2223 keypair, intended to allow people to have a more self-service model, where an 2224 app owner can provision a TLS keypair inside their own namespace, attach it to 2225 a HTTPRoute they control, and then have that used to secure their app. 2226 When implementing this, however, there are a large number of edge cases that 2227 are complex, hard to handle, and poorly defined - about checking SNI, hostname, 2228 and overrides, that made even writing a spec on how to implement this very 2229 difficult, let alone actually implementing it. 2230 2231 In removing certificate references from HTTPRoute, we're using the 2232 ReferencePolicy from GEP-709 to allow Gateways to securely create a 2233 cross-namespace reference to TLS keypairs in app namespaces. 2234 We're hopeful that this will hit most of the self-service use case, and even 2235 if not, provide a basis to build from to meet it eventually. 2236 GEP added in [#749](https://github.com/kubernetes-sigs/gateway-api/pull/749). 2237 Implemented in [#768](https://github.com/kubernetes-sigs/gateway-api/pull/768). 2238 2239 * The `RouteForwardTo` (YAML: `routeForwardTo`) struct/stanza has been reworked 2240 into the `BackendRef` (YAML: `backendRef`) struct/stanza, 2241 [GEP-718](https://gateway-api.sigs.k8s.io/geps/gep-718/). As part of this change, 2242 the `ServiceName` (YAML: `serviceName`) field has been removed, and Service 2243 references must instead now use the `BackendRef`/`backendRef` struct/stanza. 2244 2245 ### Other changes 2246 * HTTP Method matching is now added into HTTPRoute, with Extended support: 2247 [#733](https://github.com/kubernetes-sigs/gateway-api/pull/733). 2248 2249 * GatewayClass now has a 'Description' field that is printed as a column in 2250 `kubectl get` output. You can now end up with output that looks like this: 2251 ```shell 2252 $> kubectl get gatewayclass 2253 NAME CONTROLLER DESCRIPTION 2254 internal gateway-controller-internal For non-internet-facing Gateways. 2255 external gateway-controller-external For internet-facing Gateways. 2256 ``` 2257 See [#610](https://github.com/kubernetes-sigs/gateway-api/issues/610) and 2258 [#653](https://github.com/kubernetes-sigs/gateway-api/pull/653) for the details. 2259 2260 * [#671](https://github.com/kubernetes-sigs/gateway-api/pull/671): Controller is 2261 now a required field in Gateway references from Route status. Fixes 2262 [#669](https://github.com/kubernetes-sigs/gateway-api/pull/671). 2263 2264 * [#657](https://github.com/kubernetes-sigs/gateway-api/pull/657): and 2265 [#681](https://github.com/kubernetes-sigs/gateway-api/pull/681) Header Matching, 2266 Query Param Matching, and HTTPRequestHeaderFilter now use named subobjects 2267 instead of maps. 2268 2269 * [#796](https://github.com/kubernetes-sigs/gateway-api/pull/796) API Review suggestions: 2270 * listener.routes has been renamed to listener.allowedRoutes 2271 * The `NoSuchGatewayClass` has been removed after it was deprecated in v1alpha1 2272 * `*` is no longer a valid hostname. Instead, leaving hostname unspecified is interpreted as `*`. 2273 2274 ### Documentation Updates 2275 * [#782](https://github.com/kubernetes-sigs/gateway-api/pull/782) : Restructure docs and split into versioned and unversioned 2276 * [#777](https://github.com/kubernetes-sigs/gateway-api/pull/777) : Fix typo 2277 * [#765](https://github.com/kubernetes-sigs/gateway-api/pull/765) : document multi-value headers as undefined 2278 * [#761](https://github.com/kubernetes-sigs/gateway-api/pull/761) : minor improvements to navigation on docs site 2279 * [#760](https://github.com/kubernetes-sigs/gateway-api/pull/760) : Remove references of vendor configurations in GatewayTLSConfig 2280 * [#756](https://github.com/kubernetes-sigs/gateway-api/pull/756) : Clarify docs on invalid serviceName 2281 * [#755](https://github.com/kubernetes-sigs/gateway-api/pull/755) : Document the supported kubernetes versions 2282 * [#745](https://github.com/kubernetes-sigs/gateway-api/pull/745) : Remove RouteTLSConfig requirement for gateway TLS passthrough. 2283 * [#744](https://github.com/kubernetes-sigs/gateway-api/pull/744) : automate nav for GEPs 2284 * [#743](https://github.com/kubernetes-sigs/gateway-api/pull/743) : Add READY and ADDRESS to gateway printer columns 2285 * [#742](https://github.com/kubernetes-sigs/gateway-api/pull/742) : Moving method match to v1alpha2 example 2286 * [#729](https://github.com/kubernetes-sigs/gateway-api/pull/729) : Adding suggested reasons for when conditions are healthy 2287 * [#728](https://github.com/kubernetes-sigs/gateway-api/pull/728) : Fixing wording in enhancement template 2288 * [#723](https://github.com/kubernetes-sigs/gateway-api/pull/723) : Clarifying Redirect Support levels 2289 * [#756](https://github.com/kubernetes-sigs/gateway-api/pull/756) : Clarify docs on invalid serviceName 2290 2291 ### Tooling and infra updates 2292 * [#766](https://github.com/kubernetes-sigs/gateway-api/pull/766) : comment out the GEP notice 2293 * [#758](https://github.com/kubernetes-sigs/gateway-api/pull/758) : bump up mkdocs and deps 2294 * [#751](https://github.com/kubernetes-sigs/gateway-api/pull/751) : bump up deps to k8s v1.22 2295 * [#748](https://github.com/kubernetes-sigs/gateway-api/pull/748) : fix kustomize to install v1a2 crds 2296 * [#747](https://github.com/kubernetes-sigs/gateway-api/pull/747) : Cleaning up GEP Template 2297 2298 2299 ## v0.3.0 2300 2301 API Version: v1alpha1 2302 2303 ### API changes 2304 2305 #### Gateway 2306 - The `NoSuchGatewayClass` status reason has been deprecated. 2307 [#635](https://github.com/kubernetes-sigs/gateway-api/pull/635) 2308 2309 #### HTTPRoute 2310 - `.spec.rules.matches.path` now has a default `prefix` match on the `/` path. 2311 [#584](https://github.com/kubernetes-sigs/gateway-api/pull/584) 2312 - Conflict resolution guidance has been added for rules within a route. 2313 [#620](https://github.com/kubernetes-sigs/gateway-api/pull/620) 2314 - HTTPRoute now supports query param matching. 2315 [#631](https://github.com/kubernetes-sigs/gateway-api/pull/631) 2316 2317 #### All Route Types 2318 - Route status now includes controller name for each Gateway. 2319 [#616](https://github.com/kubernetes-sigs/gateway-api/pull/616) 2320 - Conflict resolution guidance has been added for non-HTTP routes. 2321 [#626](https://github.com/kubernetes-sigs/gateway-api/pull/626) 2322 2323 #### Misc 2324 - Fields of type LocalObjectRef do not default to "secrets". All LocalObjectRef 2325 fields must be specified. 2326 [#570](https://github.com/kubernetes-sigs/gateway-api/pull/570) 2327 - CRDs have been added to gateway-api category 2328 [#592](https://github.com/kubernetes-sigs/gateway-api/pull/592) 2329 - New "Age" column has been added to all resources in `kubectl get` output. 2330 [#592](https://github.com/kubernetes-sigs/gateway-api/pull/592) 2331 - A variety of Go types have been changed to pointers to better reflect their 2332 optional status. 2333 [#564](https://github.com/kubernetes-sigs/gateway-api/pull/564) 2334 [#572](https://github.com/kubernetes-sigs/gateway-api/pull/572) 2335 [#579](https://github.com/kubernetes-sigs/gateway-api/pull/579) 2336 2337 #### Validation 2338 - A new experimental validation package and validating webhook have been added. 2339 [#597](https://github.com/kubernetes-sigs/gateway-api/pull/597) 2340 [#617](https://github.com/kubernetes-sigs/gateway-api/pull/617) 2341 2342 2343 ## v0.2.0 2344 2345 API Version: v1alpha1 2346 2347 ### API changes 2348 2349 Service APIs has been renamed to Gateway API. 2350 [#536](https://github.com/kubernetes-sigs/service-apis/issues/536). 2351 2352 2353 #### GatewayClass 2354 - The default status condition of GatewayClass resource is now `Admitted:false` 2355 instead of `InvalidParameters:Unknown`. 2356 [#471](https://github.com/kubernetes-sigs/service-apis/pull/471). 2357 - `GatewayClass.spec.parametersRef` now has an optional `namespace` field to 2358 refer to a namespace-scoped resource in addition to cluster-scoped resource. 2359 [#543](https://github.com/kubernetes-sigs/service-apis/pull/543). 2360 2361 #### Gateway 2362 - `spec.listeners[].tls.mode` now defaults to `Terminate`. 2363 [#518](https://github.com/kubernetes-sigs/service-apis/pull/518). 2364 - Empty `hostname` in a listener matches all request. 2365 [#525](https://github.com/kubernetes-sigs/service-apis/pull/525). 2366 2367 #### HTTPRoute 2368 - New `set` property has been introduced for `HTTPRequestHeader` Filter. Headers 2369 specified under `set` are overridden instead of added. 2370 [#475](https://github.com/kubernetes-sigs/service-apis/pull/475). 2371 2372 #### Misc 2373 - Maximum limit for `forwardTo` has been increased from `4` to `16` for all 2374 route types. 2375 [#493](https://github.com/kubernetes-sigs/service-apis/pull/493). 2376 - Various changes have been made in the Kubernetes and Go API to align with 2377 upstream Kubernetes API conventions. Some of the fields have been changed to 2378 pointers in the Go API for this reason. 2379 [#538](https://github.com/kubernetes-sigs/service-apis/pull/538). 2380 2381 ### Documentation 2382 2383 There are minor improvements to docs all around. 2384 New guides, clarifications and various typos have been fixed. 2385 2386 ## v0.1.0 2387 2388 API Version: v1alpha1 2389 2390 ### API changes since v0.1.0-rc2 2391 #### GatewayClass 2392 - CRD now includes `gc` short name. 2393 - Change the standard condition for GatewayClass to `Admitted`, with 2394 `InvalidParameters` as a sample reason for it to be false. 2395 2396 #### Gateway 2397 - CRD now includes `gtw` short name. 2398 - The `DroppedRoutes` condition has been renamed to `DegradedRoutes`. 2399 - `ListenerStatus` now includes `Protocol` and `Hostname` to uniquely link the 2400 status to each listener. 2401 2402 #### Routes 2403 - HTTPRoute clarifications: 2404 - Header name matching must be case-insensitive. 2405 - Match tiebreaking semantics have been outlined in detail. 2406 - TCPRoute, TLSRoute, and UDPRoute: 2407 - At least 1 ForwardTo must be specified in each rule. 2408 - Clarification that if no matches are specified, all requests should match a 2409 rule. 2410 - TCPRoute and UDPRoute: Validation has been added to ensure that 1-16 rules are 2411 specified, matching other route types. 2412 - TLSRoute: SNIs are now optional in matches. If no SNI or extensionRef are 2413 specified, all requests match. 2414 2415 #### BackendPolicy 2416 - CRD now includes `bp` short name. 2417 - A new `networking.x-k8s.io/app-protocol` annotation can be used to specify 2418 AppProtocol on Services when the AppProtocol field is unavailable. 2419 2420 2421 ## v0.1.0-rc2 2422 2423 API Version: v1alpha-rc2 2424 2425 ### API changes since v0.1.0-rc1 2426 #### GatewayClass 2427 - A recommendation to set a `gateway-exists-finalizer.networking.x-k8s.io` 2428 finalizer on GatewayClass has been added. 2429 - `allowedGatewayNamespaces` has been removed from GatewayClass in favor of 2430 implementations with policy agents like Gatekeeper. 2431 2432 #### Gateway 2433 - Fields in `listeners.routes` have been renamed: 2434 - `routes.routeSelector` -> `routes.selector` 2435 - `routes.routeNamespaces`-> `routes.namespaces` 2436 - `clientCertificateRef` has been removed from BackendPolicy. 2437 - In Listeners, `routes.namespaces` now defaults to `{from: "Same"}`. 2438 - In Listeners, support has been added for specifying custom, domain prefixed 2439 protocols. 2440 - In Listeners, `hostname` now closely matches Route hostname matching with wildcard 2441 support. 2442 - A new `UnsupportedAddress` condition has been added to Listeners to indicate 2443 that a requested address is not supported. 2444 - Clarification has been added to note that listeners may be merged in certain 2445 instances. 2446 2447 #### Routes 2448 - HeaderMatchType now includes a RegularExpression option. 2449 - Minimum weight has been decreased from 1 to 0. 2450 - Port is now required on all Routes. 2451 - On HTTPRoute, filters have been renamed: 2452 - `ModifyRequestHeader` -> `RequestHeaderModifier` 2453 - `MirrorRequest` -> `RequestMirror` 2454 - `Custom` -> `ExtensionRef` 2455 - TLSRoute can now specify as many as 16 SNIs instead of 10. 2456 - Limiting the number of Gateways that may be stored in RouteGatewayStatus to 2457 100. 2458 - Support level of filters defined in ForwardTo has been clarified. 2459 - Max weight has been increased to 1 million. 2460 2461 2462 ## v0.1.0-rc1 2463 2464 API Version: v1alpha-rc1 2465 2466 - Initial release candidate for v1alpha1.