Guía de inicio rápido de Anthos Service Mesh para GKE

Mediante este instructivo, instalarás Anthos Service Mesh 1.9.8-asm.6 con una secuencia de comandos proporcionada por Google, install_asm, en un nuevo clúster de Google Kubernetes Engine (GKE). En este instructivo, se explica cómo realizar las siguientes acciones:

  1. Configurar tu proyecto de Google Cloud
  2. Crear un clúster de GKE con la cantidad mínima de CPU virtuales que requiere Anthos Service Mesh
  3. Instalar Anthos Service Mesh con un plano de control en el clúster
  4. Implementar una aplicación de ejemplo para que puedas ver los datos de telemetría en los paneles de Anthos Service Mesh en la consola de Google Cloud.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando finalices esta guía de inicio rápido, puedes borrar el clúster para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Kubernetes Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine API.

    Enable the API

  8. Toma nota de tu ID del proyecto.

Aunque la Anthos Service Mesh requiere otras API, la secuencia de comandos install_asm las habilita para ti. Para mantener bajos los costos de facturación, la secuencia de comandos install_asm no habilita la API de GKE Enterprise. Existen algunas diferencias menores en la consola de Google Cloud cuando la API de GKE Enterprise está habilitada. Para obtener más información sobre estas diferencias, consulta Diferencias de la IU de GKE Enterprise y Anthos Service Mesh.

Instala las herramientas requeridas

Puedes ejecutar la secuencia de comandos en Cloud Shell o en tu máquina local que ejecuta Linux. Cloud Shell instala previamente todas las herramientas necesarias. Ten en cuenta que macOS no es compatible porque viene con una versión anterior de Bash.

Cloud Shell

Cloud Shell aprovisiona una máquina virtual (VM) g1-small de Compute Engine que ejecuta un sistema operativo Linux basado en Debian. Las ventajas de usar Cloud Shell son las siguientes:

  • Cloud Shell incluye gcloud, kubectl, kpt y otras herramientas de línea de comandos que necesitas.

  • El directorio $HOME de Cloud Shell tiene 5 GB de espacio de almacenamiento persistente.

  • Puedes elegir entre los editores de texto:

    • El editor de código, al que puedes acceder desde  en la parte superior de la ventana de Cloud Shell

    • Emacs, Vim o Nano, a los que puedes acceder desde la línea de comandos en Cloud Shell.

Para usar Cloud Shell, sigue estos pasos:

  1. Ve a la consola de Google Cloud.
  2. Selecciona tu proyecto de Google Cloud.
  3. Haz clic en el botón Activar Cloud Shell en la parte superior de la consola de Google Cloud.

    Google Cloud Platform Console

    Se abrirá una sesión de Cloud Shell en un marco nuevo en la parte inferior de la consola de Google Cloud, que mostrará una ventana de la línea de comandos.

    Sesión de Cloud Shell

Computadora local de Linux

  1. Asegúrate de tener instaladas las siguientes herramientas:

  2. Autentica con Google Cloud CLI

    gcloud auth login
    
  3. Actualiza los componentes:

    gcloud components update
    
  4. Asegúrate de que git esté en tu ruta para que kpt pueda encontrarlo.

Cree un clúster de GKE

  1. Ejecuta el siguiente comando para crear el clúster con la cantidad mínima de CPU virtuales que requiere Anthos Service Mesh. En el comando, reemplaza los marcadores de posición por la siguiente información:

    • CLUSTER_NAME: es el nombre de tu clúster. El nombre solo puede contener caracteres alfanuméricos en minúsculas y -, debe comenzar con una letra y terminar con un carácter alfanumérico, además, no debe tener más de 40 caracteres.
    • PROJECT_ID: es el ID del proyecto en el que se creará el clúster.
    • CLUSTER_LOCATION es la zona del clúster, como us-central1-a.
    gcloud container clusters create CLUSTER_NAME  \
        --project=PROJECT_ID \
        --zone=CLUSTER_LOCATION  \
        --machine-type=e2-standard-4 \
        --num-nodes=2 \
        --workload-pool=PROJECT_ID.svc.id.goog
    
  2. Obtén credenciales de autenticación para interactuar con el clúster. En este comando, también se establece el contexto actual de kubectl en el clúster.

    gcloud container clusters get-credentials CLUSTER_NAME  \
        --project=PROJECT_ID \
        --zone=CLUSTER_LOCATION
    

Descarga la secuencia de comandos de instalación de ASM

  1. Descarga la versión de la secuencia de comandos que instala Anthos Service Mesh 1.9.8 en el directorio de trabajo actual:

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.9 > install_asm
    
  2. Descarga el SHA-256 del archivo en el directorio de trabajo actual:

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.9.sha256 > install_asm.sha256
    
  3. Con ambos archivos en el mismo directorio, verifica la descarga:

    sha256sum -c --ignore-missing install_asm.sha256
    

    Si la verificación se realiza de forma correcta, el comando genera este resultado: install_asm: OK.

    Para mayor compatibilidad, el archivo install_asm.sha256 incluye la suma de verificación dos veces a fin de permitir que cualquier versión de la secuencia de comandos cambie su nombre a install_asm. Si recibes un error que indica que --ignore-missing no existe, vuelve a ejecutar el comando anterior sin la marca --ignore-missing.

  4. Haz que la secuencia de comandos sea ejecutable:

    chmod +x install_asm
    

Instale Anthos Service Mesh

Ejecuta la secuencia de comandos install_asm con las siguientes opciones para instalar Anthos Service Mesh en el clúster que creaste anteriormente. Si no cierras esta página desde que creaste el clúster, los marcadores de posición tienen los valores que ingresaste para el comando gcloud container clusters create.

./install_asm \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME  \
  --cluster_location CLUSTER_LOCATION  \
  --mode install \
  --output_dir ./asm-downloads \
  --enable_all

La secuencia de comandos install_asm puede tardar varios minutos en completarse. La secuencia de comandos genera mensajes informativos para que puedas seguir su progreso.

El comando ejecuta install_asm con las siguientes opciones:

  • --mode install: ejecuta la secuencia de comandos para una instalación nueva y habilita la autoridad certificadora de Anthos Service Mesh (CA de Mesh), que es la autoridad certificada predeterminada (CA) para las instalaciones.
  • --output_dir ./asm-downloads: es el directorio en el que la secuencia de comandos descarga los archivos desde el repositorio anthos-service-mesh, y desde el que descarga y extrae el archivo de instalación de Anthos Service Mesh, que contiene istioctl, muestras y manifiestos.
  • --enable-registration: permite que la secuencia de comandos registre el clúster en el proyecto en el que este se encuentra.
  • --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, que incluye habilitar Workload Identity de GKE.

Implementa la muestra de Online Boutique

  1. Descarga la muestra mediante kpt:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    online-boutique
    
  2. Crea un espacio de nombres para la aplicación:

    kubectl create namespace demo
    
  3. Habilita la inserción automática del sidecar (inserción automática). Usa el siguiente comando para ubicar la etiqueta en el servicio istiod, que contiene el valor de la etiqueta de revisión que se usará en pasos posteriores.

    kubectl -n istio-system get pods -l app=istiod --show-labels
    

    El resultado es similar al siguiente:

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-198-6-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-198-6-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
    

    En el resultado, en la columna LABELS, observa el valor de la etiqueta de revisión istiod, que está después del prefijo istio.io/rev=. En este ejemplo, el valor es asm-198-6.

  4. Aplica la etiqueta de revisión a los espacios de nombres. En el siguiente comando, REVISION es el valor de la etiqueta de revisión istiod que anotaste en el paso anterior.

    kubectl label namespace demo istio-injection- istio.io/rev=REVISION --overwrite
    

    Puedes ignorar el mensaje "istio-injection not found" 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. Debido a que la inserción automática falla si un espacio de nombres tiene tanto la istio-injection como la etiqueta de revisión, todos los comandos kubectl label de la documentación de Anthos Service Mesh incluyen la acción de quitar la etiqueta istio-injection.

  5. Implementa la muestra en el clúster:

    kubectl apply -n demo -f online-boutique
    
  6. Obtén la dirección IP externa de la puerta de enlace de entrada de la siguiente forma:

    kubectl get service istio-ingressgateway -n istio-system
    

    El resultado es similar al siguiente:

    NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                                      AGE
    istio-ingressgateway   LoadBalancer   10.19.247.233   35.239.7.64   80:31380/TCP,443:31390/TCP,31400:31400/TCP   27m

    En este ejemplo, la dirección IP de la puerta de enlace de entrada es 35.239.7.64.

  7. Visita la aplicación en tu navegador para confirmar la instalación:

    http://EXTERNAL_IP/
    

Consulta los paneles de la malla de servicios

Después de implementar las cargas de trabajo en el clúster con los proxies de sidecar incorporados, puedes explorar las páginas de Anthos Service Mesh en la consola de Google Cloud para ver todas las funciones de observabilidad que ofrece Anthos Service Mesh. Ten en cuenta que los datos de telemetría toman uno o dos minutos en aparecer en la consola de Google Cloud después de implementar las cargas de trabajo.

El acceso a Anthos Service Mesh en la consola de Google Cloud se controla mediante la Administración de identidades y accesos (IAM). Para acceder a las páginas de Anthos Service Mesh, el propietario del proyecto debe otorgar a los usuarios la función de editor o visualizador del proyecto, o los roles más restrictivas que se describen en Controla el acceso a Anthos Service Mesh en la consola de Google Cloud.

  1. En la consola de Google Cloud, ve a Anthos Service Mesh.

    Ir a Anthos Service Mesh

  2. Selecciona el proyecto de Google Cloud de la lista desplegable de la barra de menú.

  3. Si tienes más de una malla de servicios, selecciona la malla en la lista desplegable Malla de servicios.

Para obtener más información, consulta Explora Anthos Service Mesh en la consola de Google Cloud.

Limpia

Antes de limpiar, si te interesa obtener más información sobre la TLS mutua, consulta Anthos Service Mesh con el ejemplo mTLS.

  • Si deseas evitar cargos adicionales, borra el clúster:

    gcloud container clusters delete  CLUSTER_NAME  \
        --project=PROJECT_ID \
        --zone=CLUSTER_LOCATION
    
  • Si deseas conservar el clúster y quitar la muestra de Online Retail, realiza la siguiente acción:

    kubectl delete namespaces demo
    

¿Qué sigue?

Conoce más sobre: