@@ -5,49 +5,35 @@ description: >
55 some new capabilities, conformance profiles are supported, and more!
66---
77
8- # Gateway API: Welcome, GAMMA !
8+ # Gateway API: Welcome, Service Mesh Users !
99
1010<small style =" position :relative ; top :-30px ;" >
11- :octicons-calendar-24: August 09 , 2023 ·
11+ :octicons-calendar-24: August 29 , 2023 ·
1212 :octicons-clock-24: 5 min read
1313</small >
1414
15- We are thrilled to announce the v0.8.0 release of the Gateway API! With this
16- release, the work the GAMMA initiative has been doing over the past year has
17- reached [ Experimental status] [ status ] , and the Gateway and HTTPRoute resources
18- gain some new capabilities. We look forward to your feedback!
15+ We are thrilled to announce the v0.8.0 release of Gateway API! With this
16+ release, Gateway API support for service mesh has reached [ Experimental
17+ status] [ status ] , and the Gateway and HTTPRoute resources gain some new
18+ capabilities. We look forward to your feedback!
1919
20- ## What is the GAMMA initiative ?
20+ ## Why add Service Mesh support to Gateway API ?
2121
22- Almost from the point where the Gateway API was itself implementable,
23- questions have been raised about how it could be used for configuring service
24- meshes. The [ GAMMA initiative] [ gamma ] , started in 2022, is a dedicated
25- vendor-neutral workstream within the Gateway API, working on examining how
26- best to fit the service mesh into the framework of the Gateway API resources,
27- without requiring users of the Gateway API to relearn everything they
28- understand about the Gateway API itself.
22+ While the initial focus of Gateway API was always ingress (north-south)
23+ traffic, it was clear almost from the beginning that the same basic routing
24+ concepts should also be applicable to service mesh (east-west) traffic. In
25+ 2022, the Gateway API subproject started the [ GAMMA initiative] [ gamma ] , a
26+ dedicated vendor-neutral workstream, specifically to examine how best to fit
27+ service mesh support into the framework of the Gateway API resources, without
28+ requiring users of Gateway API to relearn everything they understand about the
29+ API.
2930
3031Over the last year, GAMMA has dug deeply into the challenges and possible
3132solutions around using the Gateway API for service mesh. The end result is a
3233small number of [ enhancement
3334proposals] ( https://gateway-api.sigs.k8s.io/v1beta1/contributing/gep/ ) that
3435subsume many hours of thought and debate, and provide a minimum viable path to
35- allow the Gateway API to be used for service mesh. Of particular note:
36-
37- - [ GEP-1324] ( https://gateway-api.sigs.k8s.io/geps/gep-1324/ ) provides an
38- overview of the GAMMA goals and some important definitions. This GEP is well
39- worth a read for its discussion of the problem space.
40- - [ GEP-1426] ( https://gateway-api.sigs.k8s.io/geps/gep-1426/ ) defines how to
41- use Gateway API route resources, such as HTTPRoute, to manage traffic within
42- a service mesh.
43- - [ GEP-1686] ( https://gateway-api.sigs.k8s.io/geps/gep-1686/ ) builds on the
44- work of [ GEP-1709] ( https://gateway-api.sigs.k8s.io/geps/gep-1709/ ) to define
45- a _ conformance profile_ for service meshes to be declared conformant with
46- the Gateway API.
47-
48- Although these are [ Experimental] [ status ] APIs, note that they are available
49- in the [ ` standard ` release channel] [ ch ] , since the GAMMA initiative has not
50- needed to introduce new resources or fields to date.
36+ allow the Gateway API to be used for service mesh.
5137
5238### How will mesh routing work when using the Gateway API?
5339
@@ -69,9 +55,10 @@ follows:
6955 name : bar-route
7056 spec :
7157 parentRefs :
72- - name : demo-app
73- port : 5000
74- kind : Service
58+ - group : " "
59+ kind : Service
60+ name : demo-app
61+ port : 5000
7562 rules :
7663 - matches :
7764 - headers :
@@ -92,59 +79,108 @@ will be routed to `demo-app-v2` -- and since this is being handled by the
9279service mesh, not the ingress controller, the A/B test can happen anywhere in
9380the application's call graph.
9481
95- # ## How does Gateway API conformance work for a service mesh ?
82+ # # How do I know this will be truly portable ?
9683
97- One of the challenges that the GAMMA initiative ran into is that Gateway API
98- conformance was strongly tied to the idea that a given implementation provides
99- an ingress controller. Many service meshes don't, and requiring a
100- GAMMA-conformant mesh to also implement an ingress controller seemed
101- impractical at best. This resulted in work restarting on Gateway API
102- _conformance profiles_, as discussed in
103- [GEP-1709](https://gateway-api.sigs.k8s.io/geps/gep-1709/) .
84+ Gateway API has been investing heavily in conformance tests across all
85+ features it supports, and mesh is no exception. One of the challenges that the
86+ GAMMA initiative ran into is that these tests strongly tied to the idea that a
87+ given implementation provides an ingress controller. Many service meshes
88+ don't, and requiring a GAMMA-conformant mesh to also implement an ingress
89+ controller seemed impractical at best. This resulted in work restarting on
90+ Gateway API _conformance profiles_, as discussed in [GEP-1709].
10491
10592The basic idea of conformance profiles is that we can define subsets of the
106- Gateway API, and allow implementations to choose - and document! - which
107- subsets they conform to. (SIG-Network-Policy is going to be using this concept
108- as well.) GAMMA is adding a new profile, named `Mesh`, which checks only the
109- mesh functionality as defined by GAMMA. At this point, Kuma 2.3+, Linkerd
93+ Gateway API, and allow implementations to choose (and document) which subsets
94+ they conform to. GAMMA is adding a new profile, named `Mesh`, which checks only
95+ the mesh functionality as defined by GAMMA. At this point, Kuma 2.3+, Linkerd
110962.14+, and Istio 1.16+ are all conformant with the `Mesh` profile.
11197
11298# # What else is in Gateway API v0.8.0?
11399
114- In addition to GAMMA becoming experimental, the most significant change in
115- v0.8.0 is that we have (by necessity) taken a hard look at the process around
116- [Experimental][status] GEPs. Some of these GEPs have been lingering long
117- enough that projects have come to rely on them in production use, which is a
118- bit of a breakdown of the GEP process. In order to prevent it happening in the
119- future, we have changed the GEP process such that reaching
120- [Experimental][status] _requires_ that a GEP include both the graduation
121- criteria by which the GEP will become [Standard][status], and a probationary
122- period after which the GEP will be dropped if does not meet its graduation
123- criteria.
100+ This release is all about preparing Gateway API for the upcoming v1.0 release
101+ where HTTPRoute, Gateway, and GatewayClass will graduate to GA. There are two
102+ main changes related to this : CEL validation and GEP process changes.
103+
104+ # ## CEL Validation
105+
106+ The first major change is that Gateway API v0.8.0 is the start of a transition
107+ from webhook validation to CEL validation using information built into the
108+ CRDs. That will mean different things depending on the version of Kubernetes
109+ you're using :
110+
111+ # ### Kubernetes 1.25+
112+
113+ CEL validation is fully supported, and almost all validation is implemented in
114+ CEL. (The sole exception is that header names in header modifier filters can
115+ only do case-insensitive validation. There is more information in [issue
116+ 2277].)
117+
118+ We recommend _not_ using the validating webhook on these Kubernetes versions.
119+
120+ # ### Kubernetes 1.23 and 1.24
121+
122+ CEL validation is not supported, but Gateway API v0.8.0 CRDs can still be
123+ installed. When you upgrade to Kubernetes 1.25+, the validation included in
124+ these CRDs will automatically take effect.
125+
126+ We recommend continuing to use the validating webhook on these Kubernetes
127+ versions.
128+
129+ # ### Kubernetes 1.22 and older
130+
131+ Gateway API only commits to support for [5 most recent versions of
132+ Kubernetes][supported-versions]. As such, these versions are no longer
133+ supported by Gateway API, and unfortunately Gateway API v0.8.0 cannot be
134+ installed on them, since CRDs containing CEL validation will be rejected.
135+
136+ # ## GEP Process Changes
137+
138+ The second significant change in Gateway API v0.8.0 is that we have (by
139+ necessity) taken a hard look at the process around [Experimental][status]
140+ GEPs. Some of these GEPs have been lingering long enough that projects have
141+ come to rely on them in production use, which is a bit of a breakdown of the
142+ GEP process. In order to prevent it happening in the future, we have changed
143+ the GEP process such that reaching [Experimental][status] _requires_ that a
144+ GEP include both the graduation criteria by which the GEP will become
145+ [Standard][status], and a probationary period after which the GEP will be
146+ dropped if does not meet its graduation criteria.
124147
125148For an exhaustive list of changes included in the `v0.8.0` release, please see
126- the [v0.8.0 release
127- notes](https://github.com/kubernetes-sigs/gateway-api/releases/tag/v0.8.0).
128- For more information on Gateway API versioning, refer to the [official
129- documentation](https://gateway-api.sigs.k8s.io/concepts/versioning/).
149+ the [v0.8.0 release notes]. For more information on Gateway API versioning,
150+ refer to the [official documentation][versioning docs].
130151
131152# # How can I get started with the Gateway API?
132153
133- At this point, the Gateway API is supported by a number of
134- [implementations][impl] of both ingress controllers and service meshes. To get
135- started, take a look at the [API concepts documentation][concepts] and check
136- out some of the [Guides][guides] to learn about the Gateway API, or check out
137- the [implementations page][impl] and select an implementation that you're
138- familiar with to try it out. Gateway API is a [Custom Resource Definition
139- (CRD)][crd] based API so you'll need to [install the CRDs][install-crds] onto
140- a cluster to use the API.
154+ Gateway API represents the future of load balancing, routing, and service mesh
155+ APIs in Kubernetes. There are already more than 20 [implementations][impl]
156+ available (including both ingress controllers and service meshes) and the list
157+ keeps growing.
158+
159+ If you're interested in getting started with Gateway API, take a look at the
160+ [API concepts documentation][concepts] and check out some of the
161+ [Guides][guides] to try it out. Because this is a CRD-based API, you can
162+ install the latest version on any Kubernetes 1.23+ cluster.
141163
142164If you're specifically interested in helping to contribute to Gateway API, we
143165would love to have you! Please feel free to [open a new issue][issue] on the
144166repository, or join in the [discussions][disc]. Also check out the [community
145167page][community] which includes links to the Slack channel and community
146168meetings. We look forward to seeing you!!
147169
170+ # # Further Reading:
171+
172+ - [GEP-1324] provides an overview of the GAMMA goals and some important
173+ definitions. This GEP is well worth a read for its discussion of the problem
174+ space.
175+ - [GEP-1426] defines how to use Gateway API route resources, such as
176+ HTTPRoute, to manage traffic within a service mesh.
177+ - [GEP-1686] builds on the work of [GEP-1709] to define a _conformance
178+ profile_ for service meshes to be declared conformant with the Gateway API.
179+
180+ Although these are [Experimental][status] APIs, note that they are available
181+ in the [`standard` release channel][ch], since the GAMMA initiative has not
182+ needed to introduce new resources or fields to date.
183+
148184[gamma]:/concepts/gamma/
149185[status]:/geps/overview/#status
150186[ch]:/concepts/versioning/#release-channels-eg-experimental-standard
@@ -158,3 +194,10 @@ meetings. We look forward to seeing you!!
158194[community]:/contributing/community/
159195[mesh-routing]:/concepts/gamma/#how-the-gateway-api-works-for-service-mesh
160196[GEP-1426]:/geps/gep-1426/
197+ [GEP-1324]:/geps/gep-1324/
198+ [GEP-1686]:/geps/gep-1686/
199+ [GEP-1709]:/geps/gep-1709/
200+ [issue 2277]:https://github.com/kubernetes-sigs/gateway-api/issues/2277
201+ [supported-versions]:https://gateway-api.sigs.k8s.io/concepts/versioning/#supported-versions
202+ [v0.8.0 release notes]:https://github.com/kubernetes-sigs/gateway-api/releases/tag/v0.8.0
203+ [versioning docs]:https://gateway-api.sigs.k8s.io/concepts/versioning/
0 commit comments