Skip to content

Commit e0d2d7e

Browse files
committed
Reconcile with Rob's edits on the K8s website
Signed-off-by: [email protected]
1 parent 9d1e5b6 commit e0d2d7e

File tree

1 file changed

+110
-67
lines changed

1 file changed

+110
-67
lines changed

site-src/blog/2023/0829-welcome-gamma.md

Lines changed: 110 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -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

3031
Over the last year, GAMMA has dug deeply into the challenges and possible
3132
solutions around using the Gateway API for service mesh. The end result is a
3233
small number of [enhancement
3334
proposals](https://gateway-api.sigs.k8s.io/v1beta1/contributing/gep/) that
3435
subsume 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
9279
service mesh, not the ingress controller, the A/B test can happen anywhere in
9380
the 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

10592
The 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
11096
2.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

125148
For 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

142164
If you're specifically interested in helping to contribute to Gateway API, we
143165
would love to have you! Please feel free to [open a new issue][issue] on the
144166
repository, or join in the [discussions][disc]. Also check out the [community
145167
page][community] which includes links to the Slack channel and community
146168
meetings. 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

Comments
 (0)