|
| 1 | +--- |
| 2 | +layout: blog |
| 3 | +title: Kubernetes Gateway API Graduates to Beta |
| 4 | +date: 2022-07-13 |
| 5 | +slug: gateway-api-graduates-to-beta |
| 6 | +canonicalUrl: https://gateway-api.sigs.k8s.io/blog/2022/graduating-to-beta/ |
| 7 | +--- |
| 8 | + |
| 9 | +**Authors:** Shane Utt (Kong), Rob Scott (Google), Nick Young (VMware), Jeff Apple (HashiCorp) |
| 10 | + |
| 11 | +We are excited to announce the v0.5.0 release of Gateway API. For the first |
| 12 | +time, several of our most important Gateway API resources are graduating to |
| 13 | +beta. Additional, we are starting a new initiative to explore how Gateway API |
| 14 | +can be used for mesh and introducing new experimental concepts such as URL |
| 15 | +rewrites. We'll cover all of this and more below. |
| 16 | + |
| 17 | +## What is Gateway API? |
| 18 | + |
| 19 | +Gateway API is a collection of resources centered around [Gateway][gw] resources |
| 20 | +(which represent the underlying network gateways / proxy servers) to enable |
| 21 | +robust Kubernetes service networking through expressive, extensible and |
| 22 | +role-oriented interfaces that are implemented by many vendors and have broad |
| 23 | +industry support. |
| 24 | + |
| 25 | +Originally conceived as a successor to the well known [Ingress][ing] API, the |
| 26 | +benefits of Gateway API include (but are not limited to) explicit support for |
| 27 | +many commonly used networking protocols (e.g. `HTTP`, `TLS`, `TCP`, `UDP`) as |
| 28 | +well as tightly integrated support for Transport Layer Security (TLS). The |
| 29 | +`Gateway` resource in particular enables implementations to manage the lifecycle |
| 30 | +of network gateways as a Kubernetes API. |
| 31 | + |
| 32 | +If you're an end-user interested in some of the benefits of Gateway API we |
| 33 | +invite you to jump in and find an implementation that suits you. At the time of |
| 34 | +this release there are over a dozen [implementations][impl] for popular API |
| 35 | +gateways and service meshes and guides are available to start exploring quickly. |
| 36 | + |
| 37 | +[gw]:https://gateway-api.sigs.k8s.io/api-types/gateway/ |
| 38 | +[ing]:https://kubernetes.io/docs/reference/kubernetes-api/service-resources/ingress-v1/ |
| 39 | +[impl]:https://gateway-api.sigs.k8s.io/implementations/ |
| 40 | + |
| 41 | +### Getting started |
| 42 | + |
| 43 | +Gateway API is an official Kubernetes API like |
| 44 | +[Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/). |
| 45 | +Gateway API represents a superset of Ingress functionality, enabling more |
| 46 | +advanced concepts. Similar to Ingress, there is no default implementation of |
| 47 | +Gateway API built into Kubernetes. Instead, there are many different |
| 48 | +[implementations][impl] available, providing significant choice in terms of underlying |
| 49 | +technologies while providing a consistent and portable experience. |
| 50 | + |
| 51 | +Take a look at the [API concepts documentation][concepts] and check out some of |
| 52 | +the [Guides][guides] to start familiarizing yourself with the APIs and how they |
| 53 | +work. When you're ready for a practical application open the [implementations |
| 54 | +page][impl] and select an implementation that belongs to an existing technology |
| 55 | +you may already be familiar with or the one your cluster provider uses as a |
| 56 | +default (if applicable). Gateway API is a [Custom Resource Definition |
| 57 | +(CRD)][crd] based API so you'll need to [install the CRDs][install-crds] onto a |
| 58 | +cluster to use the API. |
| 59 | + |
| 60 | +If you're specifically interested in helping to contribute to Gateway API, we |
| 61 | +would love to have you! Please feel free to [open a new issue][issue] on the |
| 62 | +repository, or join in the [discussions][disc]. Also check out the [community |
| 63 | +page][community] which includes links to the Slack channel and community meetings. |
| 64 | + |
| 65 | +[crd]:https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/ |
| 66 | +[concepts]:https://gateway-api.sigs.k8s.io/concepts/api-overview/ |
| 67 | +[guides]:https://gateway-api.sigs.k8s.io/guides/getting-started/ |
| 68 | +[impl]:https://gateway-api.sigs.k8s.io/implementations/ |
| 69 | +[install-crds]:https://gateway-api.sigs.k8s.io/guides/getting-started/#install-the-crds |
| 70 | +[issue]:https://github.com/kubernetes-sigs/gateway-api/issues/new/choose |
| 71 | +[disc]:https://github.com/kubernetes-sigs/gateway-api/discussions |
| 72 | +[community]:https://gateway-api.sigs.k8s.io/contributing/community/ |
| 73 | + |
| 74 | +## Release highlights |
| 75 | + |
| 76 | +### Graduation to beta |
| 77 | + |
| 78 | +The `v0.5.0` release is particularly historic because it marks the growth in |
| 79 | +maturity to a beta API version (`v1beta1`) release for some of the key APIs: |
| 80 | + |
| 81 | +- [GatewayClass](https://gateway-api.sigs.k8s.io/api-types/gatewayclass/) |
| 82 | +- [Gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/) |
| 83 | +- [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/) |
| 84 | + |
| 85 | +This achievement was marked by the completion of several graduation criteria: |
| 86 | + |
| 87 | +- API has been [widely implemented][impl]. |
| 88 | +- Conformance tests provide basic coverage for all resources and have multiple implementations passing tests. |
| 89 | +- Most of the API surface is actively being used. |
| 90 | +- Kubernetes SIG Network API reviewers have approved graduation to beta. |
| 91 | + |
| 92 | +For more information on Gateway API versioning, refer to the [official |
| 93 | +documentation](https://gateway-api.sigs.k8s.io/concepts/versioning/). To see |
| 94 | +what's in store for future releases check out the [next steps](#next-steps) |
| 95 | +section. |
| 96 | + |
| 97 | +[impl]:https://gateway-api.sigs.k8s.io/implementations/ |
| 98 | + |
| 99 | +### Release channels |
| 100 | + |
| 101 | +This release introduces the `experimental` and `standard` [release channels][ch] |
| 102 | +which enable a better balance of maintaining stability while still enabling |
| 103 | +experimentation and iterative development. |
| 104 | + |
| 105 | +The `standard` release channel includes: |
| 106 | + |
| 107 | +- resources that have graduated to beta |
| 108 | +- fields that have graduated to standard (no longer considered experimental) |
| 109 | + |
| 110 | +The `experimental` release channel includes everything in the `standard` release |
| 111 | +channel, plus: |
| 112 | + |
| 113 | +- `alpha` API resources |
| 114 | +- fields that are considered experimental and have not graduated to `standard` channel |
| 115 | + |
| 116 | +Release channels are used internally to enable iterative development with |
| 117 | +quick turnaround, and externally to indicate feature stability to implementors |
| 118 | +and end-users. |
| 119 | + |
| 120 | +For this release we've added the following experimental features: |
| 121 | + |
| 122 | +- [Routes can attach to Gateways by specifying port numbers](https://gateway-api.sigs.k8s.io/geps/gep-957/) |
| 123 | +- [URL rewrites and path redirects](https://gateway-api.sigs.k8s.io/geps/gep-726/) |
| 124 | + |
| 125 | +[ch]:https://gateway-api.sigs.k8s.io/concepts/versioning/#release-channels-eg-experimental-standard |
| 126 | + |
| 127 | +### Other improvements |
| 128 | + |
| 129 | +For an exhaustive list of changes included in the `v0.5.0` release, please see |
| 130 | +the [v0.5.0 release notes](https://github.com/kubernetes-sigs/gateway-api/releases/tag/v0.5.0). |
| 131 | + |
| 132 | +## Gateway API for service mesh: the GAMMA Initiative |
| 133 | +Some service mesh projects have [already implemented support for the Gateway |
| 134 | +API](https://gateway-api.sigs.k8s.io/implementations/). Significant overlap |
| 135 | +between the Service Mesh Interface (SMI) APIs and the Gateway API has [inspired |
| 136 | +discussion in the SMI |
| 137 | +community](https://github.com/servicemeshinterface/smi-spec/issues/249) about |
| 138 | +possible integration. |
| 139 | + |
| 140 | +We are pleased to announce that the service mesh community, including |
| 141 | +representatives from Cilium Service Mesh, Consul, Istio, Kuma, Linkerd, NGINX |
| 142 | +Service Mesh and Open Service Mesh, is coming together to form the [GAMMA |
| 143 | +Initiative](https://gateway-api.sigs.k8s.io/contributing/gamma/), a dedicated |
| 144 | +workstream within the Gateway API subproject focused on Gateway API for Mesh |
| 145 | +Management and Administration. |
| 146 | + |
| 147 | +This group will deliver [enhancement |
| 148 | +proposals](https://gateway-api.sigs.k8s.io/v1beta1/contributing/gep/) consisting |
| 149 | +of resources, additions, and modifications to the Gateway API specification for |
| 150 | +mesh and mesh-adjacent use-cases. |
| 151 | + |
| 152 | +This work has begun with [an exploration of using Gateway API for |
| 153 | +service-to-service |
| 154 | +traffic](https://docs.google.com/document/d/1T_DtMQoq2tccLAtJTpo3c0ohjm25vRS35MsestSL9QU/edit#heading=h.jt37re3yi6k5) |
| 155 | +and will continue with enhancement in areas such as authentication and |
| 156 | +authorization policy. |
| 157 | + |
| 158 | +## Next steps |
| 159 | + |
| 160 | +As we continue to mature the API for production use cases, here are some of the highlights of what we'll be working on for the next Gateway API releases: |
| 161 | + |
| 162 | +- [GRPCRoute][gep1016] for [gRPC][grpc] traffic routing |
| 163 | +- [Route delegation][pr1085] |
| 164 | +- Layer 4 API maturity: Graduating [TCPRoute][tcpr], [UDPRoute][udpr] and |
| 165 | + [TLSRoute][tlsr] to beta |
| 166 | +- [GAMMA Initiative](https://gateway-api.sigs.k8s.io/contributing/gamma/) - Gateway API for Service Mesh |
| 167 | + |
| 168 | +If there's something on this list you want to get involved in, or there's |
| 169 | +something not on this list that you want to advocate for to get on the roadmap |
| 170 | +please join us in the #sig-network-gateway-api channel on Kubernetes Slack or our weekly [community calls](https://gateway-api.sigs.k8s.io/contributing/community/#meetings). |
| 171 | + |
| 172 | +[gep1016]:https://github.com/kubernetes-sigs/gateway-api/blob/master/site-src/geps/gep-1016.md |
| 173 | +[grpc]:https://grpc.io/ |
| 174 | +[pr1085]:https://github.com/kubernetes-sigs/gateway-api/pull/1085 |
| 175 | +[tcpr]:https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1alpha2/tcproute_types.go |
| 176 | +[udpr]:https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1alpha2/udproute_types.go |
| 177 | +[tlsr]:https://github.com/kubernetes-sigs/gateway-api/blob/main/apis/v1alpha2/tlsroute_types.go |
| 178 | +[community]:https://gateway-api.sigs.k8s.io/contributing/community/ |
0 commit comments