Comenzando

Esta guía te permite evaluar Istio rápidamente. Si ya estás familiarizado con Istio o estás interesado en instalar otros perfiles de configuración o modelos de deployment avanzados, consulta nuestra página de FAQ sobre ¿qué método de instalación de Istio debería usar?.

Necesitarás un cluster de Kubernetes para continuar. Si no tienes un cluster, puedes usar kind o cualquier otra plataforma de Kubernetes soportada.

Sigue estos pasos para comenzar con Istio:

  1. Descargar e instalar Istio
  2. Instalar los CRDs del API Gateway de Kubernetes
  3. Desplegar la aplicación de ejemplo
  4. Abrir la aplicación al tráfico externo
  5. Ver el panel de control

Descargar Istio

  1. Ve a la página de releases de Istio para descargar el archivo de instalación para tu sistema operativo, o descarga y extrae el release más reciente automáticamente (Linux o macOS):

    $ curl -L https://istio.io/downloadIstio | sh -
  2. Muévete al directorio del paquete de Istio. Por ejemplo, si el paquete es istio-1.29.0:

    $ cd istio-1.29.0

    El directorio de instalación contiene:

    • Aplicaciones de ejemplo en samples/
    • El binario cliente istioctl en el directorio bin/.
  3. Agrega el cliente istioctl a tu path (Linux o macOS):

    $ export PATH=$PWD/bin:$PATH

Instalar Istio

Para esta guía, usamos el perfil de configuración demo. Está seleccionado para tener un buen conjunto de valores por defecto para pruebas, pero hay otros perfiles para producción, pruebas de rendimiento o OpenShift.

A diferencia de los Gateways de Istio, crear Gateways de Kubernetes por defecto también desplegará servidores proxy de gateway. Debido a que no se usarán, deshabilitamos el deployment de los Services gateway predeterminados de Istio que normalmente se instalan como parte del perfil demo.

  1. Instala Istio usando el perfil demo, sin ningún gateway:

    Zip
    $ istioctl install -f @samples/bookinfo/demo-profile-no-gateways.yaml@ -y
    ✔ Istio core installed
    ✔ Istiod installed
    ✔ Installation complete
    Made this installation the default for injection and validation.
  2. Agrega una etiqueta de Namespace para instruir a Istio que inyecte automáticamente proxies sidecar de Envoy cuando despliegues tu aplicación más adelante:

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

Instalar los CRDs del API Gateway de Kubernetes

Los CRDs del API Gateway de Kubernetes no vienen instalados por defecto en la mayoría de los clusters de Kubernetes, así que asegúrate de que estén instalados antes de usar el Gateway API.

  1. Instala los CRDs del Gateway API, si no están ya presentes:

    $ kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
    { kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v1.4.0" | kubectl apply -f -; }

Desplegar la aplicación de ejemplo

Has configurado Istio para inyectar contenedores sidecar en cualquier aplicación que despliegues en tu Namespace default.

  1. Despliega la aplicación de ejemplo Bookinfo:

    Zip
    $ kubectl apply -f @samples/bookinfo/platform/kube/bookinfo.yaml@
    service/details created
    serviceaccount/bookinfo-details created
    deployment.apps/details-v1 created
    service/ratings created
    serviceaccount/bookinfo-ratings created
    deployment.apps/ratings-v1 created
    service/reviews created
    serviceaccount/bookinfo-reviews created
    deployment.apps/reviews-v1 created
    deployment.apps/reviews-v2 created
    deployment.apps/reviews-v3 created
    service/productpage created
    serviceaccount/bookinfo-productpage created
    deployment.apps/productpage-v1 created

    La aplicación se iniciará. A medida que cada Pod esté listo, el sidecar de Istio será desplegado junto con él.

    $ kubectl get services
    NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    details       ClusterIP   10.0.0.212      <none>        9080/TCP   29s
    kubernetes    ClusterIP   10.0.0.1        <none>        443/TCP    25m
    productpage   ClusterIP   10.0.0.57       <none>        9080/TCP   28s
    ratings       ClusterIP   10.0.0.33       <none>        9080/TCP   29s
    reviews       ClusterIP   10.0.0.28       <none>        9080/TCP   29s

    y

    $ kubectl get pods
    NAME                              READY   STATUS    RESTARTS   AGE
    details-v1-558b8b4b76-2llld       2/2     Running   0          2m41s
    productpage-v1-6987489c74-lpkgl   2/2     Running   0          2m40s
    ratings-v1-7dc98c7588-vzftc       2/2     Running   0          2m41s
    reviews-v1-7f99cc4496-gdxfn       2/2     Running   0          2m41s
    reviews-v2-7d79d5bd5d-8zzqd       2/2     Running   0          2m41s
    reviews-v3-7dbcdcbc56-m8dph       2/2     Running   0          2m41s

    Nota que los Pods muestran READY 2/2, confirmando que tienen su contenedor de aplicación y el contenedor sidecar de Istio.

  2. Valida que la aplicación esté corriendo dentro del cluster comprobando el título de la página en la respuesta:

    $ kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"
    <title>Simple Bookstore App</title>

Abrir la aplicación al tráfico externo

La aplicación Bookinfo está desplegada, pero no es accesible desde el exterior. Para hacerla accesible, necesitas crear un gateway de ingreso, que mapea un camino a una ruta en el borde de tu malla.

  1. Crea un Gateway de Kubernetes para la aplicación Bookinfo:

    Zip
    $ kubectl apply -f @samples/bookinfo/gateway-api/bookinfo-gateway.yaml@
    gateway.gateway.networking.k8s.io/bookinfo-gateway created
    httproute.gateway.networking.k8s.io/bookinfo created

    Por defecto, Istio crea un servicio LoadBalancer para un gateway. Como accederemos a este gateway por un túnel, no necesitamos un balanceador de carga. Si quieres aprender sobre cómo se configuran los balanceadores de carga para direcciones IP externas, lee la documentación sobre gateways de ingreso.

  2. Cambia el tipo de servicio a ClusterIP anotando el gateway:

    $ kubectl annotate gateway bookinfo-gateway networking.istio.io/service-type=ClusterIP --namespace=default
  3. Para verificar el estado del gateway, ejecuta:

    $ kubectl get gateway
    NAME               CLASS   ADDRESS                                            PROGRAMMED   AGE
    bookinfo-gateway   istio   bookinfo-gateway-istio.default.svc.cluster.local   True         42s

Acceder a la aplicación

Conectarás al servicio productpage de Bookinfo a través del gateway que acabas de provisionar. Para acceder al gateway, necesitas usar el comando kubectl port-forward:

$ kubectl port-forward svc/bookinfo-gateway-istio 8080:80

Abre tu navegador y navega a http://localhost:8080/productpage para ver la aplicación Bookinfo.

Aplicación Bookinfo
Aplicación Bookinfo

Si refrescas la página, deberías ver que las reseñas y las calificaciones cambian a medida que las solicitudes se distribuyen entre las diferentes versiones del servicio reviews.

Ver el panel de control

Istio integra con varias aplicaciones de telemetría. Estas pueden ayudarte a entender la estructura de tu meshde servicios, mostrar la topología de la mesh y analizar la salud de tu malla.

Usa las siguientes instrucciones para desplegar el Kiali, junto con Prometheus, Grafana, y Jaeger.

  1. Instala Kiali y los addons y espera a que se desplieguen.

    Zip
    $ kubectl apply -f @samples/addons@
    $ kubectl rollout status deployment/kiali -n istio-system
    Waiting for deployment "kiali" rollout to finish: 0 of 1 updated replicas are available...
    deployment "kiali" successfully rolled out
  2. Accede al dashboard de Kiali.

    $ istioctl dashboard kiali
  3. En el menú de navegación izquierdo, selecciona Graph y en el desplegable Namespace, selecciona default.

    El dashboard de Kiali muestra una vista general de tu meshcon las relaciones entre los servicios en la aplicación de ejemplo Bookinfo. También proporciona filtros para visualizar el flujo de tráfico.

    Dashboard de Kiali
    Dashboard de Kiali

Pasos siguientes

¡Felicitaciones por completar la instalación de evaluación!

Estos son un excelente lugar para que los principiantes evalúen más a fondo las características de Istio usando esta instalación demo:

Antes de personalizar Istio para su uso en producción, consulta estos recursos:

Únete a la comunidad de Istio

¡Te damos la bienvenida a que nos preguntes y nos des tu feedback uniendo la comunidad de Istio.

Desinstalar

Para eliminar la aplicación de ejemplo Bookinfo y su configuración, consulta Bookinfo limpieza.

La desinstalación de Istio elimina los permisos RBAC y todos los recursos jerárquicamente bajo el espacio de nombres istio-system. Es seguro ignorar errores por recursos inexistentes porque pueden haber sido eliminados jerárquicamente.

Zip
$ kubectl delete -f @samples/addons@
$ istioctl uninstall -y --purge

El espacio de nombres istio-system no se elimina por defecto. Si ya no es necesario, usa el siguiente comando para eliminarlo:

$ kubectl delete namespace istio-system

La etiqueta para instruir a Istio a inyectar automáticamente proxies sidecar no se elimina por defecto. Si ya no es necesario, usa el siguiente comando para eliminarlo:

$ kubectl label namespace default istio-injection-

Si instalaste los CRDs del API Gateway de Kubernetes y ahora quieres eliminarlos, ejecuta uno de los siguientes comandos:

  • Si ejecutaste tareas que requerían la versión experimental de los CRDs:

    $ kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v1.4.0" | kubectl delete -f -
  • De lo contrario:

    $ kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v1.4.0" | kubectl delete -f -
¿Fue útil esta información?
¿Tienes alguna sugerencia para mejorar?

¡Gracias por tus comentarios!