Gateway API 0.8.0... en español.
Signed-off-by: Flynn <flynn@buoyant.io>
This commit is contained in:
parent
0f778d3b32
commit
c98ad0b8e4
|
|
@ -0,0 +1,209 @@
|
|||
---
|
||||
layout: blog
|
||||
title: "Gateway API v0.8.0: Introducing Service Mesh Support"
|
||||
date: 2023-08-29T10:00:00-08:00
|
||||
slug: gateway-api-v0-8
|
||||
---
|
||||
|
||||
***Autores:*** Flynn (Buoyant), John Howard (Google), Keith Mattix
|
||||
(Microsoft), Michael Beaumont (Kong), Mike Morris (independent), Rob Scott
|
||||
(Google). Traducción desde [el inglés][english] (y errores relacionados) por
|
||||
Flynn.
|
||||
|
||||
_¡Mil gracias a María Teresa Rojas y Dani Baeyens por su inestimable ayuda revisando este post!_
|
||||
|
||||
Es un gran placer anunciar la versión v0.8.0 de Gateway API. Con esta versión,
|
||||
el soporte para service mesh en Gateway API ha alcanzado el [estado
|
||||
Experimental][status]. ¡Esperamos tus comentarios en la nueva versión!
|
||||
|
||||
Además, nos alegra anunciar que Kuma 2.3+, Linkerd 2.14+, e Istio 1.16+
|
||||
cumplen completamente con el soporte de service mesh de Gateway API.
|
||||
|
||||
## Soporte para service mesh en Gateway API
|
||||
|
||||
Aunque el foco inicial de Gateway API siempre fue el tráfico de entrada al
|
||||
cluster (north-south), estaba claro casi desde el principio que los mismos
|
||||
conceptos básicos de enrutamiento también deberían aplicarse al tráfico de
|
||||
service mesh (east-west). En 2022, el subproyecto Gateway API lanzó [la
|
||||
iniciativa GAMMA][gamma], un flujo de trabajo independiente de proveedores,
|
||||
para examinar la manera mejor de adaptar el soporte de service mesh al marco
|
||||
de los recursos de Gateway API, sin necesitar que que los usuarios de Gateway
|
||||
API tuvieran que aprender de nuevo todo lo que sepan sobre la API.
|
||||
|
||||
Durante el último año, GAMMA ha investigado con cuidado los desafíos y
|
||||
posibles soluciones para usar la Gateway API para service mesh. El resultado
|
||||
final es unos pocos de [propuestas de mejora][geps] que reflejan muchas horas
|
||||
de reflexión y debate, y proporcionan un camino viable, con cambios mínimos,
|
||||
para permitir que Gateway API soporte la service mesh.
|
||||
|
||||
### ¿Cómo funcionará el enrutamiento de mesh con la Gateway API?
|
||||
|
||||
Todos los detalles se puede encontrar en [la documentación de la mesh de
|
||||
Gateway API][mesh-routing] y [GEP-1426], pero en resumen: en Gateway API
|
||||
v0.8.0, un HTTPRoute puede tener un `parentRef` que es un Service, no solo un
|
||||
Gateway. Anticipamos GEPs futuros en este área a medida que adquirimos más
|
||||
experiencia con los casos de uso de service mesh: la capacidad de asociar un
|
||||
HTTPRoute con un Service permite usar Gateway API para una service mesh, pero
|
||||
hay múltiples casos de uso interesantes que permanecen difíciles de manejar.
|
||||
|
||||
Un ejemplo: podrías usar un HTTPRoute para hacer una prueba A-B con la service mesh así:
|
||||
|
||||
```yaml
|
||||
apiVersion: gateway.networking.k8s.io/v1beta1
|
||||
kind: HTTPRoute
|
||||
metadata:
|
||||
name: bar-route
|
||||
spec:
|
||||
parentRefs:
|
||||
- group: ""
|
||||
kind: Service
|
||||
name: demo-app
|
||||
port: 5000
|
||||
rules:
|
||||
- matches:
|
||||
- headers:
|
||||
- type: Exact
|
||||
name: env
|
||||
value: v1
|
||||
backendRefs:
|
||||
- name: demo-app-v1
|
||||
port: 5000
|
||||
- backendRefs:
|
||||
- name: demo-app-v2
|
||||
port: 5000
|
||||
```
|
||||
|
||||
Cualquier solicitud al puerto 5000 del Service `demo-app` que tenga la
|
||||
cabecera `env: v1` se dirigirá a `demo-app-v1`, y los que no la tengan se
|
||||
dirigirá a `demo-app-v2`. Dado que esta decisión está tomando por la service
|
||||
mesh en vez del controlador de ingress, la prueba A-B se puede realizar en
|
||||
cualquier nivel del gráfico de llamadas de la aplicación.
|
||||
|
||||
## ¿Cómo se puede confiar que este soporte será verdaderamente portátil?
|
||||
|
||||
Gateway API ha invertido mucho esfuerzo en pruebas de conformidad en todas las
|
||||
funciones que soporta, y las de la service mesh no son excepciones. Uno de los
|
||||
desafíos que enfrentó la iniciativa GAMMA fue que muchas de estas pruebas
|
||||
siempre han requerido que la implementación proporcionara un controlador de
|
||||
ingress. Muchas service meshes no hacen así, y requerir que una mesh
|
||||
implemente un controlador de ingress para cumplir con GAMMA no parece
|
||||
práctico, cuando menos. Por lo tanto, hemos reiniciado el trabajo en _perfiles
|
||||
de conformidad_ de Gateway API, como se describe en [GEP-1709].
|
||||
|
||||
Con perfiles de conformidad, podemos definir subconjuntos de la funcionalidad
|
||||
de Gateway API, y permitir que las implementaciones elijan (y documenten) a
|
||||
qué subconjuntos se ajustan. GAMMA agrega un nuevo perfil `Mesh`, descrito en
|
||||
[GEP-1686], que sólo verifica la funcionalidad de service mesh definida por
|
||||
GAMMA. Ahora mismo, Kuma 2.3+, Linkerd 2.14+ e Istio 1.16+ están completamente
|
||||
conformes con el perfil `Mesh`.
|
||||
|
||||
## ¿Qué más hay en Gateway API v0.8.0?
|
||||
|
||||
Versión v0.8.0 se trata principalmente de preparar Gateway API para versión
|
||||
v.1.0, en la que planeamos que HTTPRoute, Gateway, y GatewayClass se graduarán
|
||||
a GA. Hay dos cambios principales relacionados con esta preparación:
|
||||
validación CEL y cambios en la versión de la API.
|
||||
|
||||
### Validación CEL
|
||||
|
||||
Gateway API v0.8.0 comienza la transición desde validación de webhook a
|
||||
[validación CEL][cel], usando información incluida en los CRDs. Esta
|
||||
transición significa diferentes cosas dependiendo de la versión de Kubernetes
|
||||
que se use:
|
||||
|
||||
#### Kubernetes 1.25+
|
||||
|
||||
La validación CEL está completamente soportada, y casi toda la validación de
|
||||
Gateway API está implementada en CEL. (La única excepción es que, en los
|
||||
filtros de modificación de cabeceras, CEL solo puede validar los nombres de
|
||||
las cabeceras sin distinguir entre mayúsculas y minúsculas. Hay más
|
||||
información en [#2277][issue 2277].)
|
||||
|
||||
Recomendamos que _no_ uses el webhook de validación en estas versiones de
|
||||
Kubernetes.
|
||||
|
||||
#### Kubernetes 1.23 y 1.24
|
||||
|
||||
La validación CEL no está soportada, pero aún se puede instalar los CRDs de
|
||||
Gateway API v0.8.0. Cuando actualices a Kubernetes 1.25+, la validación CEL
|
||||
incluida en los CRDs se activará automáticamente.
|
||||
|
||||
Recomendamos que sigas usando el webhook de validación en estas versiones de
|
||||
Kubernetes.
|
||||
|
||||
#### Kubernetes 1.22 y versiones anteriores
|
||||
|
||||
Gateway API solo se compromete a admitir las [cinco versiones más recientes de
|
||||
Kubernetes][supported-versions]. Por lo tanto, estas versiones ya no están
|
||||
soportados por Gateway API, y la versión v0.8.0 no se puede instalar en ellas
|
||||
(porque los CRDs que contengan validación CEL serán rechazados).
|
||||
|
||||
### Cambios en la versión de la API
|
||||
|
||||
En la versión de Gateway API v1.0, se graduarán los recursos Gateway,
|
||||
GatewayClass, y HTTPRoute a la versión de API v1 desde v1beta1. Como
|
||||
preparación, seguimos actualizando las versiones de los recursos que han
|
||||
graduado desde la versión v1alpha1 a v1beta1. Para más información, consulta a
|
||||
[las notas de lanzamiento a la versión v0.8.0][v0.8.0 release notes].
|
||||
|
||||
## Cómo empezar con la Gateway API
|
||||
|
||||
Gateway API representa el futuro de las APIs de load balancing, enrutamiento,
|
||||
y service mesh en Kubernetes. Ya hay mas que 20 [implementaciones][impl]
|
||||
disponibles (incluidos controlodoras de ingress y service meshes) y este
|
||||
número siempre está creciendo.
|
||||
|
||||
Si tienes interés en Gateway API, te recomendamos empezar con [la
|
||||
documentación oficial sobre conceptos de la API][concepts]. Además, las
|
||||
[Guides][guides] cubren la instalación y configuración de Gateway API, y
|
||||
demuestran cómo usar Gateway API para lograr varios casos de uso comunes. Dado
|
||||
que esta API se basa en CRDs, puedes instalar la última versión en cualquier
|
||||
cluster de Kubernetes 1.23+.
|
||||
|
||||
Si tienes ganas de contribuir a Gateway API, ¡nos alegra saberlo! Por favor no
|
||||
tengas dudas en crear una nueva issue en nuestro repositorio de GitHub, o
|
||||
unirte en las discusiones. Además puedes consultar la página de la comunidad,
|
||||
que tiene enlaces a Slack e información sobre nuestros reuniones comunitarias
|
||||
cada dos semanas.
|
||||
|
||||
Gracias por tu continuo apoyo y comentarios sobre Gateway API. Estamos
|
||||
emocionados de ver cómo usas esta API en producción, y esperamos escuchar
|
||||
sobre tus experiencias.
|
||||
|
||||
## Leer más
|
||||
|
||||
- [GEP-1324] proporciona una descripción general de los objetivos de GAMMA y
|
||||
algunas definiciones importantes. Leer este GEP vale la pena por su
|
||||
tratamiento del espacio del problema.
|
||||
- [GEP-1426] define cómo usar Gateway API recursos de enrutamiento (p.e.
|
||||
HTTPRoute) para manejar tráfico en una service mesh.
|
||||
- [GEP-1686] se basa en el trabajo del [GEP-1709] y define un perfil de
|
||||
conformidad para que una service mesh se declare conforme con Gateway API.
|
||||
|
||||
Aunque estes patrones están [Experimental][status], están disponibles en el
|
||||
[canal `standard`][ch], porque la iniciativa GAMMA no ha necesito agregar
|
||||
neuvos recursos o campos hasta ahora.
|
||||
|
||||
[gamma]:https://gateway-api.sigs.k8s.io/concepts/gamma/
|
||||
[status]:https://gateway-api.sigs.k8s.io/geps/overview/#status
|
||||
[ch]:https://gateway-api.sigs.k8s.io/concepts/versioning/#release-channels-eg-experimental-standard
|
||||
[cel]:/docs/reference/using-api/cel/
|
||||
[crd]:/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/
|
||||
[concepts]:https://gateway-api.sigs.k8s.io/concepts/api-overview/
|
||||
[geps]:https://gateway-api.sigs.k8s.io/contributing/enhancement-requests/
|
||||
[guides]:https://gateway-api.sigs.k8s.io/guides/getting-started/
|
||||
[impl]:https://gateway-api.sigs.k8s.io/implementations/
|
||||
[install-crds]:https://gateway-api.sigs.k8s.io/guides/getting-started/#install-the-crds
|
||||
[issue]:https://github.com/kubernetes-sigs/gateway-api/issues/new/choose
|
||||
[disc]:https://github.com/kubernetes-sigs/gateway-api/discussions
|
||||
[community]:https://gateway-api.sigs.k8s.io/contributing/community/
|
||||
[mesh-routing]:https://gateway-api.sigs.k8s.io/concepts/gamma/#how-the-gateway-api-works-for-service-mesh
|
||||
[GEP-1426]:https://gateway-api.sigs.k8s.io/geps/gep-1426/
|
||||
[GEP-1324]:https://gateway-api.sigs.k8s.io/geps/gep-1324/
|
||||
[GEP-1686]:https://gateway-api.sigs.k8s.io/geps/gep-1686/
|
||||
[GEP-1709]:https://gateway-api.sigs.k8s.io/geps/gep-1709/
|
||||
[issue 2277]:https://github.com/kubernetes-sigs/gateway-api/issues/2277
|
||||
[supported-versions]:https://gateway-api.sigs.k8s.io/concepts/versioning/#supported-versions
|
||||
[v0.8.0 release notes]:https://github.com/kubernetes-sigs/gateway-api/releases/tag/v0.8.0
|
||||
[versioning docs]:https://gateway-api.sigs.k8s.io/concepts/versioning/
|
||||
[english]:/blog/2023/08/29/gateway-api-v0-8/
|
||||
Loading…
Reference in New Issue