Instalando Istio en Windows 10

Publicado por Ricardo Cabrera Lozada el

Arquitectura de SolucionesIstioDockerKubernetes

El objetivo de este artículo está pensado para entornos locales de formación, desarrollo y pruebas, donde veremos cómo instalar Istio en Windows 10 y realizar pruebas con una aplicación de ejemplo.

¿Qué es Istio?

Istio es una implementación de Service Mesh o malla de servicios, de código abierto, y un complemento perfecto para Kubernetes y Docker. Las funcionalidades de Istio se dividen en cuatro grandes grupos: Conexión, Seguridad, Control y Observabilidad.

¿Qué es una malla de servicios?

El término malla de servicios se utiliza para describir la red de microservicios, las cuales se componen de dichas aplicaciones y las interacciones entre ellas. A medida que una malla de servicios crece en tamaño y complejidad, puede volverse más difícil de entender y administrar. Sus requisitos pueden incluir descubrimiento, equilibrio de carga, recuperación ante fallos, métricas y monitorización.

Requerimientos Previos

  • Windows 10 Professional o superior.
  • Docker 18.02 en adelante para Windows.
  • Kubernetes para Windows.
  • Conocimientos básicos de PowerShell, Docker y Kubernetes.

Instalando Istio

Puedes descargar la última versión de Istioctl e Istio desde https://github.com/istio/istio/releases con los nombres istio-1.9.0-win.zip y istioctl-1.9.0-win.zip

Establecer la variable de entorno

  • Copia la ruta absoluta de la carpeta bin istio-<Número_Versión> descargada previamente, por ejemplo, C:/istio-1.9.0-win/istio-1.9.0/bin
  • En la búsqueda de la barra de tareas, busca y abre "Editar las variables de entorno del sistema".
  • En Variables del usuario, edita la variable de entorno path y agrega una nueva entrada que apunte a la carpeta bin como se copió anteriormente. Guarda las entradas.

Test de istioctl

Para usar istioctl abre un cmd o PowerShell y ejecuta el comando istioctl

Para comprobar la versión, ejecuta el comando istioctl version

Ahora vamos a instalar el perfil demo, con el siguiente comando:

istioctl manifest apply --set profile=demo

Vemos que con el perfil demo tenemos una instalación bastante completa, con los componentes istiod, istio-ingressgateway e istio-egressgateway.

Si consultamos la página oficial de Istio podremos ver los Tipos de Perfiles

Desplegando la Aplicación Bookinfo

Para desplegar la aplicación es necesario tener arrancado Kubernetes.

Bookinfo

Esta aplicación se compone de cuatro microservicios separados y se utiliza para demostrar varias funciones de Istio. La aplicación muestra información sobre un libro, similar a una sola entrada de catálogo de una librería en línea. En la página se muestra una descripción del libro, los detalles del libro (ISBN, número de páginas, etc.) y algunas reseñas de libros.

1- Vamos a activar la inyección automática de los proxies Envoy, con el siguiente comando:

kubectl label namespace default istio-njection=enabled

2- Nos ubicamos en la carpeta cd istio-1.9.0

3- Desplegamos la aplicación usando el siguiente comando:

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

4- Verificamos que todos los servicios estén implementados y que los pods están en estado de ejecución:

kubectl get services
kubectl get pods

5- Establecemos el gateway para la aplicación:

kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

6- Confirmamos que el gateway se ha creado:

kubectl get gateway

Vamos a determinar la IP de entrada y los puertos y veremos external-ip como localhost.

7- Confirmamos que el gateway se ha creado:

kubectl get svc istio-ingressgateway -n istio-system

Lo que significa que tenemos que asignar el puerto 8080 al puerto 80 del servicio istio-ingressgateway.

kubectl port-forward svc/istio-ingressgateway 8080:80 -n istio-system

¡Enhorabuena! Esa es toda la configuración, ahora puedes ir a http://localhost:8080/productpage para ver la aplicación BookInfo implementada usando Istio.

Kiali Dashboard

Para visualizar el panel de kiali ejecutamos el siguiente comando:

kubectl dashboard kiali
  • Usuario: admin
  • Contraseña: admin

Grafana Dashboard

Para visualizar el panel de Grafana ejecutamos el siguiente comando:

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.9/samples/addons/grafana.yaml
istioctl  dashboard grafana

Si accededemos a http://localhost:3000/dashboard/db/istio-mesh-dashboard

El Dashboard de Grafana debe ser similar a:

Prometheus Dashboard

Para visualizar el panel de Prometheus ejecutamos el siguiente comando:

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.9/samples/addons/prometheus.yaml
istioctl  dashboard prometheus

Conclusiones

Como hemos visto es bastante sencillo instalar Istio. Ahora, con estos pasos deberías tener un entorno de Kubernetes en funcionamiento, junto con Istio y Kiali habilitados. Puede usarse como entorno de pruebas, para desarrollar y probar tus aplicaciones en Kubernetes. Con Istio y Kiali, también puedes jugar con Service Mesh. Todo se ejecuta localmente en "una sola caja".

Si te ha gustado, ¡síguenos en Twitter para estar al día de próximos posts!