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:
- Descargar e instalar Istio
- Instalar los CRDs del API Gateway de Kubernetes
- Desplegar la aplicación de ejemplo
- Abrir la aplicación al tráfico externo
- Ver el panel de control
Descargar Istio
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 -Muévete al directorio del paquete de Istio. Por ejemplo, si el paquete es
istio-1.29.0:$ cd istio-1.29.0El directorio de instalación contiene:
- Aplicaciones de ejemplo en
samples/ - El binario cliente
istioctlen el directoriobin/.
- Aplicaciones de ejemplo en
Agrega el cliente
istioctla 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.
Instala Istio usando el perfil
demo, sin ningún gateway:$ 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.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.
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.
Despliega la aplicación de ejemplo
Bookinfo:$ 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 createdLa 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 29sy
$ 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 2m41sNota que los Pods muestran
READY 2/2, confirmando que tienen su contenedor de aplicación y el contenedor sidecar de Istio.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.
Crea un Gateway de Kubernetes para la aplicación Bookinfo:
$ kubectl apply -f @samples/bookinfo/gateway-api/bookinfo-gateway.yaml@ gateway.gateway.networking.k8s.io/bookinfo-gateway created httproute.gateway.networking.k8s.io/bookinfo createdPor defecto, Istio crea un servicio
LoadBalancerpara 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.Cambia el tipo de servicio a
ClusterIPanotando el gateway:$ kubectl annotate gateway bookinfo-gateway networking.istio.io/service-type=ClusterIP --namespace=defaultPara 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:80Abre tu navegador y navega a http://localhost:8080/productpage para ver la 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.
Instala Kiali y los addons y espera a que se desplieguen.
$ 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 outAccede al dashboard de Kiali.
$ istioctl dashboard kialiEn 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
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:
- Enrutamiento de solicitudes
- Inyección de fallos
- Cambio de tráfico
- Consultar métricas
- Visualizar métricas
- Acceso a servicios externos
- Visualizar tu malla
Antes de personalizar Istio para su uso en producción, consulta estos recursos:
- Modelos de deployment
- Mejores prácticas de deployment
- Requisitos de Pod
- Instrucciones de instalación generales
Ú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.
$ kubectl delete -f @samples/addons@
$ istioctl uninstall -y --purgeEl 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-systemLa 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 -

