arrow_back

Cómo instalar Anthos Service Mesh en Google Kubernetes Engine

Unirse Acceder
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Cómo instalar Anthos Service Mesh en Google Kubernetes Engine

Lab 1 hora 30 minutos universal_currency_alt 5 créditos show_chart Intermedio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP654

Labs de autoaprendizaje de Google Cloud

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 son cronometrados y no se pueden pausar. El cronómetro, 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 de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto 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: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

Cómo iniciar su lab y acceder a la consola de Google Cloud

  1. Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:

    • El botón Abrir la consola de Google
    • Tiempo restante
    • Las credenciales temporales que debe usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta.
  3. Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.

  4. Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.

    Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales.
  5. Haga clic para avanzar por las páginas siguientes:

    • Acepte los términos y condiciones.
    • No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No se registre para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haga clic en el Menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Ícono del menú de navegación

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.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola 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 YOUR_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.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

  2. Ahora, el resultado debería verse de la siguiente manera:

Resultado:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = <project_ID>

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: Para obtener toda la documentación de gcloud, consulta la guía con la descripción general de gcloud CLI en Google Cloud.

Tarea 1. Configura tu proyecto

Verifica la configuración del SDK

  1. 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-#####]
  2. 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

  1. 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 los siguientes roles:
  • 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

  1. 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.

  1. 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
  1. 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.

  1. Descarga la versión que instala Anthos Service Mesh 1.19.0 en el directorio de trabajo actual:
curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.19 > asmcli
  1. Haz que la secuencia de comandos sea ejecutable:
chmod +x asmcli
  1. 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 API de Google necesarias
  1. 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 --enable_cluster_roles Note: Ignora los errores 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.

  1. 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.

  1. 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
  1. 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, REVISIÓN está el valor de la etiqueta de revisión istiod que anotaste en el paso anterior.
    kubectl label namespace $GATEWAY_NS \ istio.io/rev=$REVISION --overwrite
  2. Cambia al directorio que especificaste en --output_dir.

cd ~/asm_output
  1. 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.

  1. 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.

  2. Para habilitar la inserción automática, aplica la etiqueta de revisión y quita la etiqueta istio-injection si es que existe.

  3. 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 es la etiqueta de revisión 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 encontradaen 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í:

Arquitectura de Bookinfo

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

  1. Observa el archivo .yaml que describe la aplicación Bookinfo:

    cd istio-1.19.6-asm.2 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.

  2. 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.

  1. 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.

  2. 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

  1. 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 ...
  2. 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.

  3. Confirma que la aplicación Bookinfo esté en ejecución. Para ello, envía una solicitud curldesde 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
  4. Confirma que se haya creado la puerta de enlace de entrada.

    kubectl get gateway

    Resultado:

    NAME AGE bookinfo-gateway 20m
  5. 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.

  6. 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]
  7. 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

  1. 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.

    Página del producto de Bookinfo

  2. 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.

  1. En Cloud Shell, instala siege.

    Siege es una herramienta para generar carga en sitios web.

    sudo apt install siege
  2. 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.

  1. 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.

  1. En la mitad inferior de la ventana, verás una sección denominada Servicio.

    ¿Cuántos servicios hay en la lista?

  2. Haz clic en el servicio productpage para desglosarlo y ver más detalles.

    Servicio productpage destacado

    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.

  3. 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?
  4. 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.
  5. 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.

  1. 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.

  2. 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:

    Diagrama de malla de servicios

    Nota: Es posible que debas hacer clic en Expandir para ver todos los nodos.
  3. Haz clic en el nodo del servicio productpage.

    Deberías ver una tarjeta de detalles del servicio:

    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?
  4. 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:

    Esquema detallado del tráfico

  5. 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:

    Despliegue, conjunto de réplicas y diagrama de Pods

¡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 2024 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.