|
2 | 2 |
|
3 | 3 | ## Table of Contents
|
4 | 4 |
|
| 5 | +- [v0.4.0-rc1](#v040-rc1) |
5 | 6 | - [v0.3.0](#v030)
|
6 | 7 | - [v0.2.0](#v020)
|
7 | 8 | - [v0.1.0](#v010)
|
8 | 9 | - [v0.1.0-rc2](#v010-rc2)
|
9 | 10 | - [v0.1.0-rc1](#v010-rc1)
|
10 | 11 |
|
| 12 | + |
| 13 | +## v0.4.0-rc1 |
| 14 | + |
| 15 | +API version: v1alpha2 |
| 16 | + |
| 17 | +The working group expects that this release candidate is quite close to the final |
| 18 | +v1alpha2 API. However, breaking API changes are still possible. |
| 19 | + |
| 20 | +This release candidate is suitable for implementors, but the working group does |
| 21 | +not recommend shipping products based on a release candidate API due to the |
| 22 | +possibility of incompatible changes prior to the final release. |
| 23 | + |
| 24 | +### Major Changes |
| 25 | + |
| 26 | +* The Gateway API APIGroup has moved from `networking.x-k8s.io` to |
| 27 | +`gateway.networking.k8s.io`. This means that, as far as the apiserver is |
| 28 | +concerned, this version is wholly distinct from v1alpha1, and automatic conversion |
| 29 | +is not possible. As part of this process, Gateway API is now subject to Kubernetes |
| 30 | +API review, the same as changes made to core API resources. More details in |
| 31 | +[#780](https://github.com/kubernetes-sigs/gateway-api/pull/780) and [#716](https://github.com/kubernetes-sigs/gateway-api/issues/716). |
| 32 | + |
| 33 | +* Gateway-Route binding changes: |
| 34 | +[GEP-724](https://gateway-api.sigs.k8s.io/geps/gep-724/). Currently, Gateways |
| 35 | +choose which Routes are attached using a combination of object and namespace |
| 36 | +selectors, with the option of also specifying object names. This has made a very |
| 37 | +complex config, that's easy to misinterpret. As part of v1alpha2, we're changing to: |
| 38 | + * Gateways *may* specify what kind of Routes they support (defaults to same |
| 39 | + protocol if not specified), and where those Routes can be (defaults to same |
| 40 | + namespace). |
| 41 | + * Routes *must* directly reference the Gateways the want to attach to, this is |
| 42 | + a list, so a Route can attach to more than one Gateway. |
| 43 | + * The Route becomes attached only when the specifications intersect. |
| 44 | + |
| 45 | + We believe this is quite a bit easier to understand, and still gives good |
| 46 | + flexibility for most use cases. |
| 47 | + GEP added in [#725](https://github.com/kubernetes-sigs/gateway-api/pull/725). |
| 48 | + Implemented in [#754](https://github.com/kubernetes-sigs/gateway-api/pull/754). |
| 49 | + Further documentation was added in [#762](https://github.com/kubernetes-sigs/gateway-api/pull/762). |
| 50 | + |
| 51 | + |
| 52 | +* Safer cross-namespace references: |
| 53 | +([GEP-709](https://gateway-api.sigs.k8s.io/geps/gep-709/)): This concerns |
| 54 | +(currently), references from Routes to Backends, and Gateways to Secrets. The |
| 55 | +new behavior is: |
| 56 | + * By default, references across namespaces are not permitted; creating a |
| 57 | + reference across a namespace (like a Route referencing a Service in another |
| 58 | + namespace) must be rejected by implementations. |
| 59 | + * These references can be accepted by creating a ReferencePolicy in the |
| 60 | + referent (target) namespace, that specifies what Kind is allowed to accept |
| 61 | + incoming references, and from what namespace and Kind the references may be. |
| 62 | + |
| 63 | + The intent here is that the owner of the referent namespace must explicitly |
| 64 | + accept incoming references, otherwise we can run into all sorts of bad things |
| 65 | + from breaking the namespace security model. |
| 66 | + Implemented in [#741](https://github.com/kubernetes-sigs/gateway-api/pull/741). |
| 67 | + |
| 68 | +* Attaching Policy to objects: |
| 69 | +[GEP-713](https://gateway-api.sigs.k8s.io/geps/gep-713/): This has been added |
| 70 | +so that we have an extensible mechanism for adding a cascading set of policy to |
| 71 | +Gateway API objects. |
| 72 | + |
| 73 | + What policy? Well, it's kind of up to the implementations, but the best example |
| 74 | + to begin with is timeout policy. |
| 75 | + |
| 76 | + Timeout policy for HTTP connections is highly depedent on how the underlying |
| 77 | + implementation handles policy - it's very difficult to extract commonalities. |
| 78 | + |
| 79 | + This is intended to allow things like: |
| 80 | + * Attach a policy that specifies the default connection timeout for backends |
| 81 | + to a GatewayClass. All Gateways that are part of that Class will have Routes |
| 82 | + get that default connection timeout unless they specify differently. |
| 83 | + * If a Gateway that's a member of the GatewayClass has a different default |
| 84 | + attached, then that will beat the GatewayClass (for defaults, more specific |
| 85 | + object beats less specific object). |
| 86 | + * Alternatively, a Policy that mandates that you can't set the client timeout |
| 87 | + to "no timeout" can be attached to a GatewayClass as an override. An override |
| 88 | + will always take effect, with less specific beating more specific. |
| 89 | + |
| 90 | + This one is a bit complex, but will allow implementations to solve some things |
| 91 | + that currently require tools like admission control. |
| 92 | + Implemented in [#736](https://github.com/kubernetes-sigs/gateway-api/pull/736). |
| 93 | + |
| 94 | +* As part of GEP-713, `BackendPolicy` has been removed, as its functionality is |
| 95 | +now better handled using that mechanism. [#732](https://github.com/kubernetes-sigs/gateway-api/pull/732). |
| 96 | + |
| 97 | +* Removal of certificate references from HTTPRoutes: |
| 98 | +[GEP-746](https://gateway-api.sigs.k8s.io/geps/gep-746/): |
| 99 | + In v1alpha1, HTTPRoute objects have a stanza that allows referencing a TLS |
| 100 | + keypair, intended to allow people to have a more self-service model, where an |
| 101 | + app owner can provision a TLS keypair inside their own namespace, attach it to |
| 102 | + a HTTPRoute they control, and then have that used to secure their app. |
| 103 | + When implementing this, however, there are a large number of edge cases that |
| 104 | + are complex, hard to handle, and poorly defined - about checking SNI, hostname, |
| 105 | + and overrides, that made even writing a spec on how to implement this very |
| 106 | + difficult, let alone actually implementing it. |
| 107 | + |
| 108 | + In removing certificate references from HTTPRoute, we're using the |
| 109 | + ReferencePolicy from GEP-709 to allow Gateways to securely create a |
| 110 | + cross-namespace reference to TLS keypairs in app namespaces. |
| 111 | + We're hopeful that this will hit most of the self-service use case, and even |
| 112 | + if not, provide a basis to build from to meet it eventually. |
| 113 | + GEP added in [#749](https://github.com/kubernetes-sigs/gateway-api/pull/749). |
| 114 | + Implemented in [#768](https://github.com/kubernetes-sigs/gateway-api/pull/768). |
| 115 | + |
| 116 | +* The `RouteForwardTo` (YAML: `routeForwardTo`) struct/stanza has been reworked |
| 117 | +into the `BackendRef` (YAML: `backendRef`) struct/stanza, |
| 118 | +[GEP-718](https://gateway-api.sigs.k8s.io/geps/gep-718/). As part of this change, |
| 119 | +the `ServiceName` (YAML: `serviceName`) field has been removed, and Service |
| 120 | +references must instead now use the `BackendRef`/`backendRef` struct/stanza. |
| 121 | + |
| 122 | +### Other changes |
| 123 | +* HTTP Method matching is now added into HTTPRoute, with Extended support: |
| 124 | +[#733](https://github.com/kubernetes-sigs/gateway-api/pull/733). |
| 125 | + |
| 126 | +* GatewayClass now has a 'Description' field that is printed as a column in |
| 127 | +`kubectl get` output. You can now end up with output that looks like this: |
| 128 | + ```shell |
| 129 | + $> kubectl get gatewayclass |
| 130 | + NAME CONTROLLER DESCRIPTION |
| 131 | + internal gateway-controller-internal For non-internet-facing Gateways. |
| 132 | + external gateway-controller-external For internet-facing Gateways. |
| 133 | + ``` |
| 134 | + See [#610](https://github.com/kubernetes-sigs/gateway-api/issues/610) and |
| 135 | + [#653](https://github.com/kubernetes-sigs/gateway-api/pull/653) for the details. |
| 136 | + |
| 137 | +* [#671](https://github.com/kubernetes-sigs/gateway-api/pull/671): Controller is |
| 138 | +now a required field in Gateway references from Route status. Fixes |
| 139 | +[#669](https://github.com/kubernetes-sigs/gateway-api/pull/671). |
| 140 | + |
| 141 | +* [#657](https://github.com/kubernetes-sigs/gateway-api/pull/657): and |
| 142 | +[#681](https://github.com/kubernetes-sigs/gateway-api/pull/681) Header Matching, |
| 143 | +Query Param Matching, and HTTPRequestHeaderFilter now use named subobjects |
| 144 | +instead of maps. |
| 145 | + |
| 146 | +* [#796](https://github.com/kubernetes-sigs/gateway-api/pull/796) API Review suggestions: |
| 147 | + * listener.routes has been renamed to listener.allowedRoutes |
| 148 | + * The `NoSuchGatewayClass` has been removed after it was deprecated in v1alpha1 |
| 149 | + * `*` is no longer a valid hostname. Instead, leaving hostname unspecified is interpreted as `*`. |
| 150 | + |
| 151 | +### Documentation Updates |
| 152 | +* [#782](https://github.com/kubernetes-sigs/gateway-api/pull/782) : Restructure docs and split into versioned and unversioned |
| 153 | +* [#777](https://github.com/kubernetes-sigs/gateway-api/pull/777) : Fix typo |
| 154 | +* [#765](https://github.com/kubernetes-sigs/gateway-api/pull/765) : document multi-value headers as undefined |
| 155 | +* [#761](https://github.com/kubernetes-sigs/gateway-api/pull/761) : minor improvements to navigation on docs site |
| 156 | +* [#760](https://github.com/kubernetes-sigs/gateway-api/pull/760) : Remove references of vendor configurations in GatewayTLSConfig |
| 157 | +* [#756](https://github.com/kubernetes-sigs/gateway-api/pull/756) : Clarify docs on invalid serviceName |
| 158 | +* [#755](https://github.com/kubernetes-sigs/gateway-api/pull/755) : Document the supported kubernetes versions |
| 159 | +* [#745](https://github.com/kubernetes-sigs/gateway-api/pull/745) : Remove RouteTLSConfig requirement for gateway TLS passthrough. |
| 160 | +* [#744](https://github.com/kubernetes-sigs/gateway-api/pull/744) : automate nav for GEPs |
| 161 | +* [#743](https://github.com/kubernetes-sigs/gateway-api/pull/743) : Add READY and ADDRESS to gateway printer columns |
| 162 | +* [#742](https://github.com/kubernetes-sigs/gateway-api/pull/742) : Moving method match to v1alpha2 example |
| 163 | +* [#729](https://github.com/kubernetes-sigs/gateway-api/pull/729) : Adding suggested reasons for when conditions are healthy |
| 164 | +* [#728](https://github.com/kubernetes-sigs/gateway-api/pull/728) : Fixing wording in enhancement template |
| 165 | +* [#723](https://github.com/kubernetes-sigs/gateway-api/pull/723) : Clarifying Redirect Support levels |
| 166 | +* [#756](https://github.com/kubernetes-sigs/gateway-api/pull/756) : Clarify docs on invalid serviceName |
| 167 | + |
| 168 | +### Tooling and infra updates |
| 169 | +* [#766](https://github.com/kubernetes-sigs/gateway-api/pull/766) : comment out the GEP notice |
| 170 | +* [#758](https://github.com/kubernetes-sigs/gateway-api/pull/758) : bump up mkdocs and deps |
| 171 | +* [#751](https://github.com/kubernetes-sigs/gateway-api/pull/751) : bump up deps to k8s v1.22 |
| 172 | +* [#748](https://github.com/kubernetes-sigs/gateway-api/pull/748) : fix kustomize to install v1a2 crds |
| 173 | +* [#747](https://github.com/kubernetes-sigs/gateway-api/pull/747) : Cleaning up GEP Template |
| 174 | + |
| 175 | + |
11 | 176 | ## v0.3.0
|
12 | 177 |
|
13 | 178 | API Version: v1alpha1
|
|
0 commit comments