Esencialmente, Kubernetes expone un servicio de back -end internamente dentro del clúster y el front-end interactúa con este servicio. Las vainas que ofrecen el servicio pueden reemplazarse y nadie notaría nada. Pero a medida que crecen las características en sus aplicaciones, la cantidad de servicios que necesita mantener también crece. Cada servicio puede hablar potencialmente con cualquier otro servicio en el clúster, y la red resultante se denomina Malla de servicio.
Hay muchos complementos para que Kubernetes nos ayude a simplificar la gestión de esta malla de servicio. Se ofrecen muchas características de claves como TLS, equilibrio de carga automatizado, asegurando API incluso en la red interna, etc. Muchas opciones como Istio, Linkerd y el conducto pueden integrarse con Kubernetes para lograr esto. Estaremos investigando a Istio en esta publicación ya que es la versión 1.0 fue anunciado recientemente.
Para comenzar con Istio, necesitaría un clúster de Kubernetes en funcionamiento. Hay tres formas de conseguir eso.
¿Por qué utilizar una malla de servicio??
Instalar una malla de servicio, como Istio, facilita trabajar con microservicios. Mientras se desarrolla, no tiene que preocuparse por el hecho de que su microservicio tendría que ofrecer soporte para TLS mutuo, equilibrio de carga o cualquier otro aspecto, como el descubrimiento de servicios. Una malla de servicio ideal le permite conectar microservicios, asegurarlos unos de otros y del mundo exterior, y administrarlos de manera organizada. Ayuda tanto a los desarrolladores como a los operadores.
Instalación de istio
La instalación de Istio requiere tener un clúster Kubernetes. Si tiene un solo clúster de nodo como obtiene con Minikube o Docker en el escritorio, todos los comandos se pueden ejecutar en su nodo local. Sin embargo, si está utilizando un clúster de nodos múltiples como el que ofrece Katacoda Playground, tenga en cuenta que la mayoría de los comandos y los procedimientos de configuración se realizan en el nodo maestro. Sí, afecta a todo el clúster, pero necesitamos interactuar únicamente con el nodo maestro.
Comenzamos con clonación (o descargando) el último lanzamiento de Istio de Github. Los usuarios de Windows pueden querer visitar esta página y obtener lo apropiado .cremallera archivo.
$ curl -l https: // git.io/getLatestistio | mierda -
$ CD istio-1.0.0
El nombre del repositorio puede cambiar con el tiempo a medida que aparece el lanzamiento más nuevo, en el momento de este escrito 1.0.0 es el último lanzamiento estable. Este repositorio contiene no solo la extensión de la malla de servicio sino también una aplicación de muestra llamada BookInfo para fines de experimentación. El script también agrega el nuevo directorio $ pwd/istio-1.0.0/bin a tu ruta variable.
Este directorio contiene istioctl binario que se puede usar para interactuar con el clúster. Los usuarios de Windows simplemente pueden llamar al binario yendo a la carpeta istio-1.0.0 \ bin y llamar .\ istioctl Uso de PowerShell o solicitante del sistema. Pero es un complemento opcional.
Si está usando Mac, puede hacerlo usando el siguiente comando:
$ exportación ruta = $ pwd/bin: $ ruta
A continuación, necesitamos extender nuestra API de Kubernetes con definiciones de recursos personalizados (CRD) que Istio nos proporciona.
$ Kubectl Aplicar -f Install/Kubernetes/Helm/Istio/Templates/CRDS.yamlEsto podría entrar en vigencia en unos segundos y una vez que se realice, su Kube-APISERVER tendrá extensiones de Istio integradas en él. De aquí en adelante, las opciones de instalación varían según si está utilizando esto para fines de producción o si está experimentando con él en su propio entorno aislado.
Asumiremos que este último es el caso e instala istio sin autenticación TLS.
$ kubectl aplicar -f instalación/kubernetes/istio -demo.yamlEsto creará un nuevo espacio de nombres en el sistema istio.
Implementación de la aplicación e inyector istio
Aquí viene la utilidad de istio. Istio agrega proxies sidEcar a sus servicios, y esto se hace sin modificar el código real de su aplicación. Si está habilitado el inyector automático istio-sidecar. Puede etiquetar un espacio de nombres con istio-inyection = habilitado y cuando su aplicación esté implementada en este espacio de nombres, las cápsulas mismas tendrán contenedores de envío especializados junto con los contenedores para la aplicación central. Por ejemplo, etiquetemos el espacio de nombres predeterminado
$ kubectl espacio de nombres de etiqueta predeterminado istio-inyection = habilitado
Ahora implementemos la aplicación BookInfo de muestra en este espacio de nombres. Del directorio raíz del representante de Isitio que clonamos, ejecute:
$ kubectl aplicar -f muestras/bookinfo/plataforma/kube/bookinfo.yamlPuede enumerar todas las vainas que se ejecutan aquí:
$ kubectl consigue vainas
Elija cualquier vaina de los que. Por ejemplo, una de las cápsulas de la aplicación BookInfo en mi implementación se llama Detalles-V1-6865B9B99D-6MXX9
$ Kubectl Describa pods/Detsily-V1-6865B9B99D-6MXX9
En la descripción, notará que la cápsula contiene dos contenedores, primero es un componente de la ejecución real de la aplicación de la imagen.8.0 y el segundo es el istio-proxy ejecutando la imagen GCR.io/istio-release/proxyv2: 1.0.0 .
Istio ofrece un control de grano fino sobre su malla de servicio porque inyecta estos contenedores a las cápsulas donde residen sus aplicaciones. Esto combinado con TLS fácil de usar para la comunicación y el control de tráfico de grano fino es una de las muchas razones por las cuales las grandes aplicaciones pueden beneficiarse de una malla de servicio como Istio.
La arquitectura real tiene muchos componentes como piloto, ciudadela y mezclador cada uno con su propio papel importante que realizar. Puede aprender mucho más sobre estos componentes aquí e intentar implementar su propio microservicio aquí.