Unha serie de publicacións en Istio Service Mesh

Comezamos unha serie de publicacións que mostran algunhas das moitas capacidades de Istio Service Mesh cando se combina con Red Hat OpenShift e Kubernetes.

Unha serie de publicacións en Istio Service Mesh

Primeira parte, hoxe:

  • Expliquemos o concepto dos contedores sidecar de Kubernetes e formulemos o leitmotiv desta serie de publicacións: "non necesitas cambiar nada no teu código".
  • Imos presentar o fundamental de Istio: as regras de enrutamento. Todas as demais funcións de Istio están construídas sobre elas, xa que son as regras as que che permiten dirixir o tráfico aos microservizos, utilizando ficheiros YAML externos ao código do servizo. Tamén estamos considerando o esquema de implantación de Canary Deployment. Bonificación de ano novo: 10 leccións interactivas en Istio


A segunda parte, próximamente, contará:

  • Como Istio implementa Pool Ejection en combinación con Circuit Breaker e demostrará como Istio che permite eliminar un pod morto ou con mal rendemento do circuíto de equilibrio.
  • Tamén veremos o tema Circuit Breaker da primeira publicación para ver como se pode usar Istio aquí. Mostrarémosche como enrutar o tráfico e xestionar os erros de rede usando ficheiros de configuración YAML e comandos de terminal sen os máis mínimos cambios no código do servizo.

Terceira parte:

  • Unha historia sobre rastrexo e seguimento, que xa están incorporados ou facilmente engadidos a Istio. Mostrarémosche como usar ferramentas como Prometheus, Jaeger e Grafana en combinación co escalado de OpenShift para xestionar sen esforzo arquitecturas de microservizos.
  • Pasamos de supervisar e manexar os erros a introducilos no sistema de forma intencionada. Noutras palabras, aprendemos a facer a inxección de fallos sen cambiar o código fonte, o que é moi importante dende o punto de vista das probas, xa que se cambia o propio código para iso, existe o risco de introducir erros adicionais.

Finalmente, na publicación final sobre Istio Service Mesh:

  • Imos ao Lado Escuro. Máis precisamente, aprenderemos a utilizar o esquema Dark Launch, cando o código se desprega e se proba directamente nos datos de produción, pero non afecta de ningún xeito ao funcionamento do sistema. Aquí é onde a capacidade de Istio para dividir o tráfico resulta útil. E a capacidade de probar datos de produción en directo sen afectar de ningún xeito o funcionamento do sistema de combate é o método de verificación máis convincente.
  • A partir de Dark Launch, mostrarémosche como usar o modelo de implantación de Canary para reducir o risco e facilitar a posta en produción de código novo. A propia implantación de Canary está lonxe de ser nova, pero Istio permítelle implementar este esquema con só ficheiros YAML sinxelos.
  • Finalmente, mostrarémosche como usar Istio Egress para dar acceso aos servizos a aqueles que están fóra dos teus clústeres para poder utilizar as capacidades de Istio cando traballes con Internet.

Entón, aquí imos...

Ferramentas de supervisión e xestión de Istio: todo o que precisa para orquestrar microservizos nunha malla de servizos malla de servizo.

Que é Istio Service Mesh

Unha malla de servizos implementa funcións como a vixilancia do tráfico, o control de acceso, o descubrimento, a seguridade, a tolerancia a fallos e outras cousas útiles para un grupo de servizos. Istio permíteche facer todo isto sen os máis mínimos cambios no código dos propios servizos. Cal é o segredo da maxia? Istio atribúe o seu propio proxy a cada servizo en forma de contedor sidecar (sidecar é un sidecar de motocicleta), despois de que todo o tráfico a este servizo pasa polo proxy, que, guiado polas políticas especificadas, decide como, cando e se este tráfico. debería chegar ao servizo. Istio tamén permite implementar técnicas DevOps avanzadas como despregamentos canarios, interruptores automáticos, inxección de fallos e moitos outros.

Como funciona Istio con contedores e Kubernetes

A malla de servizo Istio é unha implementación sidecar de todo o necesario para crear e xestionar microservizos: vixilancia, rastrexo, disyuntores, enrutamento, balance de carga, inxección de fallos, reintentos, tempo de espera, espello, control de acceso, limitación de velocidade e moito máis. E aínda que hoxe hai un montón de bibliotecas para implementar estas funcións directamente no código, con Istio podes conseguir todas as mesmas cousas sen cambiar nada no teu código.

Segundo o modelo de sidecar, Istio funciona nun contenedor Linux, que está situado nun Kubernetes-pod cun servizo controlado e inxecta e extrae funcionalidades e información segundo unha configuración determinada. Destacamos que esta é a túa propia configuración e que vive fóra do teu código. Polo tanto, o código faise moito máis sinxelo e curto.

O que tamén é importante é que o compoñente operativo dos microservizos non está de ningún xeito conectado co propio código, o que significa que o seu funcionamento pode ser transferido de forma segura a especialistas en TI. De feito, por que o desarrollador debería ser responsable dos interruptores e da inxección de fallas? Reaccionar, si, pero procesalos e crealos? Se eliminas todo isto do código, os programadores poderán centrarse totalmente na funcionalidade da aplicación. E o propio código farase máis curto e sinxelo.

Malla de servizo

Istio, que implementa funcións para xestionar microservizos fóra do seu código, é o concepto de Service Mesh. Noutras palabras, é un grupo coordinado dun ou máis binarios que forman unha malla de funcións de rede.

Como funciona Istio cos microservizos

Así se ve o traballo dos contedores sidecar en conxunto Kubernetes и Mini cambio vista de paxaro: lanza unha instancia de Minishift, crea un proxecto para Istio (chamémoslle “istio-system”), instala e executa todos os compoñentes relacionados con Istio. Despois, mentres crea proxectos e pods, engade información de configuración ás súas implementacións e os pods comezan a usar Istio. Un diagrama simplificado ten o seguinte aspecto:

Unha serie de publicacións en Istio Service Mesh

Agora podes cambiar a configuración de Istio para, por exemplo, organizar a inxección de fallos, o soporte Despliegue Canario ou outras funcións de Istio, e todo isto sen tocar o código das propias aplicacións. Digamos que queres redirixir todo o tráfico web dos usuarios do teu cliente máis grande (Foo Corporation) a unha nova versión do sitio. Para iso, simplemente cree unha regra de enrutamento de Istio que buscará @foocorporation.com no ID de usuario e redireccionará en consecuencia. Para todos os demais usuarios, nada cambiará. Mentres tanto, probarás tranquilamente a nova versión do sitio. E teña en conta que non é necesario involucrar aos desenvolvedores para iso.

E terás que pagar caro por iso?

De ningunha maneira. Istio é bastante rápido e está escrito Go e crea moi pouca sobrecarga. Ademais, a posible perda de produtividade en liña vese compensada cun aumento da produtividade dos desenvolvedores. Polo menos en teoría: non esquezas que o tempo dos desenvolvedores é valioso. En canto aos custos do software, Istio é software de código aberto, polo que podes obtelo e usalo de balde.

Domina ti mesmo

O Red Hat Developer Experience Team desenvolveu unha práctica práctica en profundidade liderado por Istio (en inglés). Funciona en Linux, MacOS e Windows, e o código está dispoñible en Java e Node.js.

10 leccións interactivas sobre Istio

Bloque 1 - Para principiantes

Introdución a Istio
Minutos 30
Coñecemos Service Mesh e aprende a instalar Istio nun clúster de OpenShift Kubernetes.
Comeza

Implantación de microservizos en Istio
Minutos 30
Usamos Istio para implementar tres microservizos con Spring Boot e Vert.x.
Comeza

Bloque 2 – nivel intermedio

Seguimento e rastrexo en Istio
Minutos 60
Exploraremos as ferramentas de monitorización integradas de Istio, as métricas personalizadas e o OpenTracing a través de Prometheus e Grafana.
Comeza

Enrutamento sinxelo en Istio
Minutos 60
Aprende a xestionar o enrutamento en Istio usando regras sinxelas.
Comeza

Regras de enrutamento avanzadas
Minutos 60
Vexamos o enrutamento intelixente, o control de acceso, o equilibrio de carga e a limitación da taxa de Istio.
Comeza

Bloque 3: usuario avanzado

Fallo Inxección en Istio
Minutos 60
Estudamos escenarios de manexo de fallos en aplicacións distribuídas, creando erros HTTP e atrasos de rede, e aprendemos a utilizar a enxeñaría do caos para restaurar o ambiente.
Comeza

Interruptor en Istio
Minutos 30
Instalamos Siege para sitios de probas de tensión e aprendemos a garantir a tolerancia a fallos do back-end mediante repeticións, interruptor de circuito e expulsión da piscina.
Comeza

Saída e Istio
Minutos 10
Usamos rutas de saída para crear regras para a interacción dos servizos internos con API e servizos externos.
Comeza

Istio e Kiali
Minutos 15
Aprende a usar Kiali para obter unha visión xeral da malla de servizos e explorar os fluxos de solicitudes e datos.
Comeza

TLS mutuo en Istio
Minutos 15
Creamos Istio Gateway e VirtualService, despois estudamos o TLS mutuo (mTLS) e a súa configuración en detalle.
Comeza

Bloque 3.1 - Deep Dive: Istio Service Mesh para microservizos

Unha serie de publicacións en Istio Service Mesh
De que trata o libro:

  • Que é unha malla de servizo?
  • O sistema Istio e o seu papel na arquitectura de microservizos.
  • Usando Istio para resolver os seguintes problemas:
    • tolerancia a fallos;
    • Encamiñamento;
    • Probas de caos;
    • Seguridade;
    • Recollida de telemetría mediante trazos, métricas e Grafana.

Para descargar un libro

Serie de artigos sobre mallas de servizo e Istio

Proba vostede mesmo

Esta serie de publicacións non pretende proporcionar unha inmersión profunda no mundo de Istio. Só queremos presentarche o concepto e quizais inspirarte a probar Istio por ti mesmo. É totalmente gratuíto e Red Hat ofrece todas as ferramentas que precisa para comezar con OpenShift, Kubernetes, contenedores Linux e Istio, incluíndo: Red Hat Developer OpenShift Container Platform, a nosa guía de Istio e outros recursos sobre o noso micrositio en Service Mesh. Non te demores, comeza hoxe!

Regras de enrutamento de Istio: dirixir as solicitudes de servizo onde precisan ir

turno aberto и Kubernetes facer un excelente traballo de abordaxe microservizos encamiñadas ás vainas necesarias. Esta é unha das razóns da existencia de Kubernetes: enrutamento e equilibrio de carga. Pero e se necesitas un enrutamento máis sutil e sofisticado? Por exemplo, para usar simultaneamente dúas versións dun microservizo. Como pode axudar aquí as regras de ruta de Istio?

As regras de ruta son as que realmente determinan a elección da ruta. Independentemente do nivel de complexidade do sistema, o principio xeral de funcionamento destas regras segue a ser sinxelo: as solicitudes envíanse en función de determinados parámetros e valores de cabeceira HTTP.
Vexamos exemplos:

Predeterminado de Kubernetes: trivial "50/50"

No noso exemplo, mostraremos como usar simultaneamente dúas versións dun microservizo en OpenShift, chamémoslles v1 e v2. Cada versión execútase no seu propio pod de Kubernetes e, por defecto, executa un enrutamento round robin uniformemente equilibrado. Cada pod recibe a súa parte de solicitudes en función do número de instancias dos seus microservizos, é dicir, réplicas. Istio permítelle cambiar este saldo manualmente.

Digamos que implementamos dúas versións do noso servizo de recomendacións en OpenShift, recomendation-v1 e recommendation-v2.
Na Fig. A figura 1 mostra que cando cada servizo está representado nunha instancia, as solicitudes alternan de forma uniforme entre elas: 1-2-1-2-... Así funciona o enrutamento de Kubernetes por defecto:

Unha serie de publicacións en Istio Service Mesh

Distribución ponderada entre versións

Na Fig. A figura 2 mostra o que ocorre se aumenta o número de réplicas do servizo v2 dunha a dúas (isto faise co comando oc scale —replicas=2 deployment/recommendation-v2). Como podes ver, as solicitudes entre v1 e v2 agora están divididas nunha proporción de un a tres: 1-2-2-1-2-2-...:

Unha serie de publicacións en Istio Service Mesh

Ignorar a versión usando Istio

Istio facilita cambiar a distribución de solicitudes da forma que necesitemos. Por exemplo, envíe todo o tráfico só a recomendation-v1 usando o seguinte ficheiro Istio yaml:

Unha serie de publicacións en Istio Service Mesh

Aquí cómpre prestar atención a isto: as vainas son seleccionadas segundo as etiquetas. O noso exemplo usa a etiqueta v1. O parámetro "peso: 100" significa que o 100 % do tráfico dirixirase a todos os pods de servizo que teñan a etiqueta v1.

Distribución de directivas entre versións (Canary Deployment)

A continuación, usando o parámetro peso, pode dirixir o tráfico a ambos os pods, ignorando o número de instancias de microservizos que se executan en cada un deles. Por exemplo, aquí diriximos o 90 % do tráfico á v1 e o 10 % á v2:

Unha serie de publicacións en Istio Service Mesh

Enrutamento separado para usuarios móbiles

En conclusión, mostraremos como forzar que o tráfico de usuarios móbiles se encamine ao servizo v2 e todos os demais á v1. Para iso, usamos expresións regulares para analizar o valor do axente de usuario na cabeceira da solicitude:

Unha serie de publicacións en Istio Service Mesh

Agora é a túa quenda

O exemplo con expresións regulares para analizar cabeceiras debería motivarche a atopar os teus propios usos das regras de enrutamento de Istio. Ademais, as posibilidades aquí son bastante extensas, xa que os valores de cabeceira pódense formar no código fonte da aplicación.

E lembra que Ops, non Dev

Todo o que mostramos nos exemplos anteriores faise sen os máis mínimos cambios no código fonte, ben, agás aqueles casos nos que é necesario xerar cabeceiras especiais de solicitude. Istio será útil tanto para desenvolvedores, que, por exemplo, poderán usalo na fase de proba, como para especialistas na operación de sistemas informáticos, para os que axudará moito na produción.

Entón, imos repetir o fío condutor desta serie de publicacións: non necesitas cambiar nada no teu código. Non hai necesidade de construír novas imaxes nin lanzar novos contedores. Todo isto implícase fóra do código.

Usa a túa imaxinación

Basta imaxinar as posibilidades da análise da cabeceira usando expresións regulares. Queres redirixir o teu maior cliente a unha versión especial do teu microservizos? Doadamente! Necesitas unha versión separada para o navegador Chrome? Sen problema! Podes dirixir o tráfico segundo case calquera característica.

Proba vostede mesmo

Ler sobre Istio, Kubernetes e OpenShift é unha cousa, pero por que non tocar todo ti mesmo? Equipo Programa para desenvolvedores Red Hat preparou unha guía detallada (en inglés) que che axudará a dominar estas tecnoloxías o máis rápido posible. O manual tamén é 100% de código aberto, polo que está publicado no dominio público. O ficheiro funciona en macOS, Linux e Windows, e o código fonte está dispoñible nas versións de Java e node.js (próximamente haberá versións noutros idiomas). Só ten que abrir o repositorio git correspondente no seu navegador Demostración para desenvolvedores de Red Hat.

No seguinte post: resolvemos os problemas moi ben

Hoxe viches o que poden facer as regras de enrutamento de Istio. Agora imaxina o mesmo, pero só en relación co tratamento de erros. Isto é exactamente do que falaremos na próxima publicación.

Fonte: www.habr.com

Engadir un comentario