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 carpetabin
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!