GSP654
Descripción general
Istio es un framework de código abierto para conectar, proteger y administrar microservicios. Se puede usar con cualquier servicio, incluidos, entre otros, aquellos alojados en un clúster de Kubernetes. Con Istio, puedes crear una red de servicios implementados con balanceo de cargas, autenticación entre servicios, supervisión y mucho más, sin modificar el código de los servicios.
Por ejemplo, en sistemas distribuidos confiables, es común que un sistema quiera reintentar una solicitud después de una falla, posiblemente con un retraso por retirada exponencial. Si bien hay bibliotecas para Java, Golang y Node.js que integran esta funcionalidad, utilizarlas en apps implica resolver este problema en cada una de ellas de forma independiente. En cambio, el proxy sidecar de Istio puede encargarse de este proceso automáticamente por las apps.
Cloud Service Mesh
Cloud Service Mesh (CSM) utiliza la tecnología de Istio para brindar una distribución con asistencia completa y probada en ámbitos empresariales. Con esta herramienta, podrás crear e implementar mallas de servicios con GKE Enterprise, ya sea que los clústeres se ejecuten en Google Cloud o de forma local.
Puedes usar los perfiles de configuración incluidos en la configuración recomendada y personalizada para Google Kubernetes Engine o GKE on Bare Metal.
Por último, Cloud Service Mesh tiene un conjunto de funciones y herramientas adicionales que te ayudan a observar y administrar servicios confiables y seguros de forma unificada:
-
Las métricas y los registros de servicio del tráfico HTTP(S) en el clúster de GKE de tu malla se transfieren automáticamente a Google Cloud.
- Los paneles de servicio preconfigurados te proporcionan la información que necesitas para comprender los servicios.
- La telemetría detallada te permite profundizar en tus métricas y registros filtrando y dividiendo tus datos en función de diversos atributos.
- Las relaciones entre servicios te ayudan a comprender de un vistazo quiénes se conectan a determinados servicios y los servicios de los que depende cada uno.
- Los objetivos de nivel de servicio (SLO) proporcionan estadísticas sobre el estado de tus servicios. Puedes definir con facilidad un SLO y una alerta en función de tus propios criterios sobre el estado de los servicios.
Cloud Service Mesh es la manera más fácil y completa de implementar una malla de servicios basada en Istio en tus clústeres de GKE Enterprise.
En este lab, instalarás Cloud Service Mesh en un clúster de GKE.
Aprendizajes esperados
En este lab, aprenderás a realizar las siguientes tareas:
- Aprovisionar un clúster en Google Kubernetes Engine (GKE)
- Instalar y configurar Cloud Service Mesh
- Implementar Bookinfo, una aplicación de múltiples servicios habilitada para Istio
- Habilitar el acceso externo usando una puerta de enlace de entrada de Istio
- Usa la aplicación de Bookinfo
- Supervisar el rendimiento del servicio con el panel de Cloud Service Mesh
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la derecha, se encuentra el panel Configuración del lab y acceso, que tiene los siguientes elementos:
- El botón Abrir la consola de Google Cloud
- Las credenciales temporales (nombre de usuario y contraseña) que debes usar para este lab
- Otra información para completar el lab (si es necesaria)
Ten en cuenta que el cronómetro del lab se encuentra cerca de la parte superior de la página y muestra el tiempo restante.
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia los recursos y abre otra pestaña, en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usa otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Configuración del lab y acceso.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Configuración del lab y acceso.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación ni autenticación de dos factores, ya que esta cuenta es temporal.
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Activa Cloud Shell
Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
-
Haz clic en Activar Cloud Shell
en la parte superior de la consola de Google Cloud.
-
Haz clic para avanzar por las siguientes ventanas:
- Continúa en la ventana de información de Cloud Shell.
- Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu Project_ID, . El resultado contiene una línea que declara el Project_ID para esta sesión:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
- Haz clic en Autorizar.
Resultado:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project
Resultado:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Nota: Para obtener toda la documentación de gcloud, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.
Tarea 1: Configura tu proyecto
Verifica la configuración del SDK
-
En Cloud Shell, verifica que esté configurada tu cuenta predeterminada.
Verifica que el SDK de Cloud esté configurado para usar tu cuenta de usuario generada por Qwiklabs.
gcloud config list
Resultado:
[component_manager]
disable_update_check = True
[compute]
gce_metadata_read_timeout_sec = 5
[core]
account = student-xx-xxxx@qwiklabs.net
disable_usage_reporting = False
project = qwiklabs-gcp-yy-####
[metrics]
environment = devshell
Your active configuration is: [cloudshell-#####]
-
Actualiza la configuración del proyecto si es necesario.
Si el SDK no tiene el proyecto predeterminado configurado de forma correcta, actualiza la configuración. Reemplaza [project_id] por el nombre del proyecto que se proporcionó en la sección de credenciales de la página de instrucciones de Qwiklabs:
gcloud config set project [project_id]
Configura las variables de entorno
- Configura las variables de entorno que se usarán en los comandos de instalación y configuración:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} \
--format="value(projectNumber)")
export CLUSTER_NAME=central
export CLUSTER_ZONE={{{project_0.default_zone | zone}}}
export WORKLOAD_POOL=${PROJECT_ID}.svc.id.goog
export MESH_ID="proj-${PROJECT_NUMBER}"
Nota:
- Se usará WORKLOAD_POOL para habilitar Workload Identity, que
es la forma recomendada para acceder de manera segura a los servicios de Google Cloud desde las aplicaciones
de GKE.
- Se usará MESH_ID para configurar la
etiqueta mesh_id en el clúster, lo cual es necesario para
que se muestren las métricas en el panel de Cloud Service Mesh en
la consola de Cloud.
Verifica si tienes permisos suficientes
- En Cloud Shell, verifica que tu cuenta de usuario tenga asignado el rol Propietario.
gcloud projects get-iam-policy $PROJECT_ID \
--flatten="bindings[].members" \
--filter="bindings.members:user:$(gcloud config get-value core/account 2>/dev/null)"
Resultado:
bindings:
members: user:student-xx-xxxx@qwiklabs.net
role: roles/owner
...
Nota: Tu usuario de estudiante también posee privilegios de visualizador.
Nota: Para completar la configuración, necesitas los permisos asociados con los siguientes roles:
- Editor del proyecto
- Administrador de Kubernetes Engine
- Administrador de IAM del proyecto
- Administrador de GKE Hub
- Administrador de cuentas de servicio
- Administrador de claves de cuentas de servicio
Si tienes el rol Propietario, cuentas con todos estos permisos y más,
por lo que ya puedes continuar.
Tarea 2: Configura tu clúster de GKE
Crea el clúster
- Ejecuta el siguiente comando en Cloud Shell para crear el clúster de Kubernetes denominado
central:
gcloud config set compute/zone ${CLUSTER_ZONE}
gcloud container clusters create ${CLUSTER_NAME} \
--machine-type=e2-standard-4 \
--num-nodes=4 \
--subnetwork=default \
--release-channel=regular \
--labels mesh_id=${MESH_ID} \
--workload-pool=${WORKLOAD_POOL} \
--logging=SYSTEM,WORKLOAD
Resultado:
NAME: central
LOCATION: {{{project0.default_zone | zone}}}
MASTER_VERSION: 1.35.3-gke.2190000
MASTER_IP: 35.245.2.147
MACHINE_TYPE: e2-standard-4
NODE_VERSION: 1.35.3-gke.2190000
NUM_NODES: 4
STATUS: RUNNING
El clúster tardará varios minutos en crearse.
- Una vez que se complete la creación del clúster, ejecuta esta secuencia de comandos para activar
fleet service mesh, establecer tus permisos de administrador y configurar el espacio de nombres istio-system.
gcloud container fleet mesh enable
kubectl create clusterrolebinding cluster-admin-binding \
--clusterrole=cluster-admin \
--user=$(gcloud config get-value account)
kubectl create namespace istio-system
- Configura kubectl para que apunte al clúster.
gcloud container clusters get-credentials ${CLUSTER_NAME} \
--zone $CLUSTER_ZONE \
--project $PROJECT_ID
Tarea 3: Prepárate para instalar Cloud Service Mesh
Google proporciona la herramienta asmcli para instalar o actualizar Cloud Service Mesh. Si lo permites, asmcli configurará tu proyecto y clúster de la siguiente manera:
- Te otorgará los permisos de Identity and Access Management (IAM) necesarios en tu proyecto de Google Cloud.
- Habilitará las API de Google necesarias en tu proyecto de Cloud.
- Configurará una etiqueta en el clúster que identifique la malla.
- Creará una cuenta de servicio que permita que los componentes del plano de datos, como el proxy sidecar, accedan a los datos y recursos del proyecto de forma segura.
- Registrará el clúster en la flota si aún no está registrado.
Deberás usar asmcli para instalar Cloud Service Mesh en tu clúster.
- Descarga la versión que instala Cloud Service Mesh 1.28 en el directorio de trabajo actual:
curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.28 > asmcli
- Haz que la secuencia de comandos sea ejecutable:
chmod +x asmcli
- Habilita la API de Service Mesh:
gcloud services enable mesh.googleapis.com
Tarea 4: Valida Cloud Service Mesh
El comando asmcli validate permite verificar que el proyecto y el clúster tengan la configuración necesaria para instalar Cloud Service Mesh. Con esta opción, asmcli no realiza ningún cambio en tu proyecto o clúster, ni instala Cloud Service Mesh.
La herramienta asmcli valida lo siguiente:
- Si tu entorno tiene las herramientas necesarias
- Si el clúster cumple con los requisitos mínimos
- Si tienes los permisos necesarios en el proyecto especificado
- Si el proyecto tiene habilitadas todas las APIs de Google necesarias
- Ejecuta el siguiente comando para validar tu configuración y descargar el archivo de instalación y el paquete
asm en el directorio OUTPUT_DIR.
./asmcli validate \
--project_id $PROJECT_ID \
--cluster_name $CLUSTER_NAME \
--cluster_location $CLUSTER_ZONE \
--fleet_id $PROJECT_ID \
--output_dir ./asm_output
Nota: Pasa por alto los errores de validación, ya que, en este caso, el validador está confirmando que el clúster tiene todos los componentes necesarios para instalar CSM, no que se haya instalado correctamente.
Si el comando se ejecuta correctamente, deberías tener un resultado como este:
asmcli: Setting up necessary files...
asmcli: Using asm_kubeconfig as the kubeconfig...
asmcli: Checking installation tool dependencies...
asmcli: Fetching/writing GCP credentials to kubeconfig file...
asmcli: Verifying connectivity (10s)...
asmcli: kubeconfig set to asm_kubeconfig
asmcli: using context gke_example-project-12345_us-west1_cluster-2
asmcli: Getting account information...
asmcli: Downloading ASM..
asmcli: Downloading ASM kpt package...
fetching package "/asm" from "https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages" to "asm"
asmcli: Checking required APIs...
asmcli: Checking for project example-project-12345...
asmcli: Reading labels for us-west1/cluster-2...
asmcli: Checking for istio-system namespace...
asmcli: Confirming node pool requirements for example-project-12345/us-west1/cluster-2...
asmcli: Checking Istio installations...
asmcli: [WARNING]: There is no way to validate that the meshconfig API has been initialized.
asmcli: [WARNING]: This needs to happen once per GCP project. If the API has not been initialized
asmcli: [WARNING]: for example-project-12345, please re-run this tool with the --enable_gcp_components
asmcli: [WARNING]: flag. Otherwise, installation will succeed but Cloud Service Mesh
asmcli: [WARNING]: will not function correctly.
asmcli: Successfully validated all requirements to install ASM.
Nota: En este lab, se proporcionarán las marcas necesarias para abordar las advertencias provenientes del comando de validación.
Tarea 5: Instala Cloud Service Mesh
Con el siguiente comando, se instala Cloud Service Mesh. La marca --enable_all permite que la secuencia de comandos habilite las API de Google obligatorias, configure los permisos de Identity and Access Management y realice las actualizaciones necesarias en tu clúster, lo que incluye habilitar GKE Workload Identity.
- Ejecuta el siguiente comando para instalar Cloud Service Mesh:
./asmcli install \
--project_id $PROJECT_ID \
--cluster_name $CLUSTER_NAME \
--cluster_location $CLUSTER_ZONE \
--fleet_id $PROJECT_ID \
--output_dir ./asm_output \
--enable_all \
--option legacy-default-ingressgateway \
--ca mesh_ca \
--enable_gcp_components
Deberías ver un resultado similar al siguiente:
asmcli: *****************************
asmcli: Successfully installed ASM.
Haz clic en Revisar mi progreso para verificar el objetivo. Instalar Cloud Service Mesh
Instala una puerta de enlace de entrada
Cloud Service Mesh permite implementar y administrar puertas de enlace como parte de la malla de servicios. Una puerta de enlace describe un balanceador de cargas que opera en el perímetro de la malla que recibe conexiones HTTP/TCP entrantes o salientes. Las puertas de enlace son proxies de Envoy que permiten controlar de forma detallada el tráfico que entra y sale de la malla.
- Crea un espacio de nombres para la puerta de enlace de entrada si aún no tienes uno. Las puertas de enlace son cargas de trabajo de usuarios y, como práctica recomendada, no deben implementarse en el espacio de nombres del plano de control.
GATEWAY_NS=istio-gateway
kubectl create namespace $GATEWAY_NS
-
Aplica una etiqueta de revisión en el espacio de nombre de la puerta de enlace para habilitar la inserción automática en la puerta de enlace. El webhook de inserción de sidecar usa la etiqueta de revisión para asociar los proxies insertados con una revisión de plano de control en particular.
- Usa el siguiente comando para encontrar la etiqueta de revisión en
istiod:
kubectl get deploy -n istio-system -l app=istiod -o \
jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'
- Almacena ese valor en una variable de entorno:
REVISION=$(kubectl get deploy -n istio-system -l app=istiod -o \
jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
- Aplica la etiqueta de revisión al espacio de nombres. En el siguiente comando, REVISION corresponde al valor de la etiqueta revision de istiod que anotaste en el paso anterior.
kubectl label namespace $GATEWAY_NS \
istio.io/rev=$REVISION --overwrite
- Habilita la inserción del proxy de Istio
kubectl label namespace default istio-injection=enabled
kubectl label namespace $GATEWAY_NS istio-injection=enabled
-
Cambia al directorio que especificaste en --output_dir.
cd ~/asm_output
- Puedes implementar la configuración de la puerta de enlace de entrada de ejemplo que se ubica en el directorio
samples/gateways/istio-ingressgateway/ tal como está o modificarla según sea necesario:
kubectl apply -n $GATEWAY_NS \
-f samples/gateways/istio-ingressgateway
Habilita la inserción de sidecar
Cloud Service Mesh usa proxies sidecar para mejorar la seguridad, la confiabilidad y la observabilidad de la red. Con Cloud Service Mesh, estas funciones se extraen del contenedor principal de una aplicación y se implementan en un proxy común fuera del proceso, que se entrega como un contenedor separado en el mismo Pod.
-
Antes de implementar las cargas de trabajo, asegúrate de configurar la inserción del proxy sidecar para que Cloud Service Mesh pueda supervisar y proteger el tráfico.
-
Para habilitar la inserción automática, aplica la etiqueta de revisión y quita la etiqueta istio-injection si es que existe.
-
En el siguiente comando, debes especificar el espacio de nombres, default, en la ubicación en que desees habilitar la inserción automática. REVISION corresponde a la etiqueta revision que anotaste en el paso anterior:
kubectl label namespace default istio-injection-istio.io/rev=$REVISION --overwrite
Nota: Puedes pasar por alto el mensaje "istio-injection" not found en el resultado. Significa que el espacio de nombres no tenía la etiqueta istio-injection, que debería aparecer en las nuevas instalaciones de Cloud Service Mesh o en implementaciones nuevas.
Nota: Ahora la inserción del proxy sidecar está habilitada para futuras cargas de trabajo.
Si ya se estaban ejecutando cargas de trabajo en el clúster, tendrás que reiniciar los Pods para volver a activar la inserción automática.
Tarea 6: Implementa Bookinfo, una aplicación de varios servicios habilitada para Istio
En esta tarea, configurarás y explorarás la app de microservicios de muestra, Bookinfo.
Descripción general de Bookinfo
Ahora que CSM está configurado y verificado, puedes implementar una de las aplicaciones de ejemplo que se incluyeron en la instalación: Bookinfo. Se trata de una aplicación sencilla que simula una librería formada por cuatro microservicios, todo administrado con Istio. Cada microservicio está escrito en un lenguaje diferente para demostrar que puedes usar Istio en un entorno de varios lenguajes sin modificar el código.
Estos son los microservicios:
-
productpage: Llama a los microservicios details y reviews para completar la página.
-
details: Contiene información sobre libros.
-
reviews: Contiene opiniones sobre libros. También llama al microservicio ratings.
-
ratings: Contiene información de clasificación que acompaña a las opiniones sobre los libros.
El microservicio reviews tiene 3 versiones:
- Reviews v1 no llama al servicio de calificaciones.
- Reviews v2 llama al servicio de calificaciones y muestra cada calificación con 1 a 5 estrellas negras.
- Reviews v3 llama al servicio de calificaciones y muestra cada calificación con 1 a 5 estrellas rojas.
La arquitectura de extremo a extremo de la aplicación se ve así:

Puedes encontrar el código fuente y todos los demás archivos usados en este ejemplo en el directorio de Istio samples/bookinfo.
Implementa Bookinfo
-
Observa el archivo .yaml que describe la aplicación Bookinfo:
istio_dir=$(ls -d istio-* | tail -n 1)
cd $istio_dir
cat samples/bookinfo/platform/kube/bookinfo.yaml
Busca containers para ver que cada implementación tenga un contenedor por cada versión de cada servicio de la aplicación Bookinfo.
-
En Cloud Shell, usa el comando inject para insertar el sidecar del proxy junto con cada Pod de la aplicación que se implemente.
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Nota: Istio usa una versión extendida del proxy de Envoy de código abierto, un proxy de alto rendimiento desarrollado en C++, para mediar todo el tráfico de entrada y de salida de todos los servicios ubicados en la malla de servicios.
Istio aprovecha las muchas funciones integradas de Envoy, incluidos el descubrimiento de servicios dinámico, el balanceo de cargas, la terminación de TLS, los proxies HTTP/2 y gRPC, los interruptores de circuitos, las verificaciones de estado, los lanzamientos en etapas con divisiones de tráfico basadas en porcentajes, la inyección de errores y las métricas detalladas.
Resultado:
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
Haz clic en Revisar mi progreso para verificar el objetivo. Implementar la aplicación de Bookinfo
Habilita el acceso externo usando una puerta de enlace de entrada de Istio
Ahora que los servicios de Bookinfo están en funcionamiento, debes permitir el acceso a la aplicación desde fuera de tu clúster de Kubernetes, p. ej., desde un navegador. Para ello, se usa una puerta de enlace de Istio.
-
Observa el archivo .yaml, que describe la configuración para la puerta de enlace de entrada de la aplicación:
cat samples/bookinfo/networking/bookinfo-gateway.yaml
Busca los recursos de malla Gateway y VirtualService que se implementarán. Gateway expone los servicios a los usuarios fuera de la malla de servicios y permite funciones de Istio, como reglas de enrutamiento y supervisión que se aplicarán al tráfico que ingresa al clúster.
-
Configura la puerta de enlace de entrada para la aplicación, la cual expone una IP externa que usarás más adelante:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
Resultado:
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created
Verifica las implementaciones de Bookinfo
-
Confirma que la aplicación se haya implementado correctamente y revisa los servicios, los Pods y la puerta de enlace de entrada:
kubectl get services
Resultado:
NAME TYPE ...
details ClusterIP ...
kubernetes ClusterIP ...
productpage ClusterIP ...
ratings ClusterIP ...
reviews ClusterIP ...
-
Revisa los Pods de la aplicación en ejecución:
kubectl get pods
Resultado:
NAME READY STATUS RESTARTS AGE
details-v1-79f774bdb9-6l54w 2/2 Running 0 101s
productpage-v1-6b746f74dc-4xccm 2/2 Running 0 100s
ratings-v1-b6994bb9-7g4z2 2/2 Running 0 100s
reviews-v1-545db77b95-hkh9p 2/2 Running 0 100s
reviews-v2-7bf8c9648f-cmsxj 2/2 Running 0 100s
reviews-v3-84779c7bbc-8b8qp 2/2 Running 0 100s
Es posible que debas ejecutar de nuevo este comando hasta que el estado de los seis Pods sea Running.
-
Confirma que la aplicación de Bookinfo esté en ejecución. Para ello, envía una solicitud curl desde algún Pod que esté dentro del clúster, por ejemplo, desde ratings:
kubectl exec -it $(kubectl get pod -l app=ratings \
-o jsonpath='{.items[0].metadata.name}') \
-c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"
Resultado:
App sencilla de Bookstore
-
Confirma que se haya creado la puerta de enlace de entrada.
kubectl get gateway
Resultado:
NAME AGE
bookinfo-gateway 20m
-
Obtén la dirección IP externa de la puerta de enlace de entrada:
kubectl get svc istio-ingressgateway -n istio-system
Resultado:
NAME TYPE ... EXTERNAL-IP ...
istio-ingressgateway LoadBalancer ... 34.72.220.30 ...
En este ejemplo, la IP externa de la puerta de enlace de entrada es 34.72.220.30.
-
Ahora, ejecuta el siguiente comando, en el que debes reemplazar [IP-EXTERNA] por la IP externa que obtuviste con el comando anterior:
export GATEWAY_URL=[EXTERNAL-IP]
-
Verifica que la app de Bookinfo esté en ejecución. Para ello, envía una solicitud de curl desde fuera del clúster:
curl -I http://${GATEWAY_URL}/productpage
Resultado:
HTTP/1.1 200 OK
content-type: text/html; charset=utf-8
content-length: 4183
server: istio-envoy
...
Tarea 7: Usa la aplicación de Bookinfo
Prueba la aplicación en tu navegador web
-
En tu navegador, ingresa a http://[$GATEWAY_URL]/productpage para ver la página web de Bookinfo. No olvides reemplazar [$GATEWAY_URL] por tu dirección IP externa actual.

-
Actualiza la página varias veces.
Observa que se muestran tres versiones diferentes del servicio de opiniones, ya que aún no usamos Istio para controlar el enrutamiento de versiones.
Se llama a tres servicios diferentes de opiniones sobre libros según el algoritmo round robin:
- ninguna estrella
- estrellas negras
- estrellas rojas
El comportamiento normal de balanceo/enrutamiento de Kubernetes es alternar entre estos tres servicios.
Genera una carga constante en segundo plano
Ejecuta la utilidad siege para simular tráfico a Bookinfo.
-
En Cloud Shell, instala siege.
Siege es una utilidad para generar carga en sitios web.
sudo apt install siege
-
Usa siege para crear tráfico en tus servicios.
siege http://${GATEWAY_URL}/productpage
Tarea 8: Evalúa el rendimiento de los servicios con el panel de Cloud Service Mesh
Recopila datos desde la vista de tabla de Servicios
- En la consola, ve al menú de navegación > Kubernetes Engine > Malla de servicios.
Si se te solicita, haz clic en Habilitar para habilitar la API de Service Mesh.
-
Consulta la sección Servicios.
¿Cuántos servicios hay en la lista?
-
Haz clic en el servicio productpage para desglosarlo y ver más detalles.

Observa el resumen de la parte superior, en el que se detallan los valores actuales de solicitudes por segundo, tasa de errores, latencia y uso de recursos.
Si no ves Solicitudes > 0, intenta salir del servicio productpage y volver a ingresar luego de unos minutos.
-
Haz clic en la opción Métricas. Explora los distintos gráficos y sus opciones de desglose.
- ¿Cuál es el porcentaje de solicitudes actual y cómo cambió con el tiempo?
- ¿Cuál es la tasa de errores actual y cómo cambió con el tiempo?
- ¿Qué latencias ves en el gráfico?
- ¿Cuál es la mediana del tamaño de las solicitudes?
- ¿Cuál es la mediana del tamaño de las respuestas?
- ¿Cuál es el uso total de la CPU?
-
Haz clic en la opción Servicios conectados.
Aquí se muestran otros servicios que realizan solicitudes entrantes a productpage y los servicios a los que productpage realiza solicitudes salientes.
- ¿Qué servicios llaman al servicio productpage?
- ¿A qué servicios llama el servicio productpage?
- ¿Se aplica mTLS en las llamadas entre servicios?
Nota: El servicio ratings por lo general no envían solicitudes al servicio productpage. El servicio ratings se muestra aquí porque
lo usaste para enviar una solicitud de prueba como parte de este lab.
-
Haz clic en el logotipo de Cloud Service Mesh, en la esquina superior izquierda, para regresar al panel.
Ahora puedes explorar o desglosar otros servicios.
Nota: La sección superior del panel muestra información sobre los objetivos de nivel de servicio (SLO) y las alertas.
Los SLO son los objetivos de los indicadores de nivel de servicio (SLI); representan tu
definición del rendimiento adecuado de un servicio. Un ejemplo de SLO sería que el 99.9%
de las solicitudes por hora devuelvan un código de respuesta 200. Puedes definir una política de alertas que avise al personal de guardia si tu servicio no cumple con los SLO.
Busca otros labs donde puedas definir y probar los SLO.
Usa la vista de topología para visualizar mejor tu malla
-
Visualiza la topología en el panel de Cloud Service Mesh.
Es posible que debas esperar unos minutos a que aparezca el gráfico de topología.
-
Reorganiza los nodos en el gráfico hasta que puedas visualizar con facilidad las relaciones entre los servicios y las cargas de trabajo.
Recuerda que las solicitudes externas comienzan en productpage. Puedes desplazarte hacia atrás y analizar el diagrama de arquitectura de Bookinfo en Bookinfo Overview.
Es posible que tu dibujo se vea como el siguiente:

Nota: Es posible que debas hacer clic en Expandir para ver todos los nodos.
-
Haz clic en el nodo del servicio productpage.
Deberías ver una tarjeta de detalles del servicio:

- ¿Cuántas solicitudes por segundo recibe este servicio?
- ¿Cuál es la mediana de latencia y la latencia del percentil 99?
-
Ahora coloca el cursor sobre cada uno de los nodos del servicio y observa las estadísticas de las aristas.
- ¿Cuántas solicitudes por segundo recibe el servicio productpage
y de dónde provienen?
- ¿Cuántas solicitudes por segundo envía el servicio a la
carga de trabajo productpage-v1?
Deberías ver detalles de tráfico como los siguientes:

-
Desglosa una de las cargas de trabajo hasta que veas la implementación, el conjunto de réplicas y los Pods.
Debería verse algo similar a esto:

¡Felicitaciones!
En este lab, implementaste un clúster de GKE, Cloud Service Mesh y una aplicación habilitada para Istio. También usaste el panel de Cloud Service Mesh para comprender mejor el rendimiento del servicio y la topología de tu aplicación.
Próximos pasos y más información
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 9 de junio de 2026
Prueba más reciente del lab: 9 de junio de 2026
Copyright 2026 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.