Skip to content

Commit af08322

Browse files
authored
Merge pull request #42781 from kflynn/main
Gateway API 0.8.0... en español.
2 parents 1a3cf0a + c8e743b commit af08322

File tree

1 file changed

+211
-0
lines changed

1 file changed

+211
-0
lines changed
Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
---
2+
layout: blog
3+
title: "Gateway API v0.8.0: Soporte para service mesh"
4+
date: 2023-08-29T10:00:00-08:00
5+
slug: gateway-api-v0-8
6+
---
7+
8+
***Autores:*** Flynn (Buoyant), John Howard (Google), Keith Mattix
9+
(Microsoft), Michael Beaumont (Kong), Mike Morris (independent), Rob Scott
10+
(Google). Traducción desde [el inglés][english] (y errores relacionados) por
11+
Flynn.
12+
13+
_¡Mil gracias a María Teresa Rojas y Dani Baeyens por su inestimable ayuda revisando este post!_
14+
15+
Es un gran placer anunciar la versión v0.8.0 de Gateway API. Con esta versión,
16+
el soporte para service mesh en Gateway API ha alcanzado el [estado
17+
Experimental][status]. ¡Esperamos tus comentarios en la nueva versión!
18+
19+
Además, nos alegra anunciar que Kuma 2.3+, Linkerd 2.14+ e Istio 1.16+
20+
cumplen completamente con el soporte de service mesh de Gateway API.
21+
22+
> _Nota: "Gateway API" es un nombre propio de esta API._
23+
24+
## Soporte para service mesh en Gateway API
25+
26+
Aunque el foco inicial de Gateway API siempre fue el tráfico de entrada al
27+
cluster (norte-sur), estaba claro casi desde el principio que los mismos
28+
conceptos básicos de enrutamiento también deberían aplicarse al tráfico de
29+
service mesh (este-oeste). En 2022, el subproyecto Gateway API lanzó [la
30+
iniciativa GAMMA][gamma], un flujo de trabajo independiente a los distintos
31+
proveedores, para examinar la mejor manera de adaptar el soporte de service
32+
mesh al marco de los recursos de Gateway API, sin hacer que los usuarios
33+
de Gateway API tuvieran que aprender de nuevo todo lo aprendido.
34+
35+
Durante el último año, GAMMA ha investigado con cuidado los desafíos y
36+
posibles soluciones para usar Gateway API para service mesh. El resultado
37+
final son unas pocas [propuestas de mejora][geps] que reflejan muchas horas
38+
de reflexión y debate, y proporcionan un camino viable, con cambios mínimos,
39+
para permitir que Gateway API soporte service mesh.
40+
41+
### ¿Cómo funcionará el enrutamiento de mesh con Gateway API?
42+
43+
Todos los detalles se puede encontrar en [la documentación de la mesh de
44+
Gateway API][mesh-routing] y en [GEP-1426], pero en resumen: en Gateway API
45+
v0.8.0, un HTTPRoute puede tener un `parentRef` que sea un Service, no solo un
46+
Gateway. Anticipamos GEPs futuros en esta área a medida que adquirimos más
47+
experiencia con los casos de uso de service mesh: la capacidad de asociar un
48+
HTTPRoute con un Service permite usar Gateway API para una service mesh, pero
49+
hay múltiples casos de uso interesantes que son difíciles de manejar.
50+
51+
Un ejemplo: podrías usar un HTTPRoute para hacer una prueba A-B con la service mesh así:
52+
53+
```yaml
54+
apiVersion: gateway.networking.k8s.io/v1beta1
55+
kind: HTTPRoute
56+
metadata:
57+
name: bar-route
58+
spec:
59+
parentRefs:
60+
- group: ""
61+
kind: Service
62+
name: demo-app
63+
port: 5000
64+
rules:
65+
- matches:
66+
- headers:
67+
- type: Exact
68+
name: env
69+
value: v1
70+
backendRefs:
71+
- name: demo-app-v1
72+
port: 5000
73+
- backendRefs:
74+
- name: demo-app-v2
75+
port: 5000
76+
```
77+
78+
Cualquier solicitud al puerto 5000 del Service `demo-app` que tenga la
79+
cabecera `env: v1` se dirigirá a `demo-app-v1`, y las que no la tengan se
80+
dirigirán a `demo-app-v2`. Dado que esta decisión la toma la service mesh en
81+
vez del controlador de ingress, la prueba A-B se puede realizar en cualquier
82+
nivel del gráfico de llamadas de la aplicación.
83+
84+
## ¿Cómo se puede confiar que este soporte será verdaderamente portátil?
85+
86+
Gateway API ha invertido mucho esfuerzo en pruebas de conformidad en todas las
87+
funciones que soporta, y las de la service mesh no son excepciones. Uno de los
88+
desafíos que enfrentó la iniciativa GAMMA fue que muchas de estas pruebas
89+
siempre han requerido que la implementación proporcionara un controlador de
90+
ingress. Muchas service meshes no hacen así, y requerir que una mesh
91+
implemente un controlador de ingress para cumplir con GAMMA no parece
92+
práctico, cuando menos. Por lo tanto, hemos reiniciado el trabajo en _perfiles
93+
de conformidad_ de Gateway API, como se describe en [GEP-1709].
94+
95+
Con perfiles de conformidad, podemos definir subconjuntos de la funcionalidad
96+
de Gateway API, y permitir que las implementaciones elijan (y documenten) a
97+
qué subconjuntos se ajustan. GAMMA agrega un nuevo perfil `Mesh`, descrito en
98+
[GEP-1686], que sólo verifica la funcionalidad de service mesh definida por
99+
GAMMA. Ahora mismo, Kuma 2.3+, Linkerd 2.14+ e Istio 1.16+ son completamente
100+
compatibles con el perfil `Mesh`.
101+
102+
## ¿Qué más hay en Gateway API v0.8.0?
103+
104+
Ésta versión trata principalmente de preparar Gateway API para la versión
105+
v.1.0, en la que planeamos que HTTPRoute, Gateway y GatewayClass se graduarán
106+
a GA. Hay dos cambios principales relacionados con esta preparación:
107+
validación CEL y cambios en la versión de la API.
108+
109+
### Validación CEL
110+
111+
Gateway API v0.8.0 comienza la transición desde validación por webhook hasta
112+
[validación CEL][cel], usando información incluida en los CRDs. Esta
113+
transición significa cosas diferentes dependiendo de la versión de Kubernetes
114+
que se use:
115+
116+
#### Kubernetes 1.25+
117+
118+
La validación CEL está completamente soportada, y casi toda la validación de
119+
Gateway API está implementada en CEL. La única excepción es que, en los
120+
filtros de modificación de cabeceras, CEL solo puede validar los nombres de
121+
las cabeceras sin distinguir entre mayúsculas y minúsculas. Hay más
122+
información en [#2277][issue 2277].
123+
124+
Recomendamos que _no_ uses el webhook de validación en estas versiones de
125+
Kubernetes.
126+
127+
#### Kubernetes 1.23 y 1.24
128+
129+
La validación CEL no está soportada, pero aún se puede instalar los CRDs de
130+
Gateway API v0.8.0. Cuando actualices a Kubernetes 1.25+, la validación CEL
131+
incluida en los CRDs se activará automáticamente.
132+
133+
Recomendamos que sigas usando el webhook de validación en estas versiones de
134+
Kubernetes.
135+
136+
#### Kubernetes 1.22 y versiones anteriores
137+
138+
Gateway API solo se compromete a admitir las [cinco versiones más recientes de
139+
Kubernetes][supported-versions]. Por lo tanto, estas versiones ya no están
140+
soportados por Gateway API, y la versión v0.8.0 no se puede instalar en ellas
141+
(porque los CRDs que contengan validación CEL serán rechazados).
142+
143+
### Cambios en la versión de la API
144+
145+
En la versión de Gateway API v1.0, se graduarán los recursos Gateway,
146+
GatewayClass y HTTPRoute a la versión de API v1 desde v1beta1. Como
147+
preparación, seguimos actualizando las versiones de los recursos que se han
148+
graduado desde la versión v1alpha1 a v1beta1. Para más información, consulta
149+
[las notas de lanzamiento de la versión v0.8.0][v0.8.0 release notes].
150+
151+
## Cómo empezar con Gateway API
152+
153+
Gateway API representa el futuro de las APIs de load balancing, enrutamiento
154+
y service mesh en Kubernetes. Ya hay mas que 20 [implementaciones][impl]
155+
disponibles (incluidos controlodores de ingress y service meshes) y este
156+
número siempre está creciendo.
157+
158+
Si tienes interés en Gateway API, te recomendamos empezar con [la
159+
documentación oficial sobre conceptos de la API][concepts]. Además, las
160+
[Guías][guides] cubren la instalación y configuración de Gateway API, y
161+
demuestran cómo usar Gateway API para lograr varios casos de uso comunes. Dado
162+
que esta API se basa en CRDs, puedes instalar la última versión en cualquier
163+
cluster de Kubernetes 1.23+.
164+
165+
Si tienes ganas de contribuir a Gateway API, ¡nos alegra saberlo! Por favor no
166+
tengas dudas en crear un nuevo issue en nuestro repositorio de GitHub o
167+
unirte a las discusiones. Además puedes consultar la página de la comunidad,
168+
que tiene enlaces a Slack e información sobre nuestras reuniones comunitarias
169+
cada dos semanas.
170+
171+
Gracias por tu continuo apoyo y comentarios sobre Gateway API. Estamos
172+
emocionados de ver cómo usas esta API en producción y esperamos escuchar
173+
sobre tus experiencias.
174+
175+
## Leer más
176+
177+
- [GEP-1324] proporciona una descripción general de los objetivos de GAMMA y
178+
algunas definiciones importantes. Leer este GEP vale la pena por su
179+
tratamiento del espacio del problema.
180+
- [GEP-1426] define cómo usar Gateway API recursos de enrutamiento (p.e.
181+
HTTPRoute) para manejar tráfico en una service mesh.
182+
- [GEP-1686] se basa en el trabajo del [GEP-1709] y define un perfil de
183+
conformidad para que una service mesh se declare conforme con Gateway API.
184+
185+
Aunque estos patrones están en [Experimental][status], están disponibles en el
186+
[canal `standard`][ch], porque la iniciativa GAMMA no ha necesito agregar
187+
nuevos recursos o campos hasta ahora.
188+
189+
[gamma]:https://gateway-api.sigs.k8s.io/concepts/gamma/
190+
[status]:https://gateway-api.sigs.k8s.io/geps/overview/#status
191+
[ch]:https://gateway-api.sigs.k8s.io/concepts/versioning/#release-channels-eg-experimental-standard
192+
[cel]:/docs/reference/using-api/cel/
193+
[crd]:/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/
194+
[concepts]:https://gateway-api.sigs.k8s.io/concepts/api-overview/
195+
[geps]:https://gateway-api.sigs.k8s.io/contributing/enhancement-requests/
196+
[guides]:https://gateway-api.sigs.k8s.io/guides/getting-started/
197+
[impl]:https://gateway-api.sigs.k8s.io/implementations/
198+
[install-crds]:https://gateway-api.sigs.k8s.io/guides/getting-started/#install-the-crds
199+
[issue]:https://github.com/kubernetes-sigs/gateway-api/issues/new/choose
200+
[disc]:https://github.com/kubernetes-sigs/gateway-api/discussions
201+
[community]:https://gateway-api.sigs.k8s.io/contributing/community/
202+
[mesh-routing]:https://gateway-api.sigs.k8s.io/concepts/gamma/#how-the-gateway-api-works-for-service-mesh
203+
[GEP-1426]:https://gateway-api.sigs.k8s.io/geps/gep-1426/
204+
[GEP-1324]:https://gateway-api.sigs.k8s.io/geps/gep-1324/
205+
[GEP-1686]:https://gateway-api.sigs.k8s.io/geps/gep-1686/
206+
[GEP-1709]:https://gateway-api.sigs.k8s.io/geps/gep-1709/
207+
[issue 2277]:https://github.com/kubernetes-sigs/gateway-api/issues/2277
208+
[supported-versions]:https://gateway-api.sigs.k8s.io/concepts/versioning/#supported-versions
209+
[v0.8.0 release notes]:https://github.com/kubernetes-sigs/gateway-api/releases/tag/v0.8.0
210+
[versioning docs]:https://gateway-api.sigs.k8s.io/concepts/versioning/
211+
[english]:/blog/2023/08/29/gateway-api-v0-8/

0 commit comments

Comments
 (0)