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