Instala Anthos Service Mesh en un clúster existente mediante la CLI de GKE Enterprise

En esta guía, se explica cómo realizar una instalación limpia de la versión 1.5.10-asm.2 de Anthos Service Mesh en un clúster de GKE existente de Google Cloud mediante la interfaz de línea de comandos (CLI) de GKE Enterprise. Ten en cuenta las siguientes limitaciones con esta versión Beta de la CLI de GKE Enterprise:

La instalación habilita las siguientes características:

En esta guía, también se explica cómo registrar tu clúster en la flota que se encuentra en el mismo proyecto de Google Cloud que el clúster. Una flota te permite organizar clústeres para facilitar la administración de varios clústeres. Mediante el registro de tus clústeres en una flota, puedes agrupar servicios y otras infraestructuras según sea necesario para aplicar políticas coherentes.

Antes de comenzar

Antes de comenzar la instalación, haz lo siguiente:

Requisitos

  • Debes tener una licencia de prueba o suscripción de GKE Enterprise. Consulta la guía de precios de GKE Enterprise para obtener más detalles.

  • El clúster de GKE debe cumplir con los siguientes requisitos:

    • Debe tener al menos cuatro nodos.
    • El tipo de máquina mínimo es e2-standard-4, que tiene cuatro CPU virtuales.
    • Usa un canal de versiones en lugar de una versión estática de GKE.
  • Para que se los incluya en la malla de servicios, los puertos de servicio deben tener un nombre, y ese nombre debe incluir el protocolo del puerto en la siguiente sintaxis: name: protocol[-suffix], en la que los corchetes indican un sufijo opcional que debe comenzar con un guion. Para obtener más información, Asigna nombres a puertos de servicio.

  • Si instalas Anthos Service Mesh en un clúster privado, debes agregar una regla de firewall para abrir el puerto 15017 si deseas usar la inserción automática del sidecar. Si no agregas la regla de firewall y la incorporación automática de sidecar está habilitada, recibirás un error cuando implementes las cargas de trabajo. Si deseas obtener más detalles sobre cómo agregar una regla de firewall, consulta Agrega reglas de firewall para casos de uso específicos.

  • Si creaste un perímetro de servicio en tu organización, es posible que debas agregar el servicio de CA de Mesh al perímetro. Para obtener más información, consulta Agrega la CA de Mesh a un perímetro de servicio.

Restricciones

Solo se admite una instalación de Anthos Service Mesh por proyecto de Google Cloud. No se admiten varias implementaciones de malla en un solo proyecto.

Datos del certificado

En los certificados de CA de Mesh, se incluyen los siguientes datos sobre los servicios de tu aplicación:

  • El ID del proyecto de Google Cloud
  • El espacio de nombres de GKE
  • El nombre de la cuenta de servicio de GKE

Establece valores predeterminados del proyecto y del clúster

  1. Obtén el ID del proyecto en el que se creó el clúster:

    gcloud

    gcloud projects list

    Consola

    1. En la consola de Google Cloud, ve a la página Panel:

      Ir a la página Panel

    2. Haz clic en la lista desplegable Seleccionar una opción en la parte superior de la página. En la ventana Seleccionar una opción que aparece, elige tu proyecto. El ID del proyecto se muestra en la tarjeta de Información del proyecto del panel del proyecto.

  2. Crea una variable de entorno para el ID del proyecto:

    export PROJECT_ID=YOUR_PROJECT_ID
  3. Configura el ID del proyecto predeterminado para Google Cloud CLI:

    gcloud config set project ${PROJECT_ID}
    
  4. Crea las siguientes variables de entorno:

    • Configura el nombre del clúster:

      export CLUSTER_NAME=YOUR_CLUSTER_NAME
    • Establece CLUSTER_LOCATION en la zona o en la región del clúster:

      export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
  5. Establece la zona o región predeterminada para Google Cloud CLI.

    • Si tienes un clúster de una sola zona, configura la predeterminada:

      gcloud config set compute/zone ${CLUSTER_LOCATION}
    • Si tienes un clúster regional, configura la región predeterminada:

      gcloud config set compute/region ${CLUSTER_LOCATION}

Prepara los archivos de configuración de recursos

Usa la CLI de GKE Enterprise y kustomize para exportar y aplicar parches a los archivos de recursos de Config Connector que usarás para actualizar un clúster existente con las opciones que requiere Anthos Service Mesh. El recurso de Config Connector es la representación de Kubernetes de los recursos de Google Cloud.

Exporta archivos de configuración de recursos

Usa el comando de gcloud beta anthos export a fin de generar archivos de configuración de recursos para un clúster existente.

  1. Crea un directorio para los recursos de Anthos Service Mesh. Para mayor comodidad, los siguientes pasos hacen referencia al directorio que creaste como ASM_RESOURCES.

  2. Cambia al directorio ASM_RESOURCES.

  3. Descarga el paquete asm-patch en el directorio de trabajo actual:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-patch@release-1.5-asm .
    

    El comando crea un subdirectorio llamado asm-patch/.

  4. Agrega un nombre de directorio en una variable de entorno llamada BASE_DIR. Cuando ejecutas el comando gcloud beta anthos export en un clúster existente, GKE Enterprise CLI crea un directorio con el nombre especificado en BASE_DIR y envía los archivos de recursos de Config Connector al directorio.

    export BASE_DIR=YOUR_BASE_DIR

    Si vas a configurar más de un clúster, te recomendamos que uses el nombre del clúster como el nombre del directorio. Por ejemplo, si preparas archivos de configuración de recursos para dos clústeres, después de ejecutar el comando gcloud beta anthos export para cluster-1 y cluster-2, tu estructura de directorio debería ser similar a la siguiente:

    esbozo de la estructura del directorio

    En el diagrama, cluster-1 y cluster-2 son los directorios que contienen los archivos de configuración de recursos de Config Connector para los clústeres llamados cluster-1 y cluster-2.

  5. Exporta los archivos de configuración de recursos de Config Connector:

    gcloud beta anthos export ${CLUSTER_NAME} --output-directory ${BASE_DIR}
    

    El comando export propaga el ID del proyecto y la zona o región del clúster en los archivos de configuración de recursos del clúster para que coincidan con la configuración actual de gcloud config. Si deseas exportar archivos de configuración de recursos para un clúster que no coincide con tu configuración de gcloud config actual, puedes especificar las siguientes opciones de línea de comandos:

    • -p PROJECT_ID
    • -l YOUR_ZONE_OR_REGION

    Consulta gcloud beta anthos export --help para obtener más información.

Aplica un parche a los archivos de configuración de recursos

Usa los métodos set kpt y kustomize de GKE Enterprise para actualizar los archivos de configuración de recursos.

  1. Enumera los métodos set de configuración disponibles en el paquete asm-patch:

    kpt cfg list-setters asm-patch/
    

    El resultado es similar al siguiente:

    NAME                           VALUE                  SET BY   DESCRIPTION   COUNT
    base-dir                       base                                           1
    gcloud.compute.location        your_zone_or_region                            1
    gcloud.container.cluster       your_cluster_name                              3
    gcloud.core.project            your_project_id        kpt                    11
    gcloud.project.projectNumber   your_project_number    kpt                     1
  2. Configura la ruta de acceso relativa entre los directorios ${BASE_DIR} y asm-patch:

    kpt cfg set asm-patch/ base-dir ../${BASE_DIR}
  3. Configura el nombre del clúster:

    kpt cfg set asm-patch/ gcloud.container.cluster ${CLUSTER_NAME}
  4. Si no estableciste los valores predeterminados de gcloud config o si deseas cambiarlos, ejecuta los siguientes métodos set:

    kpt cfg set asm-patch/ gcloud.compute.location ${CLUSTER_LOCATION}
    kpt cfg set asm-patch/ gcloud.core.project ${PROJECT_ID}
  5. Aplica los parches de Anthos Service Mesh a los archivos de configuración de recursos del clúster:

    pushd ${BASE_DIR} && kustomize create --autodetect \
    --namespace ${PROJECT_ID} && popd
    pushd asm-patch && kustomize build -o ../${BASE_DIR}/all.yaml && popd
  6. Valida los archivos de configuración de recursos finales:

    kpt fn source ${BASE_DIR} | kpt fn run --image gcr.io/kustomize-functions/validate-asm:v0.1.0
    

    Si hay algún error, corrígelo y vuelve a validar las configuraciones de recursos.

  7. De forma opcional, puedes registrar los archivos de configuración de recursos en tu propio sistema de control de origen, como Cloud Source Repositories, para realizar un seguimiento de los cambios en los archivos.

Actualiza el clúster e instala Anthos Service Mesh

La CLI de GKE Enterprise actualiza el clúster con las siguientes opciones, que requiere Anthos Service Mesh:

  • Agrega una etiqueta mesh_id al clúster en el formato proj-PROJECT_NUMBER, en el que PROJECT_NUMBER es el número de proyecto en el que se creó el clúster. La etiqueta mesh_id es obligatoria para que las métricas se muestren en el panel de Anthos Service Mesh en la consola de Google Cloud. Si tu clúster tiene etiquetas existentes, la CLI de GKE Enterprise las conserva.

  • Habilita Workload Identity.

  • Habilita Kubernetes Engine Monitoring.

  • Inscribe el clúster en una descripción general del canal de versiones.

Ejecuta el siguiente comando para actualizar el clúster e instalar Anthos Service Mesh:

gcloud beta anthos apply ${BASE_DIR}

El comando actualiza el clúster con las opciones necesarias y, luego, implementa Anthos Service Mesh. Este proceso toma unos 30 minutos en completarse.

Verifica los componentes del plano de control

Verifica que los pods del plano de control en istio-system estén activos:

kubectl get pod -n istio-system

El resultado esperado es similar al siguiente:

NAME                                      READY   STATUS      RESTARTS   AGE
istio-ingressgateway-74cc894bfd-786rg     1/1     Running     0          7m19s
istiod-78cdbbbdb-d7tps                    1/1     Running     0          7m36s
promsd-576b8db4d6-lqf64                   2/2     Running     1          7m19s

Registra tu clúster

Debes registrar tu clúster en la flota del proyecto para obtener acceso a la interfaz de usuario unificada en la consola de Google Cloud. Una flota proporciona una forma unificada de ver y administrar los clústeres y sus cargas de trabajo, incluidos los clústeres fuera de Google Cloud.

Crea una cuenta de servicio de Google Cloud y un archivo de claves

Se requiere un archivo JSON que contenga las credenciales de la cuenta de servicio para registrar un clúster. Para seguir el principio de privilegio mínimo, te recomendamos que crees una cuenta de servicio distinta para cada clúster que registres.

Para crear una cuenta de servicio y un archivo de claves, haz lo siguiente:

  1. Selecciona un nombre para la cuenta de servicio y crea una variable de entorno para ella:

    export SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
    
  2. Crea la cuenta de servicio:

    gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
  3. Enumera todas las cuentas de servicio de un proyecto para confirmar que se creó la cuenta de servicio:

    gcloud iam service-accounts list
  4. Vincula la función de IAM gkehub.connect a la cuenta de servicio:

    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
       --member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \
       --role="roles/gkehub.connect"
  5. Crea una variable de entorno para la ruta de archivo local en la que deseas guardar el archivo JSON. Te recomendamos nombrar el archivo con el nombre de la cuenta de servicio y el ID del proyecto, por ejemplo: /tmp/creds/${SERVICE_ACCOUNT_NAME}-${PROJECT_ID}.json

    export SERVICE_ACCOUNT_KEY_PATH=LOCAL_KEY_PATH
  6. Descarga el archivo JSON de claves privadas de la cuenta de servicio:

    gcloud iam service-accounts keys create ${SERVICE_ACCOUNT_KEY_PATH} \
       --iam-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

Registre el clúster

En el siguiente comando, reemplaza MEMBERSHIP_NAME por un nombre que solo represente el clúster que se registra en centro.

gcloud container hub memberships register MEMBERSHIP_NAME \
    --gke-cluster=${CLUSTER_LOCATION}/${CLUSTER_NAME} \
    --service-account-key-file=${SERVICE_ACCOUNT_KEY_PATH}

El comando responderá con un resultado similar al siguiente:

kubeconfig entry generated for CLUSTER_NAME.
Waiting for membership to be created...done.
Created a new membership [projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME] for the cluster [MEMBERSHIP_NAME]
Generating the Connect Agent manifest...
Deploying the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]...
Deployed the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect].
Finished registering the cluster [MEMBERSHIP_NAME] with the Hub.

Esta clave de la cuenta de servicio se almacena como un secreto llamado creds-gcp en el espacio de nombres gke-connect.

Para obtener más información sobre el registro de clústeres, consulta Registra un clúster en la documentación de Connect.

Inserta proxies 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 abstraen del contenedor principal de la aplicación y se implementan en un proxy común fuera del proceso, que se entrega como un contenedor separado en el mismo pod.

Todas las cargas de trabajo que se ejecutan en tu clúster antes de instalar Anthos Service Mesh deben tener el proxy de sidecar incorporado o actualizado para que tengan la versión actual de Anthos Service Mesh. Antes de implementar las cargas de trabajo nuevas, asegúrate de configurar la incorporación del proxy de sidecar para que Anthos Service Mesh pueda supervisar y asegurar el tráfico.

Puedes habilitar la incorporación automática del sidecar con un comando, por ejemplo:

kubectl label namespace NAMESPACE istio-injection=enabled --overwrite

En el ejemplo anterior, NAMESPACE es el nombre del espacio de nombres de los servicios de tu aplicación o es default si no creaste un espacio de nombres de forma explícita.

Para obtener más información, consulta Incorpora proxies de sidecar.

Visualiza las páginas de Anthos Service Mesh

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.

Además de las páginas de Anthos Service Mesh, las métricas relacionadas con tus servicios (como la cantidad de solicitudes que recibe un servicio específico) se envían a Cloud Monitoring, donde aparecen en el Explorador de métricas.

Para ver las métricas, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Monitoring.

    Ir a Monitoring

  2. Selecciona Recursos > Explorador de métricas.

Para obtener una lista completa de las métricas, consulta Métricas de Istio en la documentación de Cloud Monitoring.

Instala una muestra mediante kpt

De forma opcional, puedes usar kpt para instalar la muestra de Hípster en el clúster.

  1. Descarga la muestra:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    hipster-demo
    
  2. Habilita la incorporación automática de sidecars:

    kubectl label namespace default istio-injection=enabled
    
  3. Implementa la muestra en el clúster:

    kubectl apply -f hipster-demo
    
  4. Busca la dirección IP externa de tu aplicación:

    kubectl get service frontend-external
    
  5. Visita la aplicación en tu navegador para confirmar la instalación:

    http://EXTERNAL_IP/

    Ahora que tienes una muestra en ejecución, puedes explorar las funciones de observabilidad de Anthos Service Mesh en la consola de Google Cloud. Ten en cuenta que pueden pasar hasta 10 minutos hasta que gráfico de topología muestre los servicios de tu malla.

Cuando termines de explorar, quita la muestra de Hipster:

kubectl delete -f hipster-demo

¿Qué sigue?