{"id":54208,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/seriya-postov-po-istio-service-mesh"},"modified":"2020-02-18T14:02:12","modified_gmt":"2020-02-18T11:02:12","slug":"seriya-postov-po-istio-service-mesh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","title":{"rendered":"Serie de publicaciones sobre Istio Service Mesh","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Comenzamos una serie de publicaciones en la que demostraremos algunas de las muchas capacidades de la malla de servicios Istio Service Mesh en combinaci\u00f3n con Red Hat OpenShift y Kubernetes.<\/p>\n<p><img decoding=\"async\" alt=\"Serie de publicaciones sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/b7cc06e1451763db78fdf84764af4b69.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nParte uno, la de hoy: <\/p>\n<ul>\n<li>Explicaremos el concepto de contenedores sidecar en Kubernetes y formularemos el tema central de esta serie de publicaciones: <b>\u00abno necesita cambiar nada en su c\u00f3digo\u00bb<\/b>.<\/li>\n<li>Presentamos la caracter\u00edstica fundamental de Istio: las reglas de enrutamiento. Todas las dem\u00e1s capacidades de Istio se basan en estas reglas, ya que permiten dirigir el tr\u00e1fico hacia los microservicios utilizando archivos YAML externos al c\u00f3digo de los servicios. Tambi\u00e9n abordamos el despliegue Canary Deployment. Bonus de A\u00f1o Nuevo: 10 sesiones interactivas sobre Istio.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nParte dos, que saldr\u00e1 pronto, le contar\u00e1: <\/p>\n<ul>\n<li>C\u00f3mo Istio implementa la Eyecci\u00f3n de Pool en combinaci\u00f3n con el Circuit Breaker y demostrar\u00e1 c\u00f3mo Istio permite eliminar de la estrategia de balanceo un pod que no est\u00e1 funcionando o que funciona mal.<\/li>\n<li>Adem\u00e1s, abordaremos el tema del Circuit Breaker del primer post en relaci\u00f3n a c\u00f3mo aqu\u00ed se puede utilizar Istio. Mostraremos c\u00f3mo, sin ning\u00fan cambio en el c\u00f3digo de los servicios, dirigir el tr\u00e1fico y manejar errores de red utilizando archivos de configuraci\u00f3n YAML y comandos de terminal.<\/li>\n<\/ul>\n<p>\nParte tres: <\/p>\n<ul>\n<li>Narraci\u00f3n sobre el trazado y monitoreo que ya est\u00e1n integrados o se pueden a\u00f1adir f\u00e1cilmente a Istio. Mostraremos c\u00f3mo utilizar herramientas como Prometheus, Jaeger y Grafana en combinaci\u00f3n con la escalabilidad de OpenShift para gestionar sin esfuerzo la arquitectura de microservicios.<\/li>\n<li>Pasamos del monitoreo y manejo de errores a introducirlos deliberadamente en el sistema. En otras palabras, aprendemos a realizar fault injection sin modificar el c\u00f3digo fuente, lo cual es muy importante desde el punto de vista de las pruebas, ya que si modificamos el c\u00f3digo para esto, existe el riesgo de introducir errores adicionales.<\/li>\n<\/ul>\n<p>\nFinalmente, en el post final sobre Istio Service Mesh:<\/p>\n<ul>\n<li>Pasaremos al Lado Oscuro. M\u00e1s precisamente, aprenderemos a utilizar el esquema Dark Launch, cuando el c\u00f3digo se implementa y prueba directamente en datos de producci\u00f3n, pero no afecta el funcionamiento del sistema. Aqu\u00ed es muy \u00fatil la habilidad de Istio para dividir el tr\u00e1fico. La capacidad de realizar pruebas en datos de producci\u00f3n en vivo, sin afectar el funcionamiento del sistema en producci\u00f3n, es la forma m\u00e1s convincente de verificaci\u00f3n.<\/li>\n<li>Bas\u00e1ndonos en el Dark Launch, mostraremos c\u00f3mo utilizar el modelo de Canary Deployment para reducir riesgos y simplificar la implementaci\u00f3n de nuevo c\u00f3digo. El Canary Deployment no es en s\u00ed mismo una novedad, pero Istio permite implementar este esquema simplemente utilizando archivos YAML sencillos.<\/li>\n<li>En conclusi\u00f3n, mostraremos c\u00f3mo, a trav\u00e9s de Istio Egress, dar acceso a servicios a aquellos que se encuentran fuera de sus cl\u00fasteres, para aprovechar las capacidades de Istio al trabajar con Internet.<\/li>\n<\/ul>\n<p>\nAs\u00ed que, \u00a1empecemos\u2026!<\/p>\n<p><b>La herramienta de monitoreo y gesti\u00f3n de Istio: todo lo necesario para coordinar microservicios en una malla de servicios. <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">malla de servicios<\/a><\/noindex>.<\/b><\/p>\n<h3>\u00bfQu\u00e9 es la malla de servicios Istio?<\/h3>\n<p>\nLa malla de servicios ofrece a un grupo de servicios funciones como monitoreo de tr\u00e1fico, control de accesos, descubrimiento, seguridad, tolerancia a fallos y otras caracter\u00edsticas \u00fatiles. Istio permite lograr todo esto sin necesidad de realizar cambios en el c\u00f3digo de los propios servicios. \u00bfCu\u00e1l es el secreto de la magia? Istio adosa a cada servicio su propio proxy en forma de contenedor sidecar, despu\u00e9s de lo cual todo el tr\u00e1fico hacia este servicio pasa por el proxy, que, bas\u00e1ndose en las pol\u00edticas establecidas, decide c\u00f3mo, cu\u00e1ndo y si este tr\u00e1fico debe llegar al servicio. Istio tambi\u00e9n permite implementar t\u00e9cnicas avanzadas de DevOps, como canary deployments, circuit breakers, fault injection y muchas m\u00e1s.<\/p>\n<h3>C\u00f3mo funciona Istio con contenedores y Kubernetes.<\/h3>\n<p>\nLa malla de servicios Istio es una implementaci\u00f3n sidecar de todo lo necesario para crear y gestionar microservicios: monitoreo, trazado, circuit breakers, enrutamiento, balanceo de carga, fault injection, reintentos, timeouts, mirroring, control de acceso, limitaci\u00f3n de velocidad y mucho m\u00e1s. Y aunque hoy en d\u00eda hay muchas bibliotecas para implementar estas funciones directamente en el c\u00f3digo, con Istio puedes obtener lo mismo sin modificar tu c\u00f3digo.<\/p>\n<p>Seg\u00fan el modelo sidecar, Istio se ejecuta en un contenedor de Linux, que se encuentra en el mismo <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>-pod que el servicio controlado e inyecta (inject) y extrae (extract) funcionalidad e informaci\u00f3n de acuerdo con la configuraci\u00f3n establecida. Hay que destacar que esta es tu propia configuraci\u00f3n, y vive fuera de tu c\u00f3digo. Por lo tanto, el c\u00f3digo se vuelve mucho m\u00e1s simple y corto.<\/p>\n<p>Lo que es a\u00fan m\u00e1s importante, la parte operativa de los microservicios no est\u00e1 relacionada con el c\u00f3digo mismo, lo que significa que su manejo puede ser tranquilamente delegado a especialistas de TI. De hecho, \u00bfpor qu\u00e9 deber\u00eda el desarrollador ser responsable de los circuit breakers y la inyecci\u00f3n de fallos? Respondedor \u2013 s\u00ed, pero \u00bfgestionarlos y crearlos? Si se elimina todo esto del c\u00f3digo, los programadores podr\u00e1n concentrarse completamente en la funcionalidad aplicada. Adem\u00e1s, el c\u00f3digo ser\u00e1 m\u00e1s corto y sencillo.<\/p>\n<h3>Malla de servicios<\/h3>\n<p>\nIstio, que implementa funciones de gesti\u00f3n de microservicios fuera de su c\u00f3digo, es el concepto de malla de servicios Service Mesh. En otras palabras, es un grupo coordinado de uno o m\u00e1s binarios que forman una red de funciones de red.<\/p>\n<h3>C\u00f3mo Istio trabaja con microservicios<\/h3>\n<p>\nAs\u00ed es como funcionan los contenedores sidecar junto con <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.org\/minishift\/\">Minishift<\/a><\/noindex> desde una perspectiva general: inicias una instancia de Minishift, creas un proyecto para Istio (llam\u00e9moslo \u00abistio-system\u00bb), instalas y pones en marcha todos los componentes relacionados con Istio. Luego, a medida que creas proyectos y pods, agregas informaci\u00f3n de configuraci\u00f3n a tus deployments, y tus pods comienzan a usar Istio. Simplificando, el diagrama se ve as\u00ed:<\/p>\n<p><img decoding=\"async\" alt=\"Serie de publicaciones sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/feb36ba35442307a8136c395ccae4fd2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Ahora puedes modificar la configuraci\u00f3n de Istio para, por ejemplo, organizar la inyecci\u00f3n de fallos, soporte <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/blog\/2017\/0.1-canary.html\">Despliegue Canary<\/a><\/noindex> u otras capacidades de Istio, y todo esto sin tocar el c\u00f3digo de las aplicaciones mismas. Supongamos que deseas redirigir todo el tr\u00e1fico web de los usuarios de tu mayor cliente (Foo Corporation) a una nueva versi\u00f3n del sitio web. Para ello, basta con crear una regla de enrutamiento de Istio que busque @foocorporation.com en el identificador de usuario y realice la redirecci\u00f3n correspondiente. Para todos los dem\u00e1s usuarios, nada cambiar\u00e1. Y t\u00fa, mientras tanto, podr\u00e1s probar con tranquilidad la nueva versi\u00f3n del sitio web. Y ten en cuenta que no es necesario involucrar a los desarrolladores para esto.<\/p>\n<h3>\u00bfY tendr\u00e1s que pagar mucho por eso?<\/h3>\n<p>\nEn absoluto. Istio funciona bastante r\u00e1pido, est\u00e1 escrito en <noindex><a rel=\"nofollow\" href=\"https:\/\/golang.org\/\">Go<\/a><\/noindex> y crea una sobrecarga muy peque\u00f1a. Adem\u00e1s, la posible p\u00e9rdida en el rendimiento en l\u00ednea se compensa con el aumento de la productividad de los desarrolladores. Al menos, en teor\u00eda: no olvides que el tiempo de los desarrolladores es costoso. En cuanto a los costos de software, Istio es una herramienta de c\u00f3digo abierto, por lo que se puede obtener y utilizar gratuitamente.<\/p>\n<h3>Apr\u00e9ndelo t\u00fa mismo<\/h3>\n<p>\nEl equipo de Red Hat Developer Experience ha desarrollado un curso pr\u00e1ctico profundo sobre <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">la gu\u00eda<\/a><\/noindex> Istio (en ingl\u00e9s). Funciona en Linux, MacOS y Windows, y el c\u00f3digo est\u00e1 disponible en versiones de Java y Node.js.<\/p>\n<h3>10 lecciones interactivas sobre Istio<\/h3>\n<p><\/p>\n<h4>Bloque 1 \u2013 Para principiantes<\/h4>\n<p>\n<b>Introducci\u00f3n a Istio<\/b><br \/>\n30 minutos <br \/>\nConocemos el Service Mesh, aprendemos a instalar Istio en un cl\u00faster de Kubernetes OpenShift.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/istio-introduction\/\">Comenzar<\/a><\/noindex> <\/p>\n<p><b>Despliegue de microservicios en Istio<\/b><br \/>\n30 minutos<br \/>\nUtilizamos Istio para desplegar tres microservicios con Spring Boot y Vert.x.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/deploy-microservices\/\">Comenzar<\/a><\/noindex> <\/p>\n<h4>Bloque 2 \u2013 Nivel intermedio <\/h4>\n<p>\n<b>Monitoreo y trazabilidad en Istio<\/b><br \/>\n60 minutos <br \/>\nEstudiamos las herramientas de monitoreo integradas de Istio, m\u00e9tricas configurables y OpenTracing a trav\u00e9s de Prometheus y Grafana.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/monitoring-tracing\/\">Comenzar<\/a><\/noindex> <\/p>\n<p><b>Enrutamiento simple en Istio<\/b><br \/>\n60 minutos <br \/>\nAprendemos a gestionar el enrutamiento en Istio con reglas simples.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/simple-route-rules\/\">Comenzar <\/a><\/noindex><\/p>\n<p><b>Reglas avanzadas de enrutamiento<\/b><br \/>\n60 minutos <br \/>\nConocemos el enrutamiento inteligente en Istio, la gesti\u00f3n de acceso, la equilibraci\u00f3n de carga y la limitaci\u00f3n de velocidad.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/advanced-routerules\/\">Comenzar<\/a><\/noindex> <\/p>\n<h4>Bloque 3 \u2013 Usuario avanzado<\/h4>\n<p>\n<b>Inyecci\u00f3n de fallos en Istio<\/b><br \/>\n60 minutos <br \/>\nEstudiamos escenarios de manejo de fallos en aplicaciones distribuidas, creando errores HTTP y latencias de red, y aprendemos a aplicar ingenier\u00eda del caos para restaurar el entorno.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/fault-injection\/\">Comenzar<\/a><\/noindex> <\/p>\n<p><b>Circuit Breaker en Istio<\/b><br \/>\n30 minutos <br \/>\nInstalamos Siege para pruebas de estr\u00e9s en sitios web y aprendemos a asegurar la resiliencia del backend mediante reintentos, el circuito de interrupci\u00f3n y la expulsi\u00f3n de grupos.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/circuit-breaker\/\">Comenzar<\/a><\/noindex> <\/p>\n<p><b>Egress y Istio<\/b><br \/>\n10 minutos <br \/>\nUsamos rutas Egress para crear reglas de interacci\u00f3n entre servicios internos y APIs y servicios externos.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/egress\/\">Comenzar<\/a><\/noindex> <\/p>\n<p><b>Istio y Kiali<\/b><br \/>\n15 minutos <br \/>\nAprendemos a usar Kiali para obtener una visi\u00f3n general de la malla de servicios y estudiar los flujos de solicitudes y datos.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/observe-kiali\/\">Comenzar<\/a><\/noindex> <\/p>\n<p>Mutual TLS en Istio<br \/>\n15 minutos <br \/>\nCreamos Istio Gateway y VirtualService, luego estudiamos en profundidad mutual TLS (mTLS) y sus configuraciones.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/mtls\/\">Comenzar<\/a><\/noindex> <\/p>\n<h4>Bloque 3.1 \u2013 Profundizaci\u00f3n: Istio Service Mesh para microservicios<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Serie de publicaciones sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a2bb62b0bbd46fa9b42be1ccbfddfa6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDe qu\u00e9 trata el libro:<\/p>\n<ul>\n<li>Qu\u00e9 es una malla de servicios (service mesh).<\/li>\n<li>El sistema Istio y su papel en la arquitectura de microservicios.<\/li>\n<li>Uso de Istio para resolver las siguientes tareas:\n<ul>\n<li>Resiliencia;<\/li>\n<li>Enrutamiento;<\/li>\n<li>Pruebas de caos;<\/li>\n<li>Seguridad;<\/li>\n<li>Recolecci\u00f3n de telemetr\u00eda mediante trazado, m\u00e9tricas y Grafana.<\/li>\n<\/ul>\n<p>\n <\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/books\/introducing-istio-service-mesh-microservices\/\">Descargar libro<\/a><\/noindex><\/p>\n<h3>Serie de art\u00edculos sobre redes de servicios e Istio<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/13\/istio-route-rules-service-requests\/\">Reglas de enrutamiento de Istio: dirigimos las solicitudes de servicio donde se necesita<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/20\/istio-circuit-breaker-pool-ejection\/\">Circuit Breakers en Istio: manejando la expulsi\u00f3n del Pool<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/27\/istio-circuit-breaker-when-failure-is-an-option\/\">Circuit Breaker en Istio: cuando la falla es una opci\u00f3n<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/03\/istio-tracing-monitoring\/\">Trazado y monitoreo en Istio: hacia d\u00f3nde se dirige todo y qu\u00e9 tan r\u00e1pido<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/10\/istio-chaos-engineering\/\">Ingenier\u00eda de caos en Istio: as\u00ed fue dise\u00f1ado.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/17\/istio-dark-launch-secret-services\/\">Lanzamiento Oscuro en Istio: servicios secretos<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/24\/istio-smart-canary-launch\/\">Despliegue Canary en Istio: facilitando la incorporaci\u00f3n<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/05\/01\/istio-egress-exit-through-the-gift-shop\/\">Istio Egress: salida a trav\u00e9s de la tienda de souvenirs<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Int\u00e9ntalo t\u00fa mismo<\/h3>\n<p>\nEsta serie de publicaciones no tiene como objetivo proporcionar una profunda inmersi\u00f3n en el mundo de Istio. Simplemente queremos familiarizarlo con el concepto mismo y, tal vez, inspirarlo a probar Istio por s\u00ed mismo. Esto se puede hacer completamente gratis, y Red Hat proporciona todas las herramientas necesarias para comenzar a dominar OpenShift, Kubernetes, contenedores Linux e Istio, a saber: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.com\/products\/container-platform\/trial\/\">Red Hat Developer OpenShift Container Platform<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">nuestra gu\u00eda sobre Istio<\/a><\/noindex> y otros recursos en nuestro <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">micrositio sobre Service Mesh<\/a><\/noindex>. \u00a1No lo posponga, comience hoy mismo!<\/p>\n<h3>Reglas de enrutamiento de Istio: dirigimos las solicitudes de servicio donde se necesita<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/products\/openshift\/overview\/\">OpenShift<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> se ocupan perfectamente de que las solicitudes a <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">microservicios<\/a><\/noindex> se enruten a los pod correctos. Este es uno de los objetivos de Kubernetes: enrutamiento y balanceo de carga. \u00bfY si necesita un enrutamiento m\u00e1s fino y sofisticado? Por ejemplo, para utilizar simult\u00e1neamente dos versiones de un microservicio. \u00bfC\u00f3mo ayudar\u00e1n las reglas de enrutamiento de Istio en esto?<\/p>\n<p>Las reglas de enrutamiento son las reglas que, en esencia, definen la elecci\u00f3n de la ruta. A cualquier nivel de complejidad del sistema, el principio general de operaci\u00f3n de estas reglas sigue siendo sencillo: las solicitudes se enrutadas en funci\u00f3n de par\u00e1metros determinados y valores de encabezados HTTP. <br \/>\nVeamos algunos ejemplos: <\/p>\n<h3>Kubernetes por defecto: trivial \"50 a 50\"<\/h3>\n<p>\nEn nuestro ejemplo, mostraremos c\u00f3mo usar simult\u00e1neamente en OpenShift dos versiones de un microservicio, llam\u00e9moslas v1 y v2. Cada versi\u00f3n se ejecuta en su propio pod de Kubernetes, y por defecto aqu\u00ed se aplica un enrutamiento c\u00edclico equilibrado (evenly balanced round robin routing). Cada pod recibe su parte de solicitudes seg\u00fan la cantidad de instancias de su microservicio, en otras palabras, r\u00e9plicas. Istio permite cambiar este equilibrio manualmente.<\/p>\n<p>Supongamos que hemos desplegado en OpenShift dos versiones de nuestro servicio de recomendaciones, recommendation-v1 y recommendation-v2.<br \/>\nEn la figura 1 se puede ver que, cuando cada servicio se presenta en una sola instancia, las solicitudes se alternan uniformemente entre ellas: 1-2-1-2-\u2026 As\u00ed es como funciona el enrutamiento de Kubernetes por defecto:<\/p>\n<p><img decoding=\"async\" alt=\"Serie de publicaciones sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/93b00e4845ba930ca4d718b59629377e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Distribuci\u00f3n ponderada entre versiones<\/h3>\n<p>\nEn la figura 2 se muestra lo que suceder\u00e1 si aumentamos el n\u00famero de r\u00e9plicas del servicio v2 de una a dos (esto se realiza con el comando oc scale \u2014replicas=2 deployment\/recommendation-v2). Como podemos ver, las solicitudes entre v1 y v2 ahora se distribuyen en una proporci\u00f3n de \"uno a tres\": 1-2-2-1-2-2-\u2026:<\/p>\n<p><img decoding=\"async\" alt=\"Serie de publicaciones sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/a432b1cea0e297c99b041137d33fc107.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Ignorar versi\u00f3n con Istio<\/h3>\n<p>\nIstio permite cambiar f\u00e1cilmente la distribuci\u00f3n de las solicitudes de la manera que necesitamos. Por ejemplo, enviar todo el tr\u00e1fico solo a recommendation-v1 usando el siguiente archivo yaml de Istio:<\/p>\n<p><img decoding=\"async\" alt=\"Serie de publicaciones sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/db4190d495fb6dcc7c50cb8d28a7ef58.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Aqu\u00ed hay que prestar atenci\u00f3n a lo siguiente: los pods se seleccionan seg\u00fan las etiquetas. En nuestro ejemplo se utiliza la etiqueta v1. El par\u00e1metro \"weight: 100\" significa que el 100% del tr\u00e1fico se enrutar\u00e1n a todos los pods del servicio que tengan la etiqueta v1.<\/p>\n<h3>Distribuci\u00f3n directiva entre versiones (Canary Deployment)<\/h3>\n<p>\nA continuaci\u00f3n, utilizando el par\u00e1metro weight, se puede dirigir el tr\u00e1fico a ambos pods, ignorando el n\u00famero de instancias de microservicios que se ejecutan en cada uno de ellos. Por ejemplo, aqu\u00ed estamos dirigiendo de forma directiva el 90% del tr\u00e1fico a v1 y el 10% a v2:<\/p>\n<p><img decoding=\"async\" alt=\"Serie de publicaciones sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a28e76ea7d8306fbefecefaad34c931.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Enrutamiento separado para usuarios m\u00f3viles<\/h3>\n<p>\nFinalmente, mostraremos c\u00f3mo dirigir forzosamente el tr\u00e1fico de los usuarios m\u00f3viles al servicio v2, mientras que a todos los dem\u00e1s se les env\u00eda a v1. Para ello, analizamos el valor del user-agent en el encabezado de la solicitud mediante expresiones regulares:<\/p>\n<p><img decoding=\"async\" alt=\"Serie de publicaciones sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/efab7f92a1bcfc7e23ae279de57c738e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Ahora es tu turno<\/h3>\n<p>\nEl ejemplo con expresiones regulares para el an\u00e1lisis de encabezados deber\u00eda motivarte a buscar tus propias variantes de aplicaci\u00f3n de las reglas de enrutamiento de Istio. Sobre todo porque aqu\u00ed se abren muchas posibilidades, ya que los valores de los encabezados se pueden formar en el c\u00f3digo fuente de las aplicaciones.<\/p>\n<h3>Y recuerda, Ops, no Dev<\/h3>\n<p>\nTodo lo que hemos mostrado en los ejemplos anteriores se hace sin el m\u00e1s m\u00ednimo cambio en el c\u00f3digo fuente, salvo en aquellos casos en los que es necesario formar encabezados de solicitudes especiales. Istio ser\u00e1 \u00fatil tanto para los desarrolladores, que podr\u00e1n aplicarlo en la fase de prueba, como para los especialistas en operaciones de sistemas IT, que les ayudar\u00e1 mucho en producci\u00f3n.<\/p>\n<p>As\u00ed que repitamos el leitmotiv de esta serie de publicaciones: <b>no necesitas cambiar nada en tu c\u00f3digo<\/b>No es necesario crear nuevas im\u00e1genes o lanzar nuevos contenedores. Todo esto se implementa fuera del c\u00f3digo.<\/p>\n<h3>Activa tu imaginaci\u00f3n<\/h3>\n<p>\nSolo imagina las perspectivas que ofrece el an\u00e1lisis de encabezados utilizando expresiones regulares. \u00bfQuieres redirigir a tu mayor cliente a una versi\u00f3n especial de tu <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">microservicios<\/a><\/noindex>? \u041b\u0435\u0433\u043a\u043e! \u041d\u0443\u0436\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 Chrome? \u041d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430! \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e \u043b\u044e\u0431\u043e\u0439 \u0435\u0433\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0435.<\/p>\n<h3>Int\u00e9ntalo t\u00fa mismo<\/h3>\n<p>\nLeer sobre Istio, Kubernetes y OpenShift es una cosa, pero \u00bfpor qu\u00e9 no probarlo todo con tus propias manos? El equipo <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/\">Red Hat Developer Program<\/a><\/noindex> ha preparado una gu\u00eda detallada (en ingl\u00e9s) que te ayudar\u00e1 a dominar estas tecnolog\u00edas lo m\u00e1s r\u00e1pido posible. La gu\u00eda tambi\u00e9n es 100% de c\u00f3digo abierto, por lo que est\u00e1 disponible p\u00fablicamente. El archivo funciona en macOS, Linux y Windows, y el c\u00f3digo fuente est\u00e1 disponible en versiones de Java y node.js (pr\u00f3ximamente habr\u00e1 versiones en otros lenguajes). Solo tienes que abrir el repositorio de git correspondiente en tu navegador. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">Red Hat Developer Demo<\/a><\/noindex>.<\/p>\n<h3>En la pr\u00f3xima publicaci\u00f3n: resolvemos problemas con estilo<\/h3>\n<p>\nHoy has visto de lo que son capaces las reglas de enrutamiento de Istio. Ahora imagina todo lo mismo, pero aplic\u00e1ndolo al manejo de errores. De esto hablaremos en la pr\u00f3xima publicaci\u00f3n.<br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/481182\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes. \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f, \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044f\u044f: \u041e\u0431\u044a\u044f\u0441\u043d\u0438\u043c \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e sidecar-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Kubernetes \u0438 \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u043b\u0435\u0439\u0442\u043c\u043e\u0442\u0438\u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e\u0441\u0442\u043e\u0432: \u00ab\u0432\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u0434\u0435\u00bb. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043e\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0443\u044e \u0432\u0435\u0449\u044c Istio \u2013 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u041d\u0430 \u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54208","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0435\u0440\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e Istio Service Mesh | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:12+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Serie de publicaciones sobre Istio Service Mesh | ProHoster","description":"Comenzamos una serie de publicaciones en la que demostraremos algunas de las muchas capacidades de la malla de servicios Istio Service Mesh en combinaci\u00f3n con Red Hat OpenShift y Kubernetes.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0435\u0440\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e Istio Service Mesh | ProHoster","og:description":"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:12+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54208","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:27:27","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:32","updated":"2026-01-24 10:27:27","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/54208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=54208"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/54208\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=54208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=54208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=54208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}