|
2 | 2 |
|
3 | 3 | ## Table of Contents |
4 | 4 |
|
| 5 | +- [v0.8.0](#v080) |
5 | 6 | - [v0.8.0-rc2](#v080-rc2) |
6 | 7 | - [v0.8.0-rc1](#v080-rc1) |
7 | 8 | - [v0.7.1](#v071) |
|
29 | 30 | - [v0.1.0-rc2](#v010-rc2) |
30 | 31 | - [v0.1.0-rc1](#v010-rc1) |
31 | 32 |
|
| 33 | +# v0.8.0 |
| 34 | + |
| 35 | +## Major Themes |
| 36 | + |
| 37 | +### GAMMA (Service Mesh) |
| 38 | +Service mesh support per the GAMMA initiative has moved to **experimental** in |
| 39 | +`v0.8.0`. As an experimental API, **it is still possible that this will |
| 40 | +change**; the working group does not recommend shipping products based on any |
| 41 | +experimental API. |
| 42 | + |
| 43 | +When using the Gateway API to configure a service mesh, the Gateway and |
| 44 | +GatewayClass resources are not used (as there will typically only be one mesh |
| 45 | +in the cluster) and, instead, individual route resources are associated |
| 46 | +directly with Service resources. This permits configuring mesh routing while |
| 47 | +preserving the Gateway API's overall semantics. |
| 48 | + |
| 49 | +We encourage service mesh implementers and users to try this new support and |
| 50 | +we welcome feedback! Once again, though, the working group does not recommend |
| 51 | +shipping products based on this or any other experimental API. due to the |
| 52 | +possibility of incompatible changes prior to the final release. |
| 53 | + |
| 54 | +### CEL Validation |
| 55 | +This release marks the beginning of a transition from webhook validation to CEL |
| 56 | +validation that is built into the CRDs. That will mean different things |
| 57 | +depending on the version of Kubernetes you're using: |
| 58 | + |
| 59 | +#### Kubernetes 1.25+ |
| 60 | +CEL validation is fully supported. Most validation is now covered by the |
| 61 | +validating webhook, but unfortunately not quite everything. |
| 62 | + |
| 63 | +All but one validation has been translated from the |
| 64 | +webhook to CEL. Currently the CRDs only have a case-sensitive uniqueness check |
| 65 | +for header names in header modifier filters. The webhook validation is more |
| 66 | +thorough, ensuring that the uniqueness is case-insensitive. Unfortunately that |
| 67 | +is not possible to represent with CEL today. There is more information in |
| 68 | +[#2277](https://github.com/kubernetes-sigs/gateway-api/issues/2277). |
| 69 | + |
| 70 | +Installing the validating webhook is still recommended for this release to allow |
| 71 | +controllers to catch up to cover this gap in CEL validation. We expect this is |
| 72 | +the last release we will make this recommendation for, for more information, |
| 73 | +refer to [#2319](https://github.com/kubernetes-sigs/gateway-api/issues/2319). |
| 74 | + |
| 75 | +#### Kubernetes 1.23 and 1.24 |
| 76 | +CEL validation is not supported, but Gateway API v0.8.0 CRDs can still be |
| 77 | +installed. When you upgrade to Kubernetes 1.25+, the validation included in |
| 78 | +these CRDs will automatically take effect. We recommend continuing to install |
| 79 | +the validating webhook on these Kubernetes versions. |
| 80 | + |
| 81 | +#### Kubernetes 1.22 and older |
| 82 | +Unfortunately Gateway API v0.8.0 is not supported on these Kubernetes versions. |
| 83 | +Gateway API v0.8.0 CRDs include CEL validation and cannot be installed on these |
| 84 | +versions of Kubernetes. Note that Gateway API only commits to providing support |
| 85 | +for the [5 most recent versions of |
| 86 | +Kubernetes](https://gateway-api.sigs.k8s.io/concepts/versioning/#supported-versions), |
| 87 | +and thus these versions are no longer supported by Gateway API. |
| 88 | + |
| 89 | +### API Version Changes |
| 90 | +As we prepare for a v1.0 release that will graduate Gateway, GatewayClass, and |
| 91 | +HTTPRoute to the `v1` API Version from `v1beta1`, we are continuing the process |
| 92 | +of moving away from `v1alpha2` for resources that have graduated to `v1beta1`. |
| 93 | +The following changes are included in this release: |
| 94 | + |
| 95 | +- `v1alpha2` of Gateway, GatewayClass, and HTTPRoute is no longer served |
| 96 | +- `v1alpha2` of ReferenceGrant is deprecated |
| 97 | +- `v1beta1` is now the storage version for ReferenceGrant |
| 98 | + |
| 99 | +Those changes mean that: |
| 100 | + |
| 101 | +- Users and implementations that were reading or writing from `v1alpha2` of |
| 102 | + Gateway, GatewayClass, or HTTPRoute MUST upgrade to use `v1beta1`. |
| 103 | +- Users and implementations that were reading or writing from `v1alpha2` of |
| 104 | + ReferenceGrant SHOULD upgrade to use `v1beta1`. |
| 105 | + |
| 106 | +For more information, refer to |
| 107 | +[#2069](https://github.com/kubernetes-sigs/gateway-api/pull/2069). |
| 108 | + |
| 109 | +### Supported Features and Conformance Levels |
| 110 | +Gateway API conformance tests have a concept of "Supported Features". |
| 111 | +Implementations state which features they support, and then all the tests |
| 112 | +covering that set of features are run. |
| 113 | + |
| 114 | +Prior to v0.8.0, we had a concept of "StandardCoreFeatures" that represented the |
| 115 | +set of features we expected every implementation to implement. Support for the |
| 116 | +Gateway and HTTPRoute resources was included in that list. |
| 117 | + |
| 118 | +Alongside that, Gateway API also has a concept of "Support Levels" such as |
| 119 | +"Core", "Extended", and "Implementation-Specific". The API had labeled 2 |
| 120 | +resources as having support levels, but these didn't really make sense with |
| 121 | +the modular API model of Gateway API. |
| 122 | + |
| 123 | +In this release, we've simplified the concepts here. Individual resources no |
| 124 | +longer have assigned support levels, instead these are represented as "Supported |
| 125 | +Features." Implementations can separately claim to support Gateway, |
| 126 | +ReferenceGrant, or any other resource. This change helps accommodate incoming |
| 127 | +Mesh implementations, many of which do not support one or both of these |
| 128 | +resources. |
| 129 | + |
| 130 | +For more information refer to |
| 131 | +[#2323](https://github.com/kubernetes-sigs/gateway-api/pull/2323). |
| 132 | + |
| 133 | + |
| 134 | +## Other Changes |
| 135 | + |
| 136 | +### Status |
| 137 | +- Add IncompatibleFilters reason for implementations to specify when a route is |
| 138 | + invalid due to an invalid combination of route filters. (#2150, @sunjayBhatia) |
| 139 | + |
| 140 | +### Validation |
| 141 | + |
| 142 | +- Add CEL validation for GRPCRoute. (#2305, @gnossen) |
| 143 | +- HTTPRoute and GRPCRoute CRDs now provide built-in validation that ensures the |
| 144 | + uniqueness of names in Header Modifier "Remove" lists. (#2306, @robscott) |
| 145 | + |
| 146 | +### Spec Clarifications |
| 147 | + |
| 148 | +- RequestMirrorFilter: Enhanced the doc string to be explicit about sending the |
| 149 | + mirrored request to a single destination endpoint within the backendRef |
| 150 | + specified. (#2317, @arkodg) |
| 151 | +- HTTPRoute Method matching precedence has been clarified (#2054, |
| 152 | + @gauravkghildiyal) |
| 153 | +- Clarify that implementations must not modify HTTP Host header. Adds |
| 154 | + specificity alongside spec that port in Host header must be ignored when |
| 155 | + matching on host. (#2092, @sunjayBhatia) |
| 156 | +- Fix typo: rename GatewaReasonUnsupportedAddress -> |
| 157 | + GatewayReasonUnsupportedAddress (#2149, @panslava) |
| 158 | +- HTTPRoute: Clarified that exact path matches are truly exact, both trailing |
| 159 | + slashes and capitalization are meaningful. (#2055, @robscott) |
| 160 | +- Implementations MUST ignore any port value specified in the HTTP Host header |
| 161 | + while performing a match against HTTPRoute.Hostnames (#1980, |
| 162 | + @gauravkghildiyal) |
| 163 | + |
| 164 | +### Conformance |
| 165 | + |
| 166 | +- Add conformance tests against accepting invalid ReferenceGrants in HTTPRoute |
| 167 | + and TLSRoute (#2076, @meyskens) |
| 168 | +- Fixed an issues causing conformance tests to fail when using IPv6 addresses |
| 169 | + (#2024, @howardjohn) |
| 170 | +- HTTPRoute connectivity is in now enforced in conformance tests if a relevant |
| 171 | + ReferenceGrant gets deleted. (#1853, @pmalek) |
| 172 | +- The `--skip-tests` flag has been added to the conformance CLI to enable tests |
| 173 | + opt-out when using it. (#2170, @mlavacca) |
| 174 | +- The experimental conformance profile suite can now be added as a stand-alone |
| 175 | + cli and by means of `go test`. (#2066, @mlavacca) |
| 176 | +- GEPs now must have a Conformance Details section that specifies the feature's |
| 177 | + name for conformance purposes. (#2115, @youngnick) |
| 178 | +- Better support mesh-only conformance testing (#2312, @kflynn) |
| 179 | +- SupportedFeatures have been restructured to be per-resource (#2323, @robscott) |
| 180 | +- Add SupportedFeature for port 8080 on Gateway (#2184, @xtineskim) |
| 181 | +- Fixes for IPv6 in Mesh (#2340, @keithmattix) |
| 182 | +- Fix leaking TCP connections which can lead to conformance test failures |
| 183 | + (#2358, @gauravkghildiyal) |
| 184 | + |
| 185 | +### Webhook |
| 186 | + |
| 187 | +- Changed default imagePullPolicy for gateway-api-admission-server to |
| 188 | + IfNotPresent. (#2215, @networkhermit) |
| 189 | +- Webhook config works with PodAdmission restricted (#2016, @jcpunk) |
| 190 | + |
| 191 | +### Documentation |
| 192 | + |
| 193 | +- Adds support for ParentRef targeting a Kubernetes Service resource for mesh |
| 194 | + implementations. (#2146, @mikemorris) |
| 195 | +- Clarify wording on website around Gateway API vs API Gateway (#2191, |
| 196 | + @david-martin) |
| 197 | +- GEP-1282, Backend Properties, has been declined. (#2132, @youngnick) |
| 198 | +- Added missing GEPs. (#2114, @levikobi) |
| 199 | + |
| 200 | +### Bug Fixes |
| 201 | + |
| 202 | +- Added the missing ReferenceGrant resource the kustomization.yaml for the |
| 203 | + standard channel (#2084, @howardjohn) |
| 204 | +- Webhook validation now ensures that BackendRefs can not be specified in the |
| 205 | + same HTTPRoute rule as a Redirect filter (#2161, @slayer321) |
| 206 | +- GRPCRoute: The default match has been removed as it was invalid (it only |
| 207 | + specified a type of "Exact" without a corresponding Service or Method). Note |
| 208 | + that the match type still defaults to "Exact". (#2311, @gauravkghildiyal) |
| 209 | + |
| 210 | + |
32 | 211 | # v0.8.0-rc2 |
33 | 212 |
|
34 | 213 | The working group expects that this release candidate is quite close to the final |
@@ -135,7 +314,7 @@ of moving away from `v1alpha2` for resources that have graduated to `v1beta1`. |
135 | 314 | The following changes are included in this release: |
136 | 315 |
|
137 | 316 | - `v1alpha2` of Gateway, GatewayClass, and HTTPRoute is no longer served |
138 | | -- `v1alpha2` of ReferenceGrant is deprecrated |
| 317 | +- `v1alpha2` of ReferenceGrant is deprecated |
139 | 318 | - `v1beta1` is now the storage version for ReferenceGrant |
140 | 319 |
|
141 | 320 | Those changes mean that: |
|
0 commit comments