Kubernetes

Malla de servicios de Kubernetes

Malla de servicios de Kubernetes
Kubernetes tiene muchos tipos de recursos que lo ayudan a abstraer la idea de servicios o microservicios. Por ejemplo, si el frontend de su aplicación quiere interactuar con el backend, no es necesario que le importe qué pod está buscando, ni siquiera qué dirección IP espera que ocupe un pod de backend. Los pods se exponen a través de un servicio. (Si es nuevo en Kubernetes, le recomiendo esta publicación para comprender mejor qué son los pods junto con otros conceptos importantes.)

Esencialmente, Kubernetes expone un servicio backend internamente dentro del clúster y el front-end interactúa con este servicio. Las cápsulas que ofrecen el servicio pueden ser reemplazadas muy bien y nadie notaría nada. Pero a medida que crecen las funciones de sus aplicaciones, también crece la cantidad de servicios que necesita mantener. Cada servicio puede potencialmente comunicarse con todos los demás servicios del clúster, y la red resultante se denomina como Malla de servicio.

Hay muchos complementos para Kubernetes que nos ayudan a simplificar la administración de esta malla de servicios. Estos complementos ofrecen muchas funciones clave como TLS, equilibrio de carga automatizado, API de seguridad incluso en la red interna, etc. Muchas opciones como Istio, Linkerd y Conduit se pueden integrar con Kubernetes para lograr esto. Estaremos investigando a Istio en esta publicación ya que es la versión 1.0 fue anunciado recientemente.

Prerrequisitos

Para comenzar con Istio, necesitaría un clúster de kubernetes que funcione. Hay tres formas de conseguirlo.

  1. Puede instalar Minikube para crear un clúster de un solo nodo en su máquina local.
  2. O, si está utilizando Docker en Windows o Mac, puede habilitar un clúster de Kubernetes de un solo nodo en la configuración de Docker.
  3. O puede utilizar servicios en línea como Katacoda playground. Estaremos usando esto.

Por qué utilizar una malla de servicios?

La instalación de una malla de servicios, como Istio, facilita el trabajo con microservicios. Durante el desarrollo, no tiene que preocuparse por el hecho de que su microservicio tenga que ofrecer soporte para TLS mutuo, equilibrio de carga o cualquier otro aspecto, como el descubrimiento de servicios. Una malla de servicios ideal le permite conectar microservicios, protegerlos entre sí y del mundo exterior, y administrarlos de manera organizada. Ayuda inmensamente tanto a los desarrolladores como a los operadores.

Instalación de Istio

La instalación de Istio requiere tener un clúster de Kubernetes. Si tiene un clúster de un solo nodo como el que obtiene con Minikube o Docker en el escritorio, entonces todos los comandos se pueden ejecutar en su nodo local. Sin embargo, si está utilizando un clúster de varios nodos como el que ofrece Katacoda playground, tenga en cuenta que la mayoría de los comandos y procedimientos de configuración se realizan en el nodo principal. Sí, afecta a todo el clúster, pero necesitamos interactuar únicamente con el nodo maestro.

Comenzamos clonando (o descargando) la última versión de Istio de Github. Es posible que los usuarios de Windows deseen visitar esta página y obtener el .Código Postal expediente.

$ curl -L https: // git.io / getLatestIstio | sh -
$ cd istio-1.0.0

El nombre del repositorio puede cambiar con el tiempo a medida que se publique una versión más reciente, al momento de escribir este artículo 1.0.0 es la última versión estable. Este repositorio contiene no solo la extensión de la malla del servicio, sino también una aplicación de muestra llamada BookInfo con fines de experimentación. El script también agrega el nuevo directorio $ PWD / istio-1.0.0 / bin a su variable PATH.

Este directorio contiene istioctl binario que se puede utilizar para interactuar con el clúster. Los usuarios de Windows pueden simplemente llamar al binario yendo a la carpeta istio-1.0.0 \ bin y llamando .\ istioctl usando powershell o símbolo del sistema. Pero es un complemento opcional.

Si está usando Mac, puede hacerlo usando el siguiente comando:

$ export PATH = $ PWD / bin: $ PATH

A continuación, debemos ampliar nuestra API de Kubernetes con definiciones de recursos personalizadas (CRD) que istio nos proporciona.

$ kubectl apply -f install / kubernetes / helm / istio / templates / crds.yaml

Esto podría tener efecto en unos segundos y una vez que esté hecho, su kube-apiserver tendrá extensiones de Istio integradas. A partir de aquí, las opciones de instalación varían dependiendo de si lo está utilizando para fines de producción o si está experimentando con él en su propio entorno aislado.

Vamos a suponer que este último es el caso, e instalaremos istio sin autenticación TLS.

$ kubectl apply -f install / kubernetes / istio-demo.yaml

Esto creará un nuevo sistema istio de espacio de nombres donde se instalarán todos los componentes como istio-pilot y la puerta de enlace de entrada.

Implementación de aplicaciones e inyector Istio

Aquí viene la utilidad de Istio. Istio agrega proxies secundarios a sus servicios, y esto se hace sin modificar el código real de su aplicación. Si el inyector istio-sidecar automático está habilitado. Puede etiquetar un espacio de nombres con istio-injection = habilitado y cuando su aplicación se implemente en este espacio de nombres, los propios pods tendrán contenedores Envoy especializados junto con los contenedores para la aplicación principal. Por ejemplo, etiquetemos el espacio de nombres predeterminado

$ kubectl etiqueta espacio de nombres predeterminado istio-injection = habilitado

Ahora implementemos la aplicación BookInfo de muestra en este espacio de nombres. Desde el directorio raíz del representante de Isitio que clonamos, ejecute:

$ kubectl apply -f samples / bookinfo / platform / kube / bookinfo.yaml

Puede enumerar todos los pods que se ejecutan aquí:

$ kubectl obtener vainas

Elija cualquier cápsula de entre las y vea sus detalles. Por ejemplo, uno de los pods de la aplicación BookInfo en mi implementación se llama details-v1-6865b9b99d-6mxx9

$ kubectl describe pods / details-v1-6865b9b99d-6mxx9

En la descripción, notará que el pod contiene dos contenedores, el primero es un componente de la aplicación de imágenes en ejecución real examples-bookinfo-details-v1: 1.8.0 y el segundo es el istio-proxy que ejecuta la imagen gcr.io / istio-release / proxyv2: 1.0.0 .

Istio ofrece un control detallado sobre su malla de servicio porque inyecta estos contenedores en los mismos pods 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 que las aplicaciones grandes pueden beneficiarse de una malla de servicios como Istio.

Referencias

La arquitectura actual tiene muchos componentes como Pilot, Citadel y Mixer, 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í.

Los 10 mejores juegos para jugar en Ubuntu
La plataforma Windows ha sido una de las plataformas dominantes para juegos debido al gran porcentaje de juegos que se están desarrollando hoy para ad...
5 mejores juegos de arcade para Linux
Hoy en día, las computadoras son máquinas serias que se usan para jugar. Si no puede obtener la nueva puntuación más alta, sabrá a qué me refiero. En ...
Batalla por Wesnoth 1.13.6 Desarrollo liberado
Batalla por Wesnoth 1.13.6 lanzado el mes pasado, es el sexto lanzamiento de desarrollo en el 1.13.x y ofrece una serie de mejoras, sobre todo en la i...