IBM Cloud Docs
Service Mesh on Red Hat OpenShift on IBM Cloud

Service Mesh on Red Hat OpenShift on IBM Cloud

Esta guía de aprendizaje puede incurrir en costes. Utilice Estimador de costes para generar una estimación del coste basada en el uso previsto.

Este tutorial explica cómo instalar Red Hat OpenShift Service Mesh junto con microservicios para una aplicación de ejemplo llamada BookInfo en un clúster Red Hat OpenShift on IBM Cloud. También aprenderá a configurar una pasarela de entrada de Istio para exponer un servicio fuera de la red de servicios, a gestionar el tráfico para configurar tareas importantes como las pruebas de tipo A/B y despliegues de prueba, a proteger la comunicación de microservicios y a utilizar las métricas, a registrar y a realizar el seguimiento para observar los servicios.

Basándose en el proyecto Istio de código abierto, Red Hat OpenShift Service Mesh añade una capa transparente en las aplicaciones distribuidas existentes. Red Hat OpenShift Service Mesh proporciona una plataforma para el conocimiento del comportamiento y el control operativo sobre los microservicios en red en una red de servicios. Con Red Hat OpenShift, puede conectar, proteger y supervisar microservicios en su clúster Red Hat OpenShift on IBM Cloud.

Istio es una plataforma abierta para conectar, asegurar, controlar y observar microservicios, también conocida como malla de servicios, en plataformas en la nube como Kubernetes en Red Hat OpenShift on IBM Cloud.

Objetivos

  • Instale Red Hat OpenShift Service Mesh en su clúster
  • Despliegue la app de ejemplo BookInfo
  • Utilice métricas, registro y rastreo para observar los servicios
  • Configure la pasarela de entrada de Istio
  • Realice la gestión de tráfico sencillo, como pruebas de tipo A/B y despliegues de prueba
  • Proteja la red mediante mTLS

de arquitectura*Diagrama de arquitectura del

  1. El administrador aprovisiona un clúster Red Hat OpenShift on IBM Cloud e instala el Operador de Malla de Servicios junto con otros Operadores de Telemetría.
  2. El administrador crea un espacio de nombres de istio-system (proyecto) y crea ServiceMeshControlPlane.
  3. El administrador crea un espacio de nombres de bookinfo con la inyección automática de complementos habilitada y despliega la app BookInfo (con cuatro microservicios independientes) en la red de servicios.
  4. El administrador expone la app para el tráfico externo con la pasarela de entrada de Istio.
  5. El usuario accede de forma segura (HTTPS) a la aplicación mediante el navegador.
  6. El administrador supervisa el estado y el rendimiento de los microservicios mediante métricas, rastreos y registros.

Antes de empezar

Esta guía de aprendizaje requiere:

  • CLI de IBM Cloud,
    • plugin de IBM Cloud Kubernetes Service (kubernetes-service),
  • oc para interactuar con OpenShift.

Encontrará instrucciones para descargar e instalar estas herramientas para su entorno operativo en la guía de Iniciación a las guías de aprendizaje.

Para evitar tener que instalar estas herramientas, también puede utilizar Cloud Shell desde la consola de IBM Cloud. Utilice oc version para asegurarse de que la versión de la CLI de Red Hat OpenShift on IBM Cloud coincide con la versión del clúster (4.13.x). Si no coinciden, instale la versión coincidente siguiendo estas instrucciones.

Crear un clúster Red Hat OpenShift on IBM Cloud

Con Red Hat OpenShift on IBM Cloud, dispone de una forma rápida y segura de contenerizar y desplegar cargas de trabajo empresariales en clústeres. los clústeres Red Hat OpenShift on IBM Cloud se basan en la orquestación de contenedores Kubernetes, que ofrece coherencia y flexibilidad para sus operaciones de ciclo de vida de desarrollo.

En esta sección, suministrará un clúster de Red Hat OpenShift on IBM Cloud en una (1) zona con dos (2) nodos trabajadores:

  1. Inicie sesión en su cuenta de IBM Cloud y cree un clúster de Red Hat OpenShift on IBM Cloud desde la página de creación de clúster deRed Hat OpenShift on IBM Cloud.
  2. Establezca el servicio de orquestación en la versión 4.13.x de Red Hat OpenShift on IBM Cloud.
  3. Seleccione la titularidad de OCP.
  4. En Infraestructura elija clásica o VPC
    • Para Red Hat OpenShift on IBM Cloud en la infraestructura de VPC, debe crear una VPC y una subred antes de crear el clúster de Kubernetes. Cree o inspeccione una VPC deseada teniendo en cuenta lo siguiente (consulte las instrucciones proporcionadas en Creación de un clúster VPC estándar):
      • Una subred que se puede utilizar para esta guía de aprendizaje, tome nota de la zona y el nombre de la subred
      • La pasarela pública está conectada a la subred
    • Seleccione la VPC deseada
    • Seleccione un servicio Cloud Object Storage existente o cree uno si es necesario y, a continuación, seleccione
  5. En Ubicación
    • Para Red Hat OpenShift on IBM Cloud en la infraestructura de VPC
      • Seleccione un Grupo de recursos
      • Deseleccione las zonas que no se pueden aplicar
      • En la zona deseada, verifique el nombre de subred deseado y, si no está presente, pulse el lápiz de edición para seleccionar el nombre de subred deseado
    • Para Red Hat OpenShift on IBM Cloud en la infraestructura clásica, siga las instrucciones de Creación de un clúster clásico estándar.
      • Seleccione un Grupo de recursos
      • Seleccione una Geografía
      • Seleccione Zona única como Disponibilidad
      • Elija un centro de datos
  6. En Agrupación de nodos trabajadores,
    • Seleccione 4 vCPU y 16 GB de memoria como tipo
    • Seleccione 2 nodos trabajadores por centro de datos para esta guía de aprendizaje (solo clásica: dejar Cifrar disco local)
  7. En Detalles de recursos, establezca el nombre del clúster como -myopenshiftcluster sustituyendo <your-initials> por sus propias iniciales.
  8. Pulse Crear para suministrar un clúster Red Hat OpenShift on IBM Cloud.

Anote el grupo de recursos seleccionado anteriormente. Este grupo de recursos se utilizará para todos los recursos de este lab.

Acceda al clúster utilizando IBM Cloud Shell

La Red Hat OpenShift on IBM Cloud Container Platform CLI expone comandos para gestionar sus aplicaciones, así como herramientas de bajo nivel para interactuar con cada componente de su sistema. La CLI está disponible utilizando el mandato oc.

Para evitar que se instalen las herramientas de línea de mandatos, el método recomendado es utilizar IBM Cloud Shell.

El shell de IBM Cloud es un espacio de trabajo de shell basado en la nube al que puede acceder a través del navegador. Está preconfigurado con la CLI de IBM Cloud completa y multitud de plugins y herramientas que puede utilizar para gestionar aplicaciones, recursos y la infraestructura.

En este paso, utilizará el shell de IBM Cloud y configurará oc de modo que apunte al clúster que tiene asignado.

  1. Cuando el clúster esté listo, en la página de resumen del clúster haga clic en OpenShift web console para abrir la consola. Asegúrese de no cerrar esta ventana/pestaña
  2. En la consola web, pulse el menú desplegable bajo su nombre en la esquina derecha de la pantalla y seleccione Copiar mandato de inicio de sesión y, a continuación, pulse el enlace Visualizar señal.
  3. Copie el texto que hay bajo Iniciar sesión con esta señal.
  4. En una nueva pestaña/ventana del navegador, abra IBM Cloud Shellpara iniciar una nueva sesión. Una vez iniciada la sesión, debe iniciar la sesión automáticamente en la CLI de IBM Cloud. Asegúrese de no cerrar esta ventana/pestaña.
  5. Compruebe la versión de la CLI de OpenShift:
    oc version
    
  6. La versión debe ser como mínimo 4.13.x, de lo contrario instale la última versión siguiendo estas instrucciones.
  7. Pegue el mandato de inicio de sesión que ha copiado desde la consola web y pulse Intro. Una vez que haya iniciado sesión utilizando el mandato oc login, ejecute el mandato siguiente para ver todos los espacios de nombres del clúster
    oc get ns
    
  8. Desde tu Cloud Shell, crea un proyecto llamado "bookinfo" con el comando oc new-project. El proyecto mantendrá la aplicación creada después de instalar la red de servicios.
    oc new-project bookinfo
    
    En Red Hat OpenShift, un proyecto es un espacio de nombres de Kubernetes con anotaciones adicionales.

Instalación de Service Mesh - Istio

En esta sección, instalará Service Mesh - Istio en el clúster. La instalación de la red de servicios implica la instalación de los operadores Elasticsearch, Jaeger, Kiali y Service Mesh, la creación y gestión de un recurso ServiceMeshControlPlane para desplegar el plano de control y la creación de un recurso ServiceMeshMemberRoll para especificar los espacios de nombres asociados con la red de servicios.

Algunos de los proyectos tienen varios operadores. Tenga cuidado de instalar los especificados a continuación

Elasticsearch: se basa en el proyecto Elasticsearch de código abierto que le permite configurar y gestionar el clúster de Elasticsearch para realizar el rastreo y el registro con Jaeger.

Jaeger: se basa en el proyecto Jaeger de código abierto y le permite realizar el rastreo para supervisar y resolver los problemas de transacciones en sistemas distribuidos complejos.

Kiali: se basa en el proyecto Kiali de código abierto y proporciona funciones de observabilidad para la red de servicios. Mediante Kiali puede ver configuraciones, supervisar tráfico y ver y analizar rastreos en una sola consola.

Red Hat OpenShift Service Mesh- Basado en el proyecto de código abierto Istio, le permite conectar, asegurar, controlar y observar los microservicios que componen sus aplicaciones.

Instalación de los operadores

  1. En el panel izquierdo de la consola web de Red Hat OpenShift, seleccione Administrador en el menú desplegable.
  2. Seleccione Operadores y luego OperatorHub.
  3. Busque OpenShift Elasticsearch Operator, pulse el mosaico en Instalar, deje la selección predeterminada y pulse Instalar.
  4. Repita los pasos 2 y 3 anteriores para instalar los operadores,
    1. Plataforma de rastreo distribuida de Red Hat OpenShift
    2. Operador Kiali (proporcionado por Red Hat)
    3. Red Hat OpenShift Service Mesh.

Esto instala los operadores en el proyecto openshift-operators predeterminado y pone los operadores a disposición de todos los proyectos del clúster.

Desplegando el Red Hat OpenShift Plano de control de Service Mesh

El operador Red Hat OpenShift El operador de Service Mesh utiliza un recurso ServiceMeshControlPlane para determinar cómo instalar Istio y qué componentes desea. Ahora vamos a crear este recurso.

  1. Cree un proyecto yendo a Inicio en el panel izquierdo de la consola web, pulse Proyectos y luego Crear proyecto.
  2. Especifique istio-system en el Nombre y pulse Crear.
  3. Vaya a Operadores y pulse Operadores instalados.
  4. Seleccione istio-system en el menú Proyecto en la barra superior.
  5. Pulse Red Hat OpenShift Service Mesh. Si no lo ve, espere un par de minutos y renueve.
  6. En el separador, bajo el mosaico Istio Service Mesh Control Plane, pulse Crear instancia o Crear ServiceMeshControlPlane.
  7. A continuación, pulse en Crear. El operador crea los componentes pods, servicios y plano de control de la red de servicios en función de sus parámetros de configuración.
  8. Para asegurarse de que el plano de control de la malla de servicios está instalado correctamente, pulse básico en Name en la lista. En la página siguiente, debería ver los Componentes listos. Además, cuando se desplaza a la sección Condiciones de la página, debería ver la razón ComponentsReady y un mensaje All component deployments are Available.

Creación de un recurso ServiceMeshMemberRoll

El recurso ServiceMeshMemberRoll sirve para especificar los espacios de nombres asociados a la red de servicios.

  1. Vaya de nuevo a OperadoresOperadores instalados.
  2. Pulse Red Hat OpenShift Service Mesh.
  3. En el separador, bajo el mosaico Istio Service Mesh Member Roll, pulse Crear instancia o Create ServiceMeshMemberRoll y, a continuación, seleccione Vista YAML
  4. Cambie your-project a bookinfo y suprima la última línea (- another-of-your-projects). Después de las ediciones, el YAML debería tener un aspecto parecido a este:
    apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system
    spec:
      members:
        - bookinfo
    
  5. A continuación, pulse en Crear.

Ha instalado correctamente Istio en el clúster.

Despliegue de la aplicación BookInfo en la red de servicios

La aplicación BookInfo muestra información sobre un libro, de forma similar a la entrada de un catálogo de una librería en línea. En la página se muestra una descripción del libro, detalles del libro (ISBN, número de páginas, etc) y algunas críticas sobre el libro.

La aplicación Bookinfo se divide en cuatro microservicios:

  • productpage. El microservicio productpage llama a los microservicios de detalles (details) y de críticas (reviews) para llegar la página.
  • detalles. El microservicio details contiene información sobre el libro.
  • reviews. El microservicio reviews contiene críticas sobre el libro. También llama al microservicio de clasificaciones (ratings).
  • ratings. El microservicio ratings contiene información sobre la clasificación del libro que acompaña a una crítica del libro.

Hay 3 versiones del microservicio reviews:

  • La versión v1 no llama al servicio ratings.
  • La versión v2 llama al servicio ratings y muestra cada clasificación en forma de estrellas negras, entre 1 y 5.
  • La versión v3 llama al servicio ratings y muestra cada clasificación en forma de estrellas rojas, entre 1 y 5.

A continuación se muestra la arquitectura global de la aplicación.

Arquitectura utilizando Istio
Architecture utilizando Istio

Red Hat OpenShift Service Mesh se basa en los sidecars de Envoy dentro del pod de la aplicación para proporcionar capacidades de Service Mesh a la aplicación. Puede habilitar la inyección automática de complementos o la puede gestionar manualmente. La inyección automática mediante la anotación es el sistema recomendado.

  1. Despliegue la aplicación Bookinfo en el proyecto bookinfo aplicando el archivo bookinfo.yaml en el clúster de Red Hat OpenShift. Esto despliega todas las aplicaciones de microservicio incluidas las versiones v1, v2 y v3 de la app de revisiones.

    oc apply -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/platform/kube/bookinfo.yaml
    

    El archivo bookinfo.yaml está anotado sidecar.istio.io/inject: "true" para permitir la inyección automática del sidecar Istio para Red Hat OpenShift Service Mesh. Por lo tanto, estos pods también incluirán un complemento de Envoy cuando se inicien en el clúster.

    Una instalación de Red Hat OpenShift Service Mesh difiere de las instalaciones de la comunidad Istio en varios aspectos. Consulte este enlace en el que se comparan Service Mesh e Istio. De forma predeterminada, Istio inyecta el sidecar si ha etiquetado el proyecto istio-injection=enabled. Red Hat OpenShift Service Mesh maneja esto de forma diferente y requiere que se opte para que el sidecar se inyecte automáticamente en un despliegue, por lo que no es necesario que etiquete el proyecto. Esto evita la inyección de un complemento si no se desea (por ejemplo, en los pods de compilación o despliegue).

  2. Verifique que los pods estén activos y en ejecución.

    oc get pods
    

    Salida de ejemplo:

    NAME                              READY     STATUS    RESTARTS   AGE
    details-v1-789c5f58f4-9twtw       2/2       Running   0          4m12s
    productpage-v1-856c8cc5d8-xcx2q   2/2       Running   0          4m11s
    ratings-v1-5786768978-tr8z9       2/2       Running   0          4m12s
    reviews-v1-5874566865-mxfgm       2/2       Running   0          4m12s
    reviews-v2-86865fc7d9-mf6t4       2/2       Running   0          4m12s
    reviews-v3-8d4cbbbbf-rfjcz        2/2       Running   0          4m12s
    

    Observe que cada pod de bookinfo tiene 2 contenedores. Uno es el contenedor de bookinfo y el otro es el complemento de proxy de Envoy.

La app bookinfo está en ejecución, pero no puede acceder a ella porque el servicio aún no está configurado para recibir tráfico externo. En la siguiente sección, expondrá el servicio productpage para permitir el tráfico de entrada.

Exposición de la app con la pasarela y la ruta de Ingress de Istio

Los componentes que se despliegan en la red de servicios de forma predeterminada no se exponen fuera del clúster. Se puede crear un recurso de pasarela de Ingress para permitir solicitudes externas a través de la pasarela de Ingress de Istio en los servicios de fondo.

  1. Configure la ruta predeterminada de bookinfo con la pasarela de Ingress de Istio.
    oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/bookinfo-gateway.yaml
    
  2. Obtenga el valor de ROUTE de la pasarela de Ingress de Istio.
    oc get routes -n istio-system istio-ingressgateway
    
  3. Guarde la dirección de HOST que ha recuperado en el paso anterior, ya que se utilizará para acceder a la app BookInfo en fases posteriores de esta guía de aprendizaje. Cree una variable de entorno llamada $INGRESS_HOST con la dirección de HOST.
    export INGRESS_HOST=<HOST>
    
    Para visitar la aplicación, vaya a http://$INGRESS_HOST/productpage en un nuevo separador. Si va pulsando Renovar, debería ver distintas versiones de la página en orden aleatorio (v1 - sin estrellas, v2 - estrellas negras, v3 - estrellas rojas). Mantenga abierta la pestaña del navegador para más adelante.

Observación de la telemetría del servicio: métricas y rastreo

Las prestaciones de rastreo y de métricas de Istio están diseñadas para proporcionar una visión amplia y granular del estado de todos los servicios. El rol de Istio como red de servicios lo convierte en el origen de datos ideal para la información de observabilidad, especialmente en un entorno de microservicios. A medida que las solicitudes pasan a través de varios servicios, la identificación de los cuellos de botella de rendimiento resulta cada vez más difícil con las técnicas de depuración tradicionales. El rastreo distribuido proporciona una vista holística de las solicitudes que transitan por varios servicios, lo que permite la identificación inmediata de problemas de latencia. Con Istio, el rastreo distribuido viene de forma predeterminada. Esto permite exponer la información sobre latencia, reintentos y errores para cada paso en una solicitud.

Visualización de métricas con Grafana

Grafana le permite consultar, visualizar, comprender y avisar sobre las métricas sin importar dónde se almacenan.

  1. En la consola web de Red Hat OpenShift on IBM Cloud,

    1. En el panel de la izquierda, en redes, pulse Rutas
    2. Seleccione el proyecto istio-system en la barra superior
    3. Pulse el URL (ubicación) que hay junto a grafana
    4. Inicie sesión en Red Hat OpenShift on IBM Cloud y permita los permisos solicitados para ver el panel de Grafana.
  2. Pulse el menú Panel de control en el panel de navegación de la izquierda, seleccione el separador Gestionar y, a continuación, istio y Panel de control del servicio Istio.

  3. Seleccione productpage.bookinfo.svc.cluster.local en el menú desplegable Servicio.

  4. Vaya a la pestaña/ventana de IBM Cloud Shell y genere una carga pequeña en la aplicación enviando tráfico a la ubicación del host Ingress que estableció en la última sección.

    for i in {1..20}; do sleep 0.5; curl -I $INGRESS_HOST/productpage; done
    

Abra cada twisty para ver más del panel de control. Elija distintos servicios en el desplegable Servicio. Este panel de control de Grafana proporciona métricas para cada carga de trabajo. Explore también los otros paneles de control que se proporcionan.

Observación de la red de servicios con Kiali

Kiali es un proyecto de código abierto que se instala como complemento sobre Istio para visualizar la red de servicios. Kiali proporciona una visión más profunda de cómo interactúan los microservicios entre sí, y proporciona características como los interruptores de circuito y las tasas de solicitud de sus servicios.

  1. En la consola web de Red Hat OpenShift on IBM Cloud,
    1. En el panel de la izquierda, bajo Redes, pulse Rutas
    2. Seleccione istio-system como proyecto en la barra superior
    3. Pulse el URL (Ubicación) situado junto a kiali y, si se le solicita, pulse Iniciar sesión con OpenShift
  2. Pulse el Gráfico en el panel de la izquierda y seleccione los espacios de nombres bookinfo e istio-system de la barra superior para ver el gráfico de versiones de la app de los distintos servicios de la red de Istio.
  3. Para ver los índices de solicitudes, haga clic en Visualizar y seleccione Índice de tráfico.
  4. En otra ventana o separador, visite el URL de la aplicación BookInfo y renueve la página varias veces para generar alguna carga, o bien ejecute el script de carga de la sección anterior para generar la carga.
  5. Ahora compruebe el gráfico de Kiali para ver las solicitudes por segundo.

Kiali tiene una serie de vistas que le ayudan a visualizar sus servicios. Pulse los distintos separadores para explorar el gráfico de servicios y las distintas vistas de cargas de trabajo, aplicaciones y servicios.

Gestión del tráfico

Las reglas de direccionamiento de tráfico de Istio permiten controlar fácilmente el flujo de llamadas de tráfico y de API entre los servicios. Istio simplifica la configuración de las propiedades de nivel de servicio, como los interruptores de circuito, los tiempos de espera y los reintentos, y facilita la configuración de tareas importantes como las pruebas de tipo A/B, los despliegues de recuperación y los despliegues por etapas con divisiones de tráfico basadas en el porcentaje. También proporciona características de recuperación de anomalías listas para ser utilizadas que ayudan a aumentar la solidez de la aplicación frente a las anomalías de los servicios dependientes o de la red.

El modelo de gestión de tráfico de Istio se basa en los proxies de Envoy (complementos) que se despliegan junto con sus servicios. Todo el tráfico que sus servicios envían y reciben (tráfico del plano de datos) se envía mediante proxy a través de Envoy, lo que facilita el direccionamiento y el control del tráfico en la red sin realizar ningún cambio en los servicios.

El servicio piloto convierte las reglas generales en configuraciones específicas y distribuye esta configuración a las instancias de Envoy. Pilot utiliza tres tipos de recursos de configuración para gestionar el tráfico dentro de su malla de servicios: Servicios virtuales, Reglas de destino y Entradas de servicio.

Pruebas de tipo A/B con Istio

La prueba de tipo A/B es un método de realizar pruebas idénticas en dos versiones distintas de un servicio para determinar cuál de ellas ofrece un mejor rendimiento. Para evitar que Istio utilice el comportamiento de direccionamiento predeterminado entre el servicio original y el modernizado, defina las siguientes reglas:

  1. Ejecute el mandato siguiente para crear las reglas de destino para los servicios de Bookinfo:

    oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/destination-rule-all.yaml
    

    Una DestinationRule define las políticas que se aplican al tráfico destinado a un servicio después de que se haya producido el enrutamiento. Estas reglas especifican la configuración para el equilibrio de carga, el tamaño de la agrupación de conexiones para el complemento y los valores de detección de valores atípicos para detectar y evitar que hosts que no estén en buen estado participen en la agrupación de equilibrio de carga. Cualquier host de destino y subset al que se haga referencia en una regla VirtualService debe estar definido en una DestinationRule correspondiente.

  2. Un VirtualService define un conjunto de reglas de direccionamiento de tráfico que se aplicarán cuando se direccione un host. Cada regla de direccionamiento define criterios de coincidencia para el tráfico de un protocolo específico. Si el tráfico coincide, se envía a un servicio de destino con nombre (o a un subconjunto o a una versión del mismo) definido en el registro. Ejecute el mandato siguiente para enviar todo el tráfico de revisiones a v1:

    oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-all-v1.yaml
    

    El VirtualService define una regla que captura todo el tráfico HTTP que entra en el servicio de críticas y direcciona el 100 % del tráfico a los pods del servicio con la etiqueta "version: v1". Un subconjunto o una versión de un destino de ruta se identifica con una referencia a un subconjunto de servicios con nombre que se deben declarar en una DestinationRule correspondiente.

  3. Consulte la aplicación Bookinfo en el separador del navegador. Sólo debe obtener la v1 de la aplicación BookInfo, es decir, ninguna estrella para las clasificaciones.

  4. Para habilitar la red de servicios de Istio para pruebas de tipo A/B en la nueva versión del servicio, modifique la regla VirtualService original para que envíe solo el tráfico de Firefox a v2. Puede cambiar el user-agent por cualquier otro navegador instalado en la máquina:

    cat <<EOF | oc replace -f -
    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: reviews
    spec:
      hosts:
      - reviews
      http:
      - match:
        - headers:
            user-agent:
              regex: '.*Firefox.*'
        route:
        - destination:
            host: reviews
            subset: v2
      - route:
        - destination:
            host: reviews
            subset: v3
    EOF
    

    En las reglas de Istio VirtualService, sólo puede haber una regla para cada servicio y, por lo tanto, cuando se definen varios bloques HTTPRoute, el orden en que se definen en el yaml importa. Por lo tanto, la regla de VirtualService original se modifica en lugar de crear una regla nueva. Con la regla modificada, las solicitudes entrantes procedentes de navegadores Firefox irán a la versión v2 (estrellas negras) de bookinfo. Todas las demás solicitudes pasan al siguiente bloque, que direcciona todo el tráfico a la versión v3 (estrellas rojas) de bookinfo.

Despliegue de prueba

En los despliegues de prueba, las versiones más recientes de los servicios se despliegan de forma incremental en los usuarios para minimizar el riesgo y el impacto de cualquier error introducido por la versión más reciente. Para empezar el tráfico de direccionamiento incremental a la versión más reciente del servicio de información de contabilidad, modifique la regla de VirtualService original:

  1. Ejecute el mandato siguiente para enviar el 80 % del tráfico a v1,

    oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-reviews-80-20.yaml
    

    En la regla modificada, el tráfico direccionado se divide entre dos subredes distintas del microservicio de críticas. De este modo, el tráfico destinado a la versión 2 modernizada de críticas se controla según un porcentaje para limitar el impacto de cualquier error imprevisto. Esta regla se puede modificar con el tiempo hasta que prácticamente todo el tráfico se direccione a la versión más reciente del servicio.

  2. Vuelva a ver la aplicación Bookinfo en el separador del navegador. Asegúrese de que está utiliza una renovación difícil (mandato + Mayús + R en Mac o Control + F5 en ventanas) para eliminar cualquier almacenamiento en memoria caché del navegador. Debe tener en cuenta que la aplicación bookinfo debe cambiar entre V1 o V2 según la ponderación que ha especificado.

  3. Para direccionar todo el tráfico a la v3 de críticas,

    oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-reviews-v3.yaml
    

Protección de los servicios

Istio puede proteger la comunicación entre microservicios sin necesidad de realizar cambios en el código de la aplicación. La seguridad se proporciona mediante la autenticación y el cifrado de vías de acceso de comunicación dentro del clúster. Esto se está convirtiendo en un requisito de conformidad y de seguridad común. La delegación de la seguridad de la comunicación a Istio (en lugar de implementar TLS en cada microservicio) garantiza que la aplicación se despliega con políticas de seguridad coherentes y gestionables.

  1. Para configurar mTLS, debe modificar las reglas de destino anteriores para que utilicen ISTIO_MUTUAL.
    oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/destination-rule-all-mtls.yaml
    
  2. Envíe más tráfico a la aplicación. Todo debería seguir funcionando según lo esperado.
  3. Vuelva a iniciar Kiali y vaya a Gráfico.
  4. Seleccione bookinfo en la barra Espacio de nombres superior.
  5. En Visualizar, seleccione Seguridad. Debería ver el icono de candado en todas las flechas (tráfico).
  6. Para confirmar que el tráfico es seguro, pulse la flecha entre productpage y v1; debería ver mTLS Enabled con el icono de candado en el panel de la derecha.

Habilitación de SSL para el tráfico procedente del clúster (HTTPS)

En esta sección, creará una ruta segura a la pasarela de Ingress con la terminación de extremo (Edge) utilizando el certificado predeterminado proporcionado por Red Hat OpenShift on IBM Cloud. Con una ruta de extremo, el controlador de Ingress termina el cifrado TLS antes de reenviar el tráfico al pod de istio-ingressgateway.

  1. Inicie la consola de Red Hat OpenShift on IBM Cloud
  2. En Redes, seleccione Rutas,
  3. Elija el proyecto istio-system en la barra superior y pulse Crear ruta
    1. Nombre: istio-ingressgateway-secure
    2. Servicio: istio-ingressgateway
    3. Puerto de destino80->8080(TCP)
    4. Comprobar Secure Route
    5. Terminación de TLS: Edge
    6. Tráfico no seguro: None
  4. Pulse Crear.
  5. Visite el nuevo URL de HTTPS en la sección Ubicación de la ruta istio-ingressgateway-secure. Recuerde añadir /productpage al final del URL.

Eliminación de recursos

Puede eliminar gradualmente los recursos individuales o saltarse estos pasos y suprimir directamente todo el clúster.

Supresión del proyecto de la aplicación

  • Para suprimir el proyecto bookinfo, ejecute el mandato siguiente
    oc delete project bookinfo
    

Eliminación de ServiceMeshControlPlane de la CLI

  1. Ejecute este mandato para recuperar el nombre del ServiceMeshControlPlane instalado,
    oc get servicemeshcontrolplanes -n istio-system
    
  2. Sustituya <NAME_OF_CUSTOM_RESOURCE> por el nombre del mandato anterior y ejecute este mandato para eliminar el recurso personalizado,
    oc delete servicemeshcontrolplanes -n istio-system <NAME_OF_CUSTOM_RESOURCE>
    
    El recurso ServiceMeshMemberRoll se suprime automáticamente cuando se suprime el recurso ServiceMeshControlPlane con el que está asociado.

Eliminación de los operadores

  1. Vaya a la página OperadoresOperadores instalados de la consola web.
  2. En la parte derecha de la página Detalles del operador, seleccione Desinstalar operador en el menú desplegable Acciones de Red Hat OpenShift Malla de servicio Operador.
  3. Pulse Desinstalar en la solicitud.
  4. Repita los pasos 2 y 3 para cada uno de los operadores de la lista.

Supresión del clúster

Suprima el clúster para suprimir todo de una vez. Esta acción es irreversible.

  1. Vaya a la página Clústeres deOpenShift.
  2. Pulse el menú de acción junto a <your-initials>-myopenshiftcluster y seleccione Suprimir.
  3. Seleccione Suprimir el almacenamiento persistente utilizado por el clúster y especifique el nombre del clúster que desea confirmar.
  4. Pulse Suprimir

Contenido relacionado