# Rancher - Istio
Istio es una malla de servicios de código abierto que se superpone de forma transparente a las aplicaciones distribuidas existentes. Las potentes funciones de Istio proporcionan una forma uniforme y más eficiente de proteger, conectar y supervisar los servicios. Además, Istio provee un servicio de malla para una alta redundancia.
## Instalar Istio
En esta guía instalaremos istio mediante _Rancher explorer_, para ello daremos clic en el botón _Explorer_ en la lista de _Clusters_ de _Rancher_.

Una vez que estes en el explorador de _Rancher_, despliega el menú superior izquierdo y selecciona _Apps & Marketplace_.

Al seleccionar esta opción, _Rancher_ desplegará una lista de las aplicaciones disponibles, dentro de esta lista selecciona _Istio_.

Una vez que selecciones _Istio_, _Rancher_ desplegará una ventana de configuración para la instalación, para instalar _Istio_ da clic en el botón _Install_.

Al dar clic en este botón, _Rancher_ abrirá una consola donde podrás visualizar la instalación, cuando la instalación termine podrás visualizar la opción de _Istio_ en el menú superior izquierdo.

## Aplicar _Service mesh_ a un deployment
Una vez que hayas instalado _Istio_, ahora aplicaremos _Mesh_ a un deployment existente, para ello iremos a la lista principal de _Clusters_ y seleccionaremos nuestro _Cluster_.

Dentro de nuestro _Cluster_ selecciona _Project/Namespaces_ en el menú superior.

_Rancher_ te mostrará una lista de los _Namespaces_ que actualmente contiene tu _Cluster_. Identifica el namespace donde se encuentra tu deployment, da clic en el botón con los 3 puntitos y da clic en _Edit_.

_Rancher_ te mostrará una ventana donde podrás actualizar la información del _Namespace_. Para poder implementar _Mesh_, debemos colocar una _label_ en el _namespace_. Para ello, dirigete a la sección _Labels & Annotation_ y da clic en el botón _Add Label_.

Una vez que hayas dado clic en este botón, ingresa la llave y el valor de la label, en este caso: `istio-injection=enabled` una vez que hayas agregado esta _Label_ da clic en el botón _Save_.

Al editar la información del _Namespace_ verás el logo de _Istio_ justo a un costado del nombre de tu _Namespace_.

Por último, tendrás que reiniciar los _Pods_ para que la configuración de _Mesh_ se agregué, para ello, ejecuta el siguiente comando:
```
kubectl -n <NAMESPACE> rollout restart <DEPLOYMENT-NAME>
```
Tras ejecutar el comando podrás ver un cambio en la lista de _Pods_ pues se aumentará el número de _Pods_.
## Acceder a métricas de _Istio_
_Istio_ nos proporciona una serie de métricas y gráficas para poder monitorear los servicios de _Mesh_ mediante el _Dashboard Kiali_. Para acceder da clic, en el botón _Explore_ en la lista de _Clusters_.

Posteriormente, selecciona la opción de _Istio_ en el menú superior izquierdo.

Al seleccionar _Istio_, podrás visualizar dos opciones, dentro de ellas _Kiali_, para acceder da clic en el hipervínculo de _Kiali_.

Al dar clic en el hipervínculo, _Rancher_ abrirá _Kiali_ dashboard en una nueva ventana, en el podrás observar los _namespaces_ de tus _Cluster_. Para acceder a una gráfica de un determinado _Namespace_, da clic en el botón de los 3 puntos y selecciona la opción _Graph_.

Posteriormente, da clic en el botón _Display idle nodes_.

Al dar clic en este botón, podrás observar la gráfica del _Namespace_ y del lado derecho un resumen de las peticiones a los servicios.

