|
| 1 | +--- |
| 2 | +layout: blog |
| 3 | +title: "Gateway API is now Generally Available (GA)" |
| 4 | +date: 2023-10-19T10:00:00-08:00 |
| 5 | +slug: gateway-api-ga |
| 6 | +--- |
| 7 | + |
| 8 | +***Authors:*** Shane Utt (Kong), Nick Young (Isovalent), Rob Scott (Google) |
| 9 | + |
| 10 | +We (the community developing [Gateway API][gwapi]) are incredibly pleased and |
| 11 | +proud to announce _general availability_ of Gateway API for use with Kubernetes |
| 12 | +clusters `v1.24` and newer! |
| 13 | + |
| 14 | +## Important Highlights |
| 15 | + |
| 16 | +Gateway API brings a lot of new networking possibilities to the table in your |
| 17 | +Kubernetes cluster. In this post we'll cover some of the most important |
| 18 | +highlights. |
| 19 | + |
| 20 | +For a complete list of changes for this specific release, please see our |
| 21 | +[v1.0.0 changelog entry][chlogv1]. |
| 22 | + |
| 23 | +For a complete list of every feature for every release, or to review some of |
| 24 | +the releases leading up to `v1.0.0`, please see our [historical |
| 25 | +changelog][clog]. |
| 26 | + |
| 27 | +### Version 1 APIs |
| 28 | + |
| 29 | +This marks the **first stable release** of Gateway API, where we are now |
| 30 | +publishing the following APIs as `v1` (Version 1): |
| 31 | + |
| 32 | +- [GatewayClass][gwc] |
| 33 | +- [Gateway][gw] |
| 34 | +- [HTTPRoute][hr] |
| 35 | + |
| 36 | +Reaching version 1 with these APIs means we future iterations on them will be |
| 37 | +handled in a backwards compatible manner. |
| 38 | + |
| 39 | +### CEL Migration |
| 40 | + |
| 41 | +Gateway API [CRDs][crds] now include [CEL][cel] validation. This streamlines |
| 42 | +the development of validation for our resources, and reduces the overhead of |
| 43 | +deploying Gateway API to a cluster as it eliminates the need for our historical |
| 44 | +[admission webhook][admw]. |
| 45 | + |
| 46 | +> **Note**: For Kubernetes `v1.25` and newer we recommend against deploying the |
| 47 | +> webhook, and if you had it running previously you can now uninstall it in |
| 48 | +> favor of the validation now provided via CEL. |
| 49 | +
|
| 50 | +### Kubernetes Support |
| 51 | + |
| 52 | +Gateway API generally [supports the last 5 stable Kubernetes versions][kvs]. As |
| 53 | +such, this release is supported on Kubernetes clusters version `1.24` through |
| 54 | +`1.29` at the time of release. |
| 55 | + |
| 56 | +> **Warning**: Related to our migration to [CEL][cel] as mentioned above, we |
| 57 | +> don't recommend deploying on `v1.24` clusters if it can be avoided as these |
| 58 | +> clusters will still require the admission webhook, and that webhook is |
| 59 | +> considered deprecated and support for it will drop shortly after this GA |
| 60 | +> release when Kubernetes `v1.30` becomes available. If it's unavoidable to |
| 61 | +> deploy on `v1.24`, just note that you'll need to upgrade fairly soon in |
| 62 | +> order to be considered supported. |
| 63 | +
|
| 64 | +### Getting Started |
| 65 | + |
| 66 | +If you want to try Gateway API features out for yourself but don't know where |
| 67 | +to get started you'll want to check out one of the 20+ implementations which |
| 68 | +we list on our website: |
| 69 | + |
| 70 | +https://gateway-api.sigs.k8s.io/implementations/ |
| 71 | + |
| 72 | +Gateway API itself is just an API for downstream projects to implement, so take |
| 73 | +some time to peruse the implementations list above and find one that seems to |
| 74 | +fit your needs, or that you're most familiar with. |
| 75 | + |
| 76 | +> **Note**: with this release we now have basic support for downstream |
| 77 | +> implementations to report the results of their Gateway API conformance test |
| 78 | +> runs. This means that for some implementations on the above implementations |
| 79 | +> page you may see a `Gateway API Conformance vX.X.X` badge present under their |
| 80 | +> project header. This indicates that this implementation _is conformant_ for |
| 81 | +> the version present in the badge, and is sending back reports of their |
| 82 | +> conformance to the upstream project, including details on which specific |
| 83 | +> features they support. Click on the badge to see a more detailed report of |
| 84 | +> supported features, but note that the reporting system is considered |
| 85 | +> experimental and the structure of these reports is subject to change. |
| 86 | +
|
| 87 | +## Future Plans |
| 88 | + |
| 89 | +General availability is just the beginning of the much larger journey for |
| 90 | +Gateway API, and there's plenty of new features and new ideas in flight for the |
| 91 | +upcoming releases! |
| 92 | + |
| 93 | +If you opt-in to the [experimental channel][expch] for this release, you'll find |
| 94 | +that there are several experimental features available which are being |
| 95 | +considered for inclusion as stable in future releases: |
| 96 | + |
| 97 | +- [BackendTLSPolicy][gep1897] |
| 98 | +- [HTTPRoute Timeouts][gep1742] |
| 99 | +- [Gateway Infrastructure Labels][gep1762] |
| 100 | +- [Websockets, HTTP/2 and More!][gep1911] |
| 101 | +- [GWCTL, our new Gateway API CLI][gwctl] |
| 102 | + |
| 103 | +We intend to have a blog post following up on this one which will cover these |
| 104 | +(and potentially more) experimental and upcoming features where the authors of |
| 105 | +the features themselves can provide a greater level of detail. |
| 106 | + |
| 107 | +In future iterations we also intend to grow the maturity and work towards |
| 108 | +[graduation][grad] of APIs other than `GatewayClass`, `Gateway`, and |
| 109 | +`HTTPRoute`, which are not yet at version 1: |
| 110 | + |
| 111 | +- [GRPCRoute][grpc] |
| 112 | +- [TCPRoute][tcp] |
| 113 | +- [UDPRoute][udp] |
| 114 | +- [TLSRoute][tls] |
| 115 | +- [ReferenceGrant][refg] |
| 116 | + |
| 117 | +[ReferenceGrant][refg] is a slightly special case as we are considering what |
| 118 | +to do with this resource next: we've come to understand this might be a |
| 119 | +feature applicable to the greater Kubernetes community and we're trying to |
| 120 | +navigate potentially moving it somewhere more general to maximize benefit. |
| 121 | + |
| 122 | +For those interested in service mesh, note that we continue to work on making |
| 123 | +Gateway API resources available for use in service mesh contexts as part of the |
| 124 | +[GAMMA project][gamma]. Please see our recent blog post ["Gateway API v0.8.0: |
| 125 | +Introducing Service Mesh Support"][gammablog] for more details. |
| 126 | + |
| 127 | +What you've seen here is _not exhaustive_! Gateway API is a highly active |
| 128 | +project, with dozens of people actively working on it. If you're hoping to see |
| 129 | +one of the above routes graduated, or have ideas for features that we have yet |
| 130 | +to account for, we _strongly encourage_ you to [join us in the community][com] |
| 131 | +and help us build! |
| 132 | + |
| 133 | +## Kubecon North America: Chicago |
| 134 | + |
| 135 | +At [Kubecon North America (Chicago)][kna] and the adjacent |
| 136 | +[Contributor Summit][csum] there are several talks about or related to Gateway |
| 137 | +API that expand upon GA, discuss some of our new features, and even talk about |
| 138 | +what happens next. If you're attending Kubecon and the Contributor Summit this |
| 139 | +year, please do see us at these talks! |
| 140 | + |
| 141 | +*Contributor Summit*: |
| 142 | + |
| 143 | +- [Lessons learned building a GA API with CRDs][csum1] |
| 144 | +- [Conformance Testing (from Gateway API)][csum2] |
| 145 | +- [Gateway API: Beyond GA][csum3] |
| 146 | + |
| 147 | +*Kubecon Main Event*: |
| 148 | + |
| 149 | +**TODO** |
| 150 | + |
| 151 | +## Recognition & Appreciation |
| 152 | + |
| 153 | +Our project is more than just a project, it is a community of people working |
| 154 | +together to solve common problems. Our community _is_ the project and we want to |
| 155 | +give a huge shout out and thanks to them! |
| 156 | + |
| 157 | +Thank you so much to our [170+ contributors][contribs] who built this project |
| 158 | +together with us, and made our GA release possible! |
| 159 | + |
| 160 | +A special thank you to our [community members which agreed to take on an |
| 161 | +official role in the project][roles], explicitly providing some time for reviews |
| 162 | +and sharing the load of maintaining the project! |
| 163 | + |
| 164 | +[gwapi]:https://gateway-api.sigs.k8s.io/ |
| 165 | +[clogv1]:https://github.com/kubernetes-sigs/gateway-api/blob/main/CHANGELOG.md#v100 |
| 166 | +[clog]:https://github.com/kubernetes-sigs/gateway-api/blob/main/CHANGELOG.md |
| 167 | +[gwc]:https://gateway-api.sigs.k8s.io/api-types/gatewayclass/ |
| 168 | +[gw]:https://gateway-api.sigs.k8s.io/api-types/gateway/ |
| 169 | +[hr]:https://gateway-api.sigs.k8s.io/api-types/httproute/ |
| 170 | +[crds]:https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/ |
| 171 | +[kvs]:https://gateway-api.sigs.k8s.io/concepts/versioning/#supported-versions |
| 172 | +[cel]:https://kubernetes.io/docs/reference/using-api/cel/ |
| 173 | +[admw]:https://github.com/kubernetes-sigs/gateway-api/tree/main/config/webhook |
| 174 | +[expch]:https://gateway-api.sigs.k8s.io/concepts/versioning/#release-channels |
| 175 | +[gep1897]:https://gateway-api.sigs.k8s.io/geps/gep-1897/ |
| 176 | +[gep1742]:https://gateway-api.sigs.k8s.io/geps/gep-1742/ |
| 177 | +[gep1762]:https://gateway-api.sigs.k8s.io/geps/gep-1762/ |
| 178 | +[gep1911]:https://gateway-api.sigs.k8s.io/geps/gep-1911/ |
| 179 | +[gwctl]:https://github.com/kubernetes-sigs/gateway-api/tree/main/gwctl |
| 180 | +[grad]:https://gateway-api.sigs.k8s.io/concepts/versioning/#graduation-criteria |
| 181 | +[grpc]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.GRPCRoute |
| 182 | +[tcp]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.TCPRoute |
| 183 | +[udp]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.UDPRoute |
| 184 | +[tls]:https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.TLSRoute |
| 185 | +[com]:https://gateway-api.sigs.k8s.io/contributing/#how-to-get-involved |
| 186 | +[refg]:https://gateway-api.sigs.k8s.io/api-types/referencegrant/ |
| 187 | +[gamma]:https://gateway-api.sigs.k8s.io/concepts/gamma/ |
| 188 | +[gammablog]:https://kubernetes.io/blog/2023/08/29/gateway-api-v0-8/ |
| 189 | +[kna]:https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/ |
| 190 | +[csum]:https://kcsna2023.sched.com/ |
| 191 | +[csum1]:https://kcsna2023.sched.com/event/1Sp9u/lessons-learned-building-a-ga-api-with-crds |
| 192 | +[csum2]:https://kcsna2023.sched.com/event/1Sp9l/conformance-profiles-building-a-generic-conformance-test-reporting-framework |
| 193 | +[csum3]:https://kcsna2023.sched.com/event/1SpA9/gateway-api-beyond-ga |
| 194 | +[contribs]:https://github.com/kubernetes-sigs/gateway-api/graphs/contributors |
| 195 | +[roles]:https://github.com/kubernetes-sigs/gateway-api/blob/main/OWNERS_ALIASES |
0 commit comments