Significant refactoring of Gateway GA blog post
parent
d2ea8ddb99
commit
c46e22e235
|
@ -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 |
|
@ -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!
|
Loading…
Reference in New Issue