GSP654

Descripción general
Istio es un marco de trabajo 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 de servicio a servicio, supervisión y mucho más, sin requerir ningún cambio en el código de servicio.
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 en la retirada exponencial. Hay bibliotecas para Java, Golang y Node.js que se encargan de esto. Sin embargo, si se usan dentro de las aplicaciones, cada una de estas deberá resolver este problema de forma independiente. El archivo adicional de Istio podría encargarse de esto por la app de forma automática.
Anthos Service Mesh
Anthos Service Mesh (ASM) cuenta con la tecnología de Istio. Con Anthos Service Mesh, obtienes una distribución de Istio por completo compatible y probada por Anthos que te permite crear e implementar una malla de servicios con Anthos GKE, sin importar si tu clúster opera 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 Anthos GKE On-Prem.
Por último, Anthos 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 mediante el filtrado y la división de tus datos según una gran variedad de atributos.
- Las relaciones de servicio a servicio te ayudan, de un vistazo, a comprender quién se conecta a determinado servicio 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 estándares del estado del servicio.
Anthos 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 Anthos.
En este lab, instalarás Anthos Service Mesh en un clúster de GKE.
Qué aprenderás
En este lab, aprenderás a realizar las siguientes tareas:
- Aprovisionar un clúster en Google Kubernetes Engine (GKE)
- Instalar y configurar Anthos Service Mesh
- Implementar Bookinfo, una aplicación de varios servicios habilitada para Istio
- Habilitar el acceso externo usando una puerta de enlace de entrada de Istio
- Usar la aplicación Bookinfo
- Supervisar el rendimiento del servicio con el panel de Anthos 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 izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón para abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
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 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 Usar 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 Detalles del lab.
-
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 Detalles del lab.
-
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 o autenticación de dos factores (esta es una cuenta 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 Anthos Service Mesh en
la consola de Cloud.
Verifica si tienes permisos suficientes
- En Cloud Shell, verifica que tu cuenta de usuario tenga asignada la función de 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 estudiante también posee privilegios de lector.
Nota: Para completar la configuración, necesitas los permisos asociados con las siguientes funciones:
- Editor del proyecto
- Administrador de Kubernetes Engine
- Administrador de IAM de proyecto
- Administrador de GKE Hub
- Administrador de cuenta de servicio
- Administrador de claves de cuentas de servicio
Si tienes el rol de Propietario, tienes todos estos permisos y más,
por lo que estás listo para continuar.
Tarea 2. Configura tu clúster de GKE
Crea el clúster
- Ahora 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.27.3-gke.100
MASTER_IP: 35.245.2.147
MACHINE_TYPE: e2-standard-4
NODE_VERSION: 1.27.3-gke.100
NUM_NODES: 4
STATUS: RUNNING
El clúster tardará varios minutos en crearse.
- Cuando se complete el proceso, ejecuta este comando para asegurarte de que tienes el rol de
administrador de clústeres
en tu clúster:
kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(whoami)@qwiklabs.net
- 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 Anthos Service Mesh
Google proporciona la herramienta de asmcli
para instalar o actualizar Anthos 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 de 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 Anthos Service Mesh en tu clúster.
- Descarga la versión que instala Anthos Service Mesh 1.20.3 en el directorio de trabajo actual:
curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.20 > asmcli
- Haz que la secuencia de comandos sea ejecutable:
chmod +x asmcli
- Habilita la API Service Mesh:
gcloud services enable mesh.googleapis.com
Tarea 4. Valida Anthos Service Mesh
Puedes ejecutar asmcli validate
para asegurarte de que tu proyecto y clúster estén configurados según sea necesario para instalar Anthos Service Mesh. Con esta opción, asmcli
no realiza ningún cambio en tu proyecto o clúster ni instala Anthos Service Mesh.
La herramienta de 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: Ignora cualquier error de validación ya que en este caso, el validador está confirmando que el cluster tiene todos los componentes necesarios para instalar ASM, no que ASM se haya instalado correctamente.
Si tienes éxito, deberías tener un resultado similar al siguiente:
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 Anthos 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 Anthos Service Mesh
Con el siguiente comando, se instala Anthos Service Mesh. La marca --enable_all permite que la secuencia de comandos habilite las APIs de Google obligatorias, configure los permisos de Identity and Access Management y realice las actualizaciones necesarias en tu clúster, lo que incluye habilitar Workload Identity de GKE.
- Ejecuta el siguiente comando para instalar Anthos 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. Instala Anthos Service Mesh
Instala una puerta de enlace de entrada
Anthos Service Mesh te permite implementar y administrar puertas de enlace como parte de tu 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 te proporcionan control detallado sobre 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 inyección de sidecar
Anthos Service Mesh usa proxies de sidecar para mejorar la seguridad, confiabilidad y observabilidad de la red. Con Anthos 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 ubica en un contenedor separado en el mismo Pod.
-
Antes de implementar las cargas de trabajo, asegúrate de configurar la inserción del proxy de sidecar para que Anthos 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 ignorar el mensaje "istio-injection" no encontrada
en el resultado. Esto significa que el espacio de nombres no tenía la etiqueta istio-injection, que debería aparecer en las nuevas instalaciones de Anthos Service Mesh o en implementaciones nuevas. Nota: Ahora la inserción del proxy de 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 ASM está configurada y verificada, 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 propagar los datos de 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.
Hay 3 versiones del microservicio reviews:
- 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 contenedores
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. Implementa 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 eso, 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 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 Simple 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]
-
Controla que la app 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 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 en orden aleatorio:
- 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 herramienta siege para simular tráfico a Bookinfo.
-
En Cloud Shell, instala siege.
Siege es una herramienta 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 del servicio con el panel de Anthos Service Mesh
Recopila datos desde la vista de tabla de Servicios.
- En la consola, ingresa almenú de navegación> Anthos> Malla de servicios.
Si se te solicita, haz clic en Habilitar para habilitar la API de Anthos.
-
En la mitad inferior de la ventana, verás una sección denominada Servicio.
¿Cuántos servicios hay en la lista?
-
Haz clic en el servicio productpage para desglosarlo y ver más detalles.

Observa el resumen en la parte superior que detalla solicitudes por segundo, tasas de error, latencias y uso de recursos actuales.
Si no ves Requests > 0, intenta salir del servicio productpage y volver a ingresar luego de unos minutos.
-
Del lado izquierdo de la ventana, 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 para las solicitudes?
- ¿Cuál es la mediana para las respuestas?
- ¿Cuál es el uso total de la CPU?
-
Haz clic en la opción Connected Services a la izquierda.
Aquí se enumeran otros servicios que realizan solicitudes entrantes de productpage y los servicios a los que productpage les 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: Las calificaciones por lo general no envían solicitudes al servicio productpage. El servicio de calificaciones se muestra aquí porque tú lo usaste para enviar una solicitud de prueba como parte de este lab.
-
Haz clic en el logotipo de Anthos Service Mesh, en la esquina superior izquierda, para regresar al panel del servicio.
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 muestren 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.
-
En el panel de Anthos Service Mesh, mira la topología en la parte derecha de la ventana.
Es posible que debas esperar unos minutos para 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 la 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, Anthos Service Mesh y una aplicación habilitada para Istio. También usaste el panel de Anthos Service Mesh para comprender mejor el rendimiento del servicio y la topología de tu aplicación.
Próximos pasos/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: 22 de enero de 2024
Prueba más reciente del lab: 22 de enero de 2024
Copyright 2025 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.