Instalando Istio Service Mesh

por Carlos
0 comentario

En el artículo anterior – Instalando Kubernetes sin morir en el intento – vimos como instalar Kubernetes utilizando máquinas virtuales con VirtualBox, ahora veremos la instalación de Istio en nuestro clúster.

Arquitectura Istio Service Mesh

Para dar una explicación más gráfica acerca de Istio, presentaré la siguiente arquitectura.

Descarga del instalador

Debemos ir al sitio de istio.io y descargar el archivo de instalación dependiendo de nuestro sistema operativo.

Otra forma de descargar el instalador es ejecutando el comando

curl -L https://istio.io/downloadIstio | sh -

Instalación de istioctl y variable de entorno

Una vez descargado debemos descomprimir el archivo según sea nuestro sistema operativo y luego debemos agregar la ruta del directorio a nuestra variable PATH, en mi caso tengo MacBook y mostraré cómo y dónde se agrega la ruta.

Esta linea debemos agregarla en mi caso al archivo .zshrc (Oh My ZSH), con ello nuestro PATH ya sabe dónde está Istio.

Si ya tenemos todo listo, deberemos ejecutar istioctl para saber si tenemos el cliente de Istio correctamente instalado.

Si tenemos el resultado de la imagen, significa que tenemos correctamente configurado el cliente de Istio.

En mi caso tengo configurado mi equipo para acceder al clúster, esto lo pueden hacer con el siguiente artículo.

Chequeando la instalación

Una vez configurado todo lo anterior debemos ejecutar un pre-check de Istio antes de instalar en nuestro clúster.

istioctl x precheck

Deberíamos tener el siguiente resultado.

Instalando Istio en Kubernetes

Estamos listos para proceder a instalar Istio en nuestro clúster.

istioctl install

Istio se ha instalado correctamente y para comprobar debemos hacer lo siguiente

Hemos finalizado la primera parte de la instalación de Istio ServiceMesh.

Desplegando Microservicios

Ahora vamos a desplegar microservicios en nuestro clúster y para ello vamos a utilizar un proyecto que se aloja en el repositorio de Google Cloud Platform.

Podemos clonar el repositorio (desde aquí) y una vez realizado vamos al directorio release.

Tomaremos el archivo kubernetes-manifest.yaml para desplegar los microservicios y ejecutaremos el siguiente comando en nuestra terminal.

kubectl apply -f kubernetes-manifest.yaml

Veremos el siguiente resultado.

Si revisamos como se crean los pods, tenemos el siguiente resultado.

kubectl get pods -o wide

Este es el resultado de los pods que se han desplegado.

kubectl get pods

Istio Inyección de Envoy Proxy

Ahora debemos tener muy claro que cada microservicio tiene su contenedor dentro de su pod, tenemos el core de Istio instalado y corriendo en el clúster. Ahora se inyectara un proxy por cada contenedor que tenemos con un microservicio desplegado.

Comenzamos creando un label en nuestro namespace default

$ kubectl label namespace default istio-injection=enabled
$ namespace/default labeled

Comprobamos…

$ kubectl get ns default  --show-labels

Ahora para que la inyección del proxy envoy tenga efectos, debemos eliminar nuestros pods y para ello debemos ejecutar el comando.

kubectl delete -f kubernetes-manifest.yaml

Ya tenemos todos los recursos eliminados en el clúster.

Ahora volvemos a crear nuestro despliegue y podemos ver que tenemos dos contenedores por cada microservicio. Esto se realizó sin modificar nada en la configuración de Kubernetes, solamente agregamos un label al namespace.

Si nos fijamos, en color rojo he destacado que ahora tenemos inyectados dos contenedores por cada pod.

Ya tenemos todo correctamente desplegado. Ahora podemos hacer lo siguiente para revisar internamente como se ha construido uno de nuestros pods.

kubectl describe pods adservice-5c85cb4558-xzjzx

Hasta este punto hemos finalizado la instalación de Istio Envoy Proxy.

Aquí tenemos otra forma de revisar nuestro cluster a partir de un IDE de desarrollo, en este caso IntelliJ de Jetbrains. He usado el plugin Cloud Code.

Visualización y métricas

Para obtener información desde nuestros microservicios, podemos utilizar herramientas que nos brindan esos datos telemétricos. Para ello debemos buscar en el mismo directorio desde el cual instalamos el cliente de Istio, un directorio llamado samples y dentro de este buscamos addons.

Como podemos ver mediante estos archivos, tenemos la posibilidad de instalar estos habilitadores con el fin de obtener métricas e información sobre nuestras aplicaciones. Esto también lo pueden encontrar en el sitio de Istio. Aquí 😉

Instalando Complementos

Ejecutamos lo siguiente dependiendo de las rutas de sus computadores

kubectl apply -f istio-1.9.3/samples/addons

Una vez finalizada la creación de estos complementos debemos ejecutar lo siguiente

kubectl get pods -n istio-system

Ahora revisemos los servicios en el namespace istio-system

kubectl get svc -n istio-system

Para poder acceder a uno de los servicios expuestos debemos ejecutar un comando port-forward.

kubectl port-forward svc/kiali -n istio-system 20001

Ahora podemos abrir un navegador e ingresamos la dirección 127.0.0.1:20001 y podremos visualizar la interfaz gráfica de Kiali.

También podemos hacer lo mismo para grafana.

kubectl port-forward svc/grafana -n istio-system 3000

En este caso debemos abrir la UI de grafana en 127.0.0.1:3000

Es todo por ahora, espero que les guste y nos leemos en el próximo artículo.

Como siempre un gran abrazo y cuídense.

You may also like