Significant refactoring of Gateway GA blog post

pull/43593/head
Rob Scott 2023-10-24 23:57:20 +00:00
parent d2ea8ddb99
commit c46e22e235
No known key found for this signature in database
3 changed files with 153 additions and 194 deletions

View File

@ -1,194 +0,0 @@
---
layout: blog
title: "Gateway API is now Generally Available (GA)"
date: 2023-10-19T10:00:00-08:00
slug: gateway-api-ga
---
***Authors:*** Shane Utt (Kong), Nick Young (Isovalent), Rob Scott (Google)
We (the community developing [Gateway API][gwapi]) are incredibly pleased and
proud to announce _general availability_ of Gateway API for use with Kubernetes
clusters (versions 1.24 and newer)!
## Important Highlights
Kubernetes' Gateway API brings a lot of new networking possibilities to the table in your
Kubernetes cluster. In this post we'll cover some of the most important
highlights.
For a complete list of changes for this specific release, please see our
[v1.0.0 changelog entry][chlogv1].
For a complete list of every feature for every release, or to review some of
the releases leading up to v1.0.0, please see our [historical
changelog][clog].
### Version 1 APIs
This marks the **first stable release** of Gateway API, where we are now
publishing the following APIs as `v1` (version 1):
- [GatewayClass][gwc]
- [Gateway][gw]
- [HTTPRoute][hr]
Reaching version 1 with these APIs means we future iterations on them will be
handled in a backwards compatible manner.
### CEL Migration
Gateway API [CRDs][crds] now include [CEL][cel] validation. This streamlines
the development of validation for our resources, and reduces the overhead of
deploying Gateway API to a cluster as it eliminates the need for our historical
[admission webhook][admw].
> **Note**: For Kubernetes `v1.25` and newer we recommend against deploying the
> webhook, and if you had it running previously you can now uninstall it in
> favor of the validation now provided via CEL.
### Kubernetes Support
Gateway API generally [supports the last 5 stable Kubernetes versions][kvs]. As
such, this release is supported on Kubernetes clusters version `1.24` through
`1.29` at the time of release.
> **Warning**: Related to our migration to [CEL][cel] as mentioned above, we
> don't recommend deploying on `v1.24` clusters if it can be avoided as these
> clusters will still require the admission webhook, and that webhook is
> considered deprecated and support for it will drop shortly after this GA
> release when Kubernetes `v1.30` becomes available. If it's unavoidable to
> deploy on `v1.24`, just note that you'll need to upgrade fairly soon in
> order to be considered supported.
### Getting Started
If you want to try Gateway API features out for yourself but don't know where
to get started you'll want to check out one of the 20+
[implementations](https://gateway-api.sigs.k8s.io/implementations/) which
we list on the Gateway API website.
Gateway API itself is just an API for downstream projects to implement, so take
some time to peruse the implementations list above and find one that seems to
fit your needs, or that you're most familiar with.
> **Note**: with this release we now have basic support for downstream
> implementations to report the results of their Gateway API conformance test
> runs. This means that for some implementations on the above implementations
> page you may see a `Gateway API Conformance vX.X.X` badge present under their
> project header. This indicates that this implementation _is conformant_ for
> the version present in the badge, and is sending back reports of their
> conformance to the upstream project, including details on which specific
> features they support. Click on the badge to see a more detailed report of
> supported features, but note that the reporting system is considered
> experimental and the structure of these reports is subject to change.
## Future Plans
General availability is just the beginning of the much larger journey for
Gateway API, and there's plenty of new features and new ideas in flight for the
upcoming releases!
If you opt-in to the [experimental channel][expch] for this release, you'll find
that there are several experimental features available which are being
considered for inclusion as stable in future releases:
- [Backend TLS policy][gep1897]
- [HTTPRoute Timeouts][gep1742]
- [Gateway Infrastructure Labels][gep1762]
- Support for [Websockets, HTTP/2 and more!][gep1911]
- [`gwctl`][gwctl], our new Gateway API command line tool
We intend to have a blog post following up on this one which will cover these
(and potentially more) experimental and upcoming features where the authors of
the features themselves can provide a greater level of detail.
In future iterations we also intend to grow the maturity and work towards
[graduation][grad] of APIs other than GatewayClass, Gateway, and
HTTPRoute. There are several APIs that are not yet at version 1:
- [GRPCRoute][grpc]
- [TCPRoute][tcp]
- [UDPRoute][udp]
- [TLSRoute][tls]
- [ReferenceGrant][refg]
[ReferenceGrant][refg] is a slightly special case as we are considering what
to do with this: we've come to understand this might be a
feature applicable to the greater Kubernetes community and we're trying to
navigate potentially moving it somewhere more general to maximize benefit.
For those interested in service mesh, note that we continue to work on making
Gateway API resources available for use in service mesh contexts as part of the
[GAMMA project][gamma]. Please see our recent blog post [Gateway API v0.8.0:
Introducing Service Mesh Support][gammablog] for more details.
What you've seen here is _not exhaustive_! Gateway API is a highly active
project, with dozens of people actively working on it. If you're hoping to see
one of the above routes graduated, or have ideas for features that we have yet
to account for, we _strongly encourage_ you to [join us in the community][com]
and help us build!
## Gateway API events at KubeCon + CloudNativeCon
At [Kubecon North America (Chicago)][kna] and the adjacent
[Contributor Summit][csum] there are several talks about or related to Gateway
API that expand upon GA, discuss some of our new features, and even talk about
what happens next. If you're attending Kubecon and the Contributor Summit this
year, please do see us at these talks!
*Contributor Summit*:
- [Lessons learned building a GA API with CRDs][csum1]
- [Conformance Testing (from Gateway API)][csum2]
- [Gateway API: Beyond GA][csum3]
*Kubecon Main Event*:
**TODO**
## Recognition & Appreciation
Our project is more than just a project, it is a community of people working
together to solve common problems. Our community _is_ the project and we want to
give a huge shout out and thanks to them!
Thank you so much to our [170+ contributors][contribs] who built this project
together with us, and made our GA release possible!
A special thank you to our [community members who agreed to take on an
official role in the project][roles], explicitly providing some time for reviews
and sharing the load of maintaining the project!
[gwapi]:https://gateway-api.sigs.k8s.io/
[clogv1]:https://github.com/kubernetes-sigs/gateway-api/blob/main/CHANGELOG.md#v100
[clog]:https://github.com/kubernetes-sigs/gateway-api/blob/main/CHANGELOG.md
[gwc]:https://gateway-api.sigs.k8s.io/api-types/gatewayclass/
[gw]:https://gateway-api.sigs.k8s.io/api-types/gateway/
[hr]:https://gateway-api.sigs.k8s.io/api-types/httproute/
[crds]:https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/
[kvs]:https://gateway-api.sigs.k8s.io/concepts/versioning/#supported-versions
[cel]:https://kubernetes.io/docs/reference/using-api/cel/
[admw]:https://github.com/kubernetes-sigs/gateway-api/tree/main/config/webhook
[expch]:https://gateway-api.sigs.k8s.io/concepts/versioning/#release-channels
[gep1897]:https://gateway-api.sigs.k8s.io/geps/gep-1897/
[gep1742]:https://gateway-api.sigs.k8s.io/geps/gep-1742/
[gep1762]:https://gateway-api.sigs.k8s.io/geps/gep-1762/
[gep1911]:https://gateway-api.sigs.k8s.io/geps/gep-1911/
[gwctl]:https://github.com/kubernetes-sigs/gateway-api/tree/main/gwctl
[grad]:https://gateway-api.sigs.k8s.io/concepts/versioning/#graduation-criteria
[grpc]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.GRPCRoute
[tcp]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.TCPRoute
[udp]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.UDPRoute
[tls]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.TLSRoute
[com]:https://gateway-api.sigs.k8s.io/contributing/#how-to-get-involved
[refg]:https://gateway-api.sigs.k8s.io/api-types/referencegrant/
[gamma]:https://gateway-api.sigs.k8s.io/concepts/gamma/
[gammablog]:https://kubernetes.io/blog/2023/08/29/gateway-api-v0-8/
[kna]:https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/
[csum]:https://kcsna2023.sched.com/
[csum1]:https://kcsna2023.sched.com/event/1Sp9u/lessons-learned-building-a-ga-api-with-crds
[csum2]:https://kcsna2023.sched.com/event/1Sp9l/conformance-profiles-building-a-generic-conformance-test-reporting-framework
[csum3]:https://kcsna2023.sched.com/event/1SpA9/gateway-api-beyond-ga
[contribs]:https://github.com/kubernetes-sigs/gateway-api/graphs/contributors
[roles]:https://github.com/kubernetes-sigs/gateway-api/blob/main/OWNERS_ALIASES

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -0,0 +1,153 @@
---
layout: blog
title: "Gateway API v1.0: GA Release"
date: 2023-10-31T10:00:00-08:00
slug: gateway-api-ga
---
***Authors:*** Shane Utt (Kong), Nick Young (Isovalent), Rob Scott (Google)
We are pleased to announce the v1.0 release of [Gateway
API](https://gateway-api.sigs.k8s.io/)! This release marks a huge milestone for
this project. Several key APIs are graduating to GA (generally available), while
other significant features have been added to the Experimental channel.
## What's new
### Graduation to v1
This release includes the graduation of
[Gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/),
[GatewayClass](https://gateway-api.sigs.k8s.io/api-types/gatewayclass/), and
[HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/) to v1, which
means they are now generally available (GA). This API version denotes a high
level of confidence in the API surface and provides guarantees of backwards
compatibility. Note that although, the version of these APIs included in the
Standard channel are now considered stable, that does not mean that they are
complete. These APIs will continue to receive new features via the Experimental
channel as they meet graduation criteria. For more information on how all of
this works, refer to the [Gateway API Versioning
Policy](https://gateway-api.sigs.k8s.io/concepts/versioning/).
### Logo
Gateway API now has a logo! This logo was designed through a collaborative
process, and is intended to represent the idea that this is a set of Kubernetes
APIs for routing traffic both north-south and east-west:
![Gateway API Logo](gateway-api-logo.png "Gateway API Logo")
### CEL Validation
Historically, Gateway API has bundled a validating webhook as part of installing
the API. Starting in v1.0, webhook installation is optional and only recommended
for Kubernetes 1.24. Gateway API now includes
[CEL](https://kubernetes.io/docs/reference/using-api/cel/) validation rules as
part of the
[CRDs](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/).
This new form of validation is supported in Kubernetes 1.25+, and thus the
validating webhook is no longer required in most installations.
### Standard channel
This release was primarily focused on ensuring that the existing beta APIs were
well defined and sufficiently stable to graduate to GA. That led to a variety of
spec clarifications, as well as some improvements to status to improve the
overall UX when interacting with Gateway API.
### Experimental channel
Most of the changes included in this release were limited to the experimental
channel. These include HTTPRoute timeouts, TLS config from Gateways to backends,
WebSocket support, Gateway infrastructure labels, and more. Stay tuned for a
follow up blog post that will cover each of these new features in detail.
### Everything else
For a full list of the changes included in this release, please refer to the
[v1.0.0 release
notes](https://github.com/kubernetes-sigs/gateway-api/releases/tag/v0.1.0).
## How we got here
The idea of Gateway API was initially [proposed 4 years ago at KubeCon San
Diego](https://youtu.be/Ne9UJL6irXY?si=wgtC9w8PMB5ZHil2) as the next generation
of Ingress API. Since then, an incredible community has formed to develop what
has likely become the most collaborative API in Kubernetes history. Over 170
people have contributed to this API so far, and that number continues to grow.
A special thank you to the 20+ [community members who agreed to take on an
official role in the
project](https://github.com/kubernetes-sigs/gateway-api/blob/main/OWNERS_ALIASES),
providing some time for reviews and sharing the load of maintaining the project!
We especially want to highlight the emeritus maintainers that played a pivotal
role in the early development of this project:
* [Bowei Du](https://github.com/bowei)
* [Daneyon Hansen](https://github.com/danehans)
* [Harry Bagdi](https://github.com/hbagdi)
## Try it out
Unlike other Kubernetes APIs, you don't need to upgrade to the latest version of
Kubernetes to get the latest version of Gateway API. As long as you're running
one of the 5 most recent minor versions of Kubernetes (1.24+), you'll be able to
get up and running with the latest version of Gateway API.
To try out the API, follow our [Getting Started
guide](https://gateway-api.sigs.k8s.io/guides/).
## What's next
This release is just the beginning of a much larger journey for Gateway API, and
there are still plenty of new features and new ideas in flight for future
releases of the API.
One of our key goals going forward is to work to stabilize and graduate other
experimental features of the API. These include [support for service
mesh](https://gateway-api.sigs.k8s.io/concepts/gamma/), additional route types
([GRPCRoute](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.GRPCRoute),
[TCPRoute](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.TCPRoute),
[TLSRoute](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.TLSRoute),
[UDPRoute](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.UDPRoute)),
and a variety of experimental features.
We've also been working towards moving
[ReferenceGrant](https://gateway-api.sigs.k8s.io/api-types/referencegrant/) into
a built-in Kubernetes API that can be used for more than just Gateway API.
Within Gateway API, we've used this resource to safely enable cross-namespace
references, and that concept is now being adopted by other SIGs. The new version
of this API will be owned by SIG-Auth and will likely include at least some
modifications as it migrates to a built-in Kubernetes API.
### Gateway API at KubeCon + CloudNativeCon
At [KubeCon North America
(Chicago)](https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/)
and the adjacent [Contributor
Summit](https://www.kubernetes.dev/events/2023/kcsna/) there are several talks
related to Gateway API that will go into more detail on these topics. If you're
attending either of these events this year, considering adding these to your
schedule.
**Contributor Summit:**
- [Lessons Learned Building a GA API with CRDs](https://sched.co/1Sp9u)
- [Conformance Profiles: Building a generic conformance test reporting framework](https://sched.co/1Sp9l)
- [Gateway API: Beyond GA](https://sched.co/1SpA9)
**KubeCon Main Event:**
- [Gateway API: The Most Collaborative API in Kubernetes History Is GA](https://sched.co/1R2qM)
**KubeCon Office Hours:**
Gateway API maintainers will be holding office hours sessions at KubeCon if
you'd like to discuss or brainstorm any related topics. To get the latest
updates on these sessions, join the `#sig-network-gateway-api` channel on
[Kubernetes Slack](https://slack.kubernetes.io/).
## Get Involved
We've only barely scratched the surface of what's in flight with Gateway API.
There are lots of opportunities to get involved and help define the future of
Kubernetes routing APIs for both Ingress and Mesh.
If this is interesting to you, please [join us in the
community](https://gateway-api.sigs.k8s.io/contributing/) and help us build the
future of Gateway API together!