Prepararse para configurar Cloud Service Mesh con servicios de gRPC sin proxy

La configuración de Cloud Service Mesh consta de varias fases. En este documento se describe la primera fase: instrucciones para preparar la configuración de Cloud Service Mesh con aplicaciones gRPC sin proxy. Este documento se aplica cuando usas las APIs de balanceo de carga. Sin embargo, te recomendamos que uses las APIs de enrutamiento de servicios. Las demás fases se explican en las guías específicas de cada plataforma que se indican en la sección Continuar con el proceso de configuración de este documento.

Antes de leer esta guía, familiarízate con los siguientes documentos, que ofrecen una descripción general del uso de Cloud Service Mesh con aplicaciones gRPC sin proxy:

Requisitos previos

Prepara tu entorno completando las siguientes tareas:

  1. Habilita la facturación.
  2. Concede los permisos necesarios.
  3. Habilita la API de Traffic Director en tu proyecto.
  4. Asegúrate de que la cuenta de servicio tenga permisos suficientes para acceder a la API Traffic Director.

En las siguientes secciones se proporcionan instrucciones para cada tarea.

Habilita la facturación

Comprueba que la facturación esté habilitada en tu Google Cloud proyecto. Para obtener más información, consulta el artículo sobre cómo habilitar, inhabilitar o cambiar la facturación de un proyecto.

Conceder los permisos de gestión de identidades y accesos necesarios

Debes tener permisos de gestión de identidades y accesos (IAM) suficientes para crear instancias de VM y modificar una red para configurar Cloud Service Mesh. Si tienes el rol de propietario o editor (roles/owner o roles/editor) del proyecto en el que vas a habilitar Cloud Service Mesh, tienes los permisos correctos automáticamente.

De lo contrario, debes tener todos los roles de gestión de identidades y accesos que se muestran en la siguiente tabla. Si tienes estos roles, también tendrás los permisos asociados, tal como se describe en la documentación de gestión de identidades y accesos de Compute Engine.

Tarea Rol necesario
Defina la política de gestión de identidades y accesos de una cuenta de servicio. Administrador de cuentas de servicio
(roles/iam.serviceAccountAdmin)
Habilita Cloud Service Mesh. Administrador de uso de servicios
(roles/serviceusage.serviceUsageAdmin)
Crea redes, subredes y componentes de balanceador de carga. Administrador de red de Compute
(roles/compute.networkAdmin)
Añadir y quitar reglas de cortafuegos. Administrador de seguridad de Compute
(roles/compute.securityAdmin)
Crear instancias. Administrador de instancias de Compute
(roles/compute.instanceAdmin)
Crea y modifica un clúster de GKE si usas pods. Administrador de clúster
(roles/container.clusterAdmin)
Permite acceder a cuentas de servicio. Usuario de cuenta de servicio
(roles/iam.serviceAccountUser

Las VMs de Compute Engine deben tener el ámbito https://www.googleapis.com/auth/cloud-platform. Para obtener más información, consulta Solucionar problemas de despliegues que utilizan gRPC sin proxy.

Con xDS v3, asigna el rol roles/trafficdirector.client a la cuenta de servicio que usan los clientes gRPC de Cloud Service Mesh.

Habilitar la API de Traffic Director

Consola

  1. En la Google Cloud consola, ve a la página Biblioteca de APIs de tu proyecto.

    Ir a la biblioteca de APIs

  2. En el campo Buscar APIs y servicios, introduce Traffic Director.

  3. En la lista de resultados de búsqueda, haz clic en API Traffic Director. Si no ves la API de Traffic Director en la lista, significa que no tienes los permisos necesarios para habilitarla.

  4. En la página API de Traffic Director, haz clic en Habilitar.

gcloud

Ejecuta el siguiente comando:

gcloud services enable trafficdirector.googleapis.com

Habilita la cuenta de servicio para acceder a la API de Traffic Director

Cuando configuras tu plano de datos y lo conectas a Cloud Service Mesh, tus clientes xDS se conectan al servidor xDS trafficdirector.googleapis.com. Estos clientes de xDS presentan una identidad de cuenta de servicio al servidor de xDS para asegurarse de que las comunicaciones entre el plano de datos y el plano de control estén debidamente autorizadas.

En el caso de una VM de Compute Engine, el cliente xDS usa la cuenta de servicio asignada a la VM.

Necesitas los siguientes permisos. La versión del protocolo xDS se especifica en el archivo de arranque. Solo se admite xDS v3.

Si usas xDS v2, debes migrar a xDS v3. Para obtener información sobre cómo migrar, consulta Migrar de xDS v2 a xDS v3.

Cuando usas xDS v3, la cuenta de servicio que usan tus aplicaciones gRPC debe tener los permisos trafficdirector.networks.reportMetrics y trafficdirector.networks.getConfigs. Puedes usar el rol de cliente de Cloud Service Mesh de gestión de identidades y accesos (roles/trafficdirector.client), que incluye ambos permisos.

Consola

  1. En la Google Cloud consola, ve a la página Gestión de identidades y accesos.

    Ve a IAM y administración

  2. Selecciona el proyecto.

  3. Identifica la cuenta de servicio a la que quieres añadir un rol:

    • Si la cuenta de servicio aún no está en la lista Miembros, no tiene ningún rol asignado. Haz clic en Añadir e introduce la dirección de correo de la cuenta de servicio.
    • Si la cuenta de servicio ya está en la lista Miembros, tiene roles asignados. Selecciona la cuenta de servicio y, a continuación, haz clic en la pestaña Roles.
  4. Despliega el rol. En la cuenta de servicio que quieras editar, haz clic en Editar.

  5. Selecciona el rol Otro > Cliente de Cloud Service Mesh.

  6. Para aplicar el rol a la cuenta de servicio, haz clic en Guardar.

gcloud

Ejecuta el siguiente comando:

gcloud projects add-iam-policy-binding PROJECT \
    --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
    --role=roles/trafficdirector.client

Haz los cambios siguientes:

  • PROJECT: introduce gcloud config get-value project
  • SERVICE_ACCOUNT_EMAIL: el correo asociado a la cuenta de servicio

A continuación, sigue este procedimiento general para configurar aplicaciones gRPC sin proxy en una malla de servicios:

  1. Actualiza tus clientes de gRPC a la versión más reciente de gRPC, con el parche más reciente.
  2. Actualiza el esquema del resolvedor de nombres gRPC de tus clientes cuando crees un canal y especifiques un archivo de arranque de Cloud Service Mesh.
  3. Configura los recursos de Cloud Service Mesh y Cloud Load Balancing.

En este documento se explica cómo completar los dos primeros pasos. El proceso de configuración que uses en el paso 3 dependerá de si tu implementación usa VMs de Compute Engine o grupos de endpoints de red (NEGs) de GKE.

Versiones e idiomas de gRPC admitidos

gRPC es un proyecto de código abierto y su compatibilidad con versiones se describe en las preguntas frecuentes de gRPC. Te recomendamos que uses la versión más reciente de gRPC para asegurarte de que se mitigan las vulnerabilidades de seguridad conocidas. De esta forma, tus aplicaciones también tienen acceso a las funciones más recientes compatibles con Cloud Service Mesh. Las funciones de malla de servicios admitidas en varias implementaciones y versiones de gRPC se indican en GitHub. Para ver una lista de los lenguajes y las funciones de gRPC compatibles con Cloud Service Mesh y los servicios de gRPC sin proxy, consulta las funciones de Cloud Service Mesh.

Cloud Service Mesh mantiene la compatibilidad con las versiones actuales y admitidas de gRPC, y se esfuerza por ser compatible con las versiones de gRPC que tengan menos de un año, de acuerdo con los Google Cloud Términos del Servicio de la Plataforma.

Actualizar clientes de gRPC

Actualiza la biblioteca gRPC de tu aplicación a la versión que admita las funciones que necesites. Para obtener más información, consulta la sección anterior.

Añade el resolvedor de nombres xDS como dependencia a tus aplicaciones gRPC. En las siguientes secciones se muestran los requisitos por idioma para Java y Go. En otros idiomas no hay requisitos adicionales.

Requisitos de Java

En Java, si usas Gradle, añade la dependencia grpc-xds a tu archivo build.gradle. Sustituye LATEST_GRPC_VERSION por la versión más reciente de gRPC.

dependencies {
  runtimeOnly 'io.grpc:grpc-xds:LATEST_GRPC_VERSION'
}

Si usas Maven, añade lo siguiente a la sección <dependencies> de pom.xml. Sustituye LATEST_GRPC_VERSION por la versión más reciente de gRPC.

    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-xds</artifactId>
      <version>LATEST_GRPC_VERSION</version>
      <scope>runtime</scope>
    </dependency>

Requisitos de Go

Si usas Go, importa el paquete xds Go.

Configurar el resolvedor de nombres de gRPC para que use xds

Configura o cambia tus aplicaciones gRPC para que usen el esquema de resolución de nombres xds en el URI de destino, en lugar de DNS o cualquier otro esquema de resolución. Para ello, usa el prefijo xds:/// en el nombre de destino al crear un canal gRPC. El balanceo de carga de los clientes de gRPC se realiza por canal.

Incluye el nombre del servicio utilizado en el URI de destino en la configuración de Cloud Service Mesh. Por ejemplo, en Java, puedes crear el canal con esta estructura, en la que el nombre del servicio es helloworld:

ManagedChannelBuilder.forTarget("xds:///helloworld[:PORT_NUMBER]")

Crear y configurar un archivo de arranque

El esquema de resolución xds indica a la aplicación gRPC que se conecte a Cloud Service Mesh para obtener información de configuración del servicio de destino. Por lo tanto, haz lo siguiente:

  • Crea un archivo de arranque, como se muestra en el siguiente ejemplo. Este archivo indica a gRPC que se conecte a un servidor xDS (malla de servicio de Cloud) para obtener la configuración de servicios específicos.
  • Define una variable de entorno llamada GRPC_XDS_BOOTSTRAP, con el nombre de archivo de arranque como valor de la variable de entorno.

En las instrucciones de configuración se incluyen ejemplos que muestran cómo generar el archivo de arranque. Para tu comodidad, puedes usar la versión más reciente del generador de bootstrap de gRPC de Cloud Service Mesh.

Junto con la aplicación, debe incluirse un archivo de arranque que contenga la información necesaria para conectarse a Cloud Service Mesh. Un archivo de arranque de ejemplo tiene este aspecto:

{
  "xds_servers": [
    {
      "server_uri": "trafficdirector.googleapis.com:443",
      "channel_creds": [
        {
          "type": "google_default"
        }
      ],
      "server_features": ["xds_v3"]
    }
  ],
  "node": {
    "id": "projects/123456789012/networks/default/nodes/b7f9c818-fb46-43ca-8662-d3bdbcf7ec18",
    "metadata": {
      "TRAFFICDIRECTOR_NETWORK_NAME": "default"
    },
    "locality": {
      "zone": "us-central1-a"
    }
  }
}

En la siguiente tabla se explican los campos del archivo de arranque.

Campo Valor y descripción
xds_servers Lista de servidores xDS. gRPC solo usa el primero de la lista.
server_uri Especifica al menos uno. gRPC intenta conectarse solo al primer servidor xDS de la lista de xds_servers. El valor predeterminado es trafficdirector.googleapis.com:443.
channel_creds Credenciales que se van a usar con el servidor xDS.
type Usa el valor google_default. Para obtener más información sobre cómo se obtienen las credenciales, consulta Cómo funcionan las credenciales predeterminadas de la aplicación.
server_features Lista de funciones admitidas por el servidor, como la compatibilidad con xDS v3. El valor predeterminado está vacío.
node Información sobre el cliente que se conecta al servidor xDS.
id

El id debe tener el siguiente formato, tal como se muestra en el ejemplo anterior:

projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID

Proporcione una cadena única como valor de ID. Esto ayuda a identificar el cliente de gRPC que se conecta a Cloud Service Mesh.

metadata Información específica del servidor xDS.
TRAFFICDIRECTOR_NETWORK_NAME Si el campo está vacío o no se especifica, el valor se define como default.
locality La Google Cloud zona en la que se ejecuta el cliente gRPC.

Continuar el proceso de configuración

Una vez que hayas completado los requisitos previos que se describen en este documento, consulta uno de los siguientes: