Skip to content

Commit 21aef06

Browse files
authored
Merge pull request #791 from youngnick/v1alpha2-rc1-changelog
Update CHANGELOG.md for v0.4.0-rc1
2 parents b70e3c0 + fc3a44e commit 21aef06

File tree

1 file changed

+165
-0
lines changed

1 file changed

+165
-0
lines changed

CHANGELOG.md

+165
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,177 @@
22

33
## Table of Contents
44

5+
- [v0.4.0-rc1](#v040-rc1)
56
- [v0.3.0](#v030)
67
- [v0.2.0](#v020)
78
- [v0.1.0](#v010)
89
- [v0.1.0-rc2](#v010-rc2)
910
- [v0.1.0-rc1](#v010-rc1)
1011

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+
11176
## v0.3.0
12177

13178
API Version: v1alpha1

0 commit comments

Comments
 (0)