Búsqueda de sitios web

Cómo instalar Istio Service Mesh en OpenShift 4.x |


Un Service Mesh proporciona una forma uniforme de conectar, proteger y monitorear aplicaciones de microservicios en su entorno de contenedores OpenShift/Kubernetes. Una malla puede describirse como una red de microservicios que conforman aplicaciones en una arquitectura de microservicios distribuida. Este tutorial lo guiará a través de los pasos para instalar Istio Service Mesh en OpenShift 4.x Cluster.

Red Hat OpenShift Service Mesh se basa en el proyecto de código abierto Istio. Facilita la creación de una red de servicios implementados que proporciona descubrimiento, equilibrio de carga, autenticación de servicio a servicio, recuperación de fallas, métricas y monitoreo.

Cursos OpenShift:

OpenShift práctico para desarrolladores – Nuevo curso 2021

Bootcamp Ultimate Openshift (2021) de School of Devops

Características de la malla de servicio de Istio

  • Gestión del tráfico: controle el flujo de tráfico y las llamadas API entre servicios, haga que las llamadas sean más confiables y haga que la red sea más sólida frente a condiciones adversas.
  • Identidad y seguridad del servicio: proporciona servicios en la malla con una identidad verificable y brinda la capacidad de proteger el tráfico del servicio a medida que fluye a través de redes de diversos grados de confiabilidad.
  • Aplicación de políticas: aplique la política organizacional a la interacción entre servicios, garantice que se cumplan las políticas de acceso y que los recursos se distribuyan de manera justa entre los consumidores. Los cambios de política se realizan configurando la malla, no cambiando el código de la aplicación.
  • Telemetría: obtenga una comprensión de las dependencias entre los servicios y la naturaleza y el flujo del tráfico entre ellos, lo que brinda la capacidad de identificar problemas rápidamente.

Componentes de la malla de servicios de Istio

La malla de servicios de Istio se divide en plano de control y plano de datos.

Componentes del plano de control:

  • Pilot: configura los proxies sidecar de Envoy en tiempo de ejecución.
  • Mixer: aplica el control de acceso y las políticas de uso. También es responsable de la recopilación de datos de telemetría del proxy Envoy y otros servicios.
  • Citadel – Para la gestión de certificados – emisión y rotación.
  • Galera: ingiere la configuración de la malla de servicios y luego valida, procesa y distribuye la configuración.

Plano de datos:

El plano de datos está compuesto por un conjunto de proxies inteligentes (Envoy) desplegados como sidecars. Estos servidores proxy median y controlan todas las comunicaciones de red entre microservicios. También recopilan e informan telemetría sobre todo el tráfico de malla.

Las características integradas de Envoy incluyen:

  • Descubrimiento de servicios dinámicos
  • Balanceo de carga
  • terminación TLS
  • Proxies HTTP/2 y gRPC
  • Rompedores de circuito
  • Controles de salud
  • Implementaciones por etapas con división de tráfico basada en porcentaje
  • Inyección de fallas
  • Métricas ricas

Red Hat OpenShift Service Mesh también proporciona funciones operativas más complejas que incluyen:

  • Pruebas A/B
  • lanzamientos canarios
  • Limitación de velocidad
  • Control de acceso
  • Autenticación de extremo a extremo

Instale Istio Service Mesh en OpenShift 4.x

Ahora siga los siguientes pasos para instalar y configurar Red Hat OpenShift Service Mesh, basado en Istio. El istio-operator se utilizará para gestionar la instalación del plano de control de Istio.

Paso 1: Instale el operador Elasticsearch

El operador Elasticsearch le permite configurar y administrar un clúster de Elasticsearch para rastrear y registrar con Jaeger.

Inicie sesión en la consola web de OpenShift Container Platform y navegue hasta Operadores > OperatorHub > Buscar Elasticsearch Operador

Haga clic en "Instalar".

Seleccione Todos los espacios de nombres en el clúster (predeterminado) para el modo de instalación y la estrategia de aprobación automática.

Haga clic en Suscribirse para iniciar la instalación.

Paso 2: Instale el operador Jaeger

Jaeger le permite realizar seguimiento para monitorear y solucionar problemas de transacciones en sistemas distribuidos complejos.

Vaya a Operadores > OperatorHub > Buscar Operador Jaeger

Haga clic en "Continuar" y seleccione otras configuraciones como se muestra a continuación para suscribirse.

Paso 3: Instale el operador Kiali

Kiali le permite ver configuraciones, monitorear el tráfico y ver y analizar seguimientos en una sola consola. Para instalarlo, busque “Kiali Operador” en OperatorHub.

Seleccione el modo de instalación, el canal de actualización y la estrategia de aprobación.

Los tres operadores ahora deberían estar instalados.

Paso 4: Instale el operador Red Hat OpenShift Service Mesh

Una vez instalados los operadores Jaeger, Kiali y Elasticsearch, proceda a instalar Istio Service Mesh Operador proporcionado por Red Hat.

Vaya a Operadores > OperatorHub > Red Hat OpenShift Service Mesh

Seleccione Todos los espacios de nombres en el clúster (predeterminado) para instalar el operador de Service Mesh en el proyecto openshift-operators.

Haga clic en Instalar y canal de actualización estable con estrategia de aprobación automática.

El operador debe estar visible en el proyecto openshift-operators.

Paso 5: Configurar el plano de control de Service Mesh

Ahora podemos implementar el plano de control Service Mesh que define la configuración para la instalación del plano de control.

Crea un nuevo proyecto: Inicio > Proyectos > Crear proyecto

Nombra el proyecto istio-system

La creación de un proyecto cambia automáticamente a un nuevo proyecto en OpenShift. Vaya a Operadores > Operadores instalados > Istio Plano de control de malla de servicio.

Haga clic en Crear ServiceMeshControlPlane

Se proporciona una plantilla ServiceMeshControlPlane predeterminada en formato YAML. Modifíquelos para que se ajusten a su caso de uso. Puede consultar la guía de personalización para obtener más detalles.

Personalicé mi configuración para que se vea como se muestra a continuación.

NOTA: No COPIE Y PEGUE esta configuración; incluye tolerancias para ejecutar servicios de Istio en infranodos con taints. Puede que no te funcione!!.

apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
metadata:
  name: full-install
  namespace: istio-system
spec:
  istio:
    global:
      proxy:
        accessLogFile: "/dev/stdout"
      mtls:
        enabled: false
      disablePolicyChecks: true
      policyCheckFailOpen: false
      outboundTrafficPolicy:
          mode: "REGISTRY_ONLY"
    gateways:
      istio-ingressgateway:
        autoscaleEnabled: true
        ior_enabled: true
      istio-egressgateway:
        autoscaleEnabled: true
        nodeSelector:
          node-role.kubernetes.io/infra: ""
        tolerations:
          - key: infra
            value: reserved
            effect: NoSchedule
          - key: infra
            value: reserved
            effect: NoExecute
    mixer:
      enabled: true
      nodeSelector:
        node-role.kubernetes.io/infra: ""
      tolerations:
        - key: infra
          value: reserved
          effect: NoSchedule
        - key: infra
          value: reserved
          effect: NoExecute
    kiali:
      enabled: true
      dashboard:
        viewOnlyMode: false
      ingress:
        enabled: true
      nodeSelector:
        node-role.kubernetes.io/infra: ""
      tolerations:
        - key: infra
          value: reserved
          effect: NoSchedule
        - key: infra
          value: reserved
          effect: NoExecute
    grafana:
      enabled: true
      nodeSelector:
        node-role.kubernetes.io/infra: ""
      tolerations:
        - key: infra
          value: reserved
          effect: NoSchedule
        - key: infra
          value: reserved
          effect: NoExecute
    tracing:
      enabled: true
      jaeger:
        template: all-in-one

Haga clic en "Crear" y el plano de control debería comenzar a instalarse.

Puede verificar el estado de la instalación del plano de control desde CLI

$ oc get smcp -n istio-system

Puedes ver el progreso de los Pods a medida que se crean.

$ oc get pods -n istio-system -w

Paso 6: Configurar el rollo de miembros de Service Mesh

Los Proyectos que pertenecen al plano de control se enumeran en ServiceMeshMemberRoll. Debe crear un recurso ServiceMeshMemberRoll denominado default en el proyecto istio-system .

Cambie al proyecto istio-system: Inicio > Proyectos > istio-system

Vaya a Operadores > Operadores instalados > Red Hat OpenShift Service Mesh > Lista de miembros de Istio Service Mesh

En ServiceMeshMemberRolls, haga clic en Crear ServiceMeshMemberRoll.

Agregue los proyectos que desea que formen parte de la malla de servicios de Istio y haga clic en "Crear". Desde CLI, el recurso ServiceMeshMemberRoll se puede actualizar después de su creación.

$ oc edit smmr -n istio-system

Paso 7: Implementar aplicaciones con inyección automática de sidecar

Para implementar sus aplicaciones en Service Mesh, debe optar por la inyección especificando la anotación sidecar.istio.io/inject con un valor de "true".

Vea el ejemplo a continuación.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sleep
spec:
  replicas: 1
  template:
    metadata:
      annotations:
        sidecar.istio.io/inject: "true"
      labels:
        app: sleep
    spec:
      containers:
      - name: sleep
        image: tutum/curl
        command: ["/bin/sleep","infinity"]
        imagePullPolicy: IfNotPresent

Para aplicaciones preexistentes en un proyecto agregado como miembro al plano de control, puede actualizar la plantilla del pod en la implementación agregando o modificando una anotación:

$ oc patch deployment/<deployment> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'

Puede obtener más información consultando el escenario Implementar Bookinfo.

Más guías sobre OpenShift.

Configurar el servicio Chrony NTP en OpenShift 4.x/OKD 4.x

Ejecute la caja de herramientas Ceph para Rook en Kubernetes/OpenShift

Agregue el secreto de extracción del registro de imágenes de Harbor a Kubernetes/OpenShift

Administre usuarios de OpenShift/OKD con el proveedor de identidad HTPasswd

Cómo mostrar registros de nodos OpenShift con el comando oc

Cómo abrir un indicador de Shell en un nodo OpenShift

Artículos relacionados: