Prepárate para configurar Traffic Director con servicios de gRPC sin proxy

En esta guía, encontrarás instrucciones para preparar la configuración de Traffic Director con aplicaciones de gRPC sin proxy.

Antes de comenzar

Asegúrate de estar familiarizado con los conceptos generales de Traffic Director. Lee los siguientes documentos:

En estos documentos, se proporciona una descripción general del uso de Traffic Director con aplicaciones de gRPC sin proxy.

Preparación general

Primero, prepara tu entorno mediante las tareas que se describen en las siguientes secciones.

Otorga los permisos de IAM necesarios

Debes tener permisos suficientes para crear instancias de VM y modificar una red a fin de configurar Traffic Director. Si tienes la función de propietario o editor del proyecto en el proyecto en el que habilitas Traffic Director, automáticamente tienes los permisos correctos.

De lo contrario, debes tener todas las siguientes funciones de IAM de Compute Engine. Si tienes estas funciones, también tienes sus permisos asociados, como se describe en la documentación de IAM de Compute Engine.

Tarea Función requerida
Configurar políticas de IAM para una cuenta de servicio Administrador de cuenta de servicio
Obtener el recurso de regla de reenvío global Visualizador de la red de Compute
Habilitar Traffic Director Administrador de Service Usage
Crear redes, subredes y componentes del balanceador de cargas Administrador de redes
Agregar y quitar reglas de firewall Administrador de seguridad
Crear instancias Administrador de instancias de Compute

Además, las VM de Compute Engine deben tener el permiso https://www.googleapis.com/auth/cloud-platform.

Habilita la API de Traffic Director

Console

  1. En Cloud Console, ve a las API y los servicios del proyecto.
    Ir a la página Biblioteca de API
  2. Para buscar la API de Traffic Director, usa el campo de búsqueda. Si no ves la API de Traffic Director, significa que no tienes los permisos necesarios para habilitarla.
  3. Haz clic en la API de Traffic Director.
  4. En la página que muestra la información de la API, haz clic en Habilitar.

gcloud

gcloud services enable trafficdirector.googleapis.com

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

Cuando configuras el plano de datos y lo conectas a Traffic Director, los clientes de xDS se conectan al servidor trafficdirector.googleapis.com de xDS. Estos clientes de xDS presentan una identidad de cuenta de servicio al servidor de xDS a fin de garantizar que la comunicación entre el plano de datos y el plano de control estén autorizadas de manera adecuada.

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

La cuenta de servicio que usan los clientes de xDS debe tener el permiso de IAM compute.globalForwardingRules.get a nivel de proyecto. También puedes asignar la función compute.networkViewer a la cuenta de servicio para otorgar este permiso.

Console

  1. Abre la página IAM y administración en Cloud Console.

    Abrir la página IAM y administración

  2. Selecciona tu proyecto.

  3. Identifica la cuenta de servicio a la que le quieres agregar una función.

    • Si la cuenta de servicio no se encuentra aún en la lista de miembros, no tiene ninguna función asignada. Haz clic en Agregar y, luego, ingresa la dirección de correo electrónico de la cuenta de servicio.
    • Si la cuenta de servicio ya se encuentra en la lista de miembros es porque tiene funciones existentes. Selecciona la cuenta de servicio y haz clic en la pestaña Funciones.
  4. Haz clic en el botón Editar de la cuenta de servicio que deseas editar.

  5. Selecciona la función Compute Engine > Visualizador de red de Compute.

  6. Haz clic en Guardar para aplicar la función a la cuenta de servicio.

gcloud

Reemplaza la variable ${SERVICE_ACCOUNT_EMAIL} con el valor correcto.

PROJECT=`gcloud config get-value project`
gcloud projects add-iam-policy-binding ${PROJECT} \
   --member serviceAccount:${SERVICE_ACCOUNT_EMAIL} \
   --role roles/compute.networkViewer

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

  1. Actualiza los clientes de gRPC a la versión 1.30.0 o posterior con el parche más reciente.
  2. Actualiza el esquema del agente de resolución de nombres de gRPC de los clientes cuando crees un canal y especifiques un archivo de arranque de Traffic Director.
  3. Configura los recursos de Traffic Director y Cloud Load Balancing.

En esta guía, se proporciona información para completar los dos primeros pasos. El proceso de configuración que uses en el paso 3 dependerá de si tu implementación usa VM de Compute Engine o NEG de Google Kubernetes Engine.

Actualiza tus clientes de gRPC

Primero, debes actualizar los clientes de gRPC a la versión 1.30.0 o posterior con el parche más reciente. La mayoría de las versiones del servidor de gRPC pueden interoperar con los clientes de gRPC que usan la versión 1.30.0 o posterior con el parche más reciente, por lo que no necesitas actualizar todos los servidores de gRPC de manera simultánea.

Lenguajes compatibles y versiones de gRPC

Tus clientes de gRPC deben usar la versión 1.30.0 o posterior de gRPC con el parche más reciente. Los lenguajes C++, Java, Go, Python, PHP, Ruby y C# son compatibles con xDSv2 y Traffic Director. Agrega el agente de resolución de nombres xDS como una dependencia a las aplicaciones de gRPC. A continuación, se muestran los requisitos por lenguaje para Java y Go. Otros lenguajes no tienen requisitos adicionales.

Requisitos para Java

En Java, si usas Gradle, agrega el repositorio de instantáneas y la dependencia grpc-xds al archivo build.gradle:

repositories {
    mavenLocal()
}
dependencies {
  runtimeOnly 'io.grpc:grpc-xds:1.30.0-SNAPSHOT'
}

Si usas Maven, agrega lo siguiente a la sección <dependencies> de pom.xml:

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

Requisitos para Go

Si usas Go, debes importar el paquete xds de Go.

El agente de resolución de nombres de gRPC debe ser de xds

Establece o cambia tus aplicaciones de gRPC para que usen el esquema de resolución de nombres de xds en el URI de destino, en lugar del de DNS o cualquier otro esquema de agente de resolución. Para ello, usa el prefijo xds:/// en el nombre de destino cuando crees un canal de gRPC. El balanceo de cargas para clientes de gRPC se configura por canal.

También debes incluir el nombre del servicio que se usa en el URI de destino en la configuración de Traffic Director. Por ejemplo, en Java, creas el canal mediante esta estructura, en la que el nombre del servicio es helloworld:

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

Archivo de arranque

El esquema de agente de resolución de xds indica a la aplicación de gRPC que se conecte a Traffic Director a fin de obtener información de configuración para el servicio de destino. Por lo tanto, haz lo siguiente:

  • Crea un archivo de arranque, como se muestra a continuación. Este archivo indica a gRPC que se conecte a un servidor xDS (Traffic Director) a fin de obtener la configuración para servicios específicos.
  • Define una variable de entorno llamada GRPC_XDS_BOOTSTRAP, con el nombre del archivo de arranque como el valor de la variable de entorno.

Las instrucciones de configuración contienen ejemplos que muestran cómo generar el archivo de arranque.

Con la aplicación, se debe incluir un archivo de arranque que contenga la información necesaria para conectarse a Traffic Director. Un archivo de arranque de muestra se ve de la siguiente manera:

{
  "xds_servers": [
    {
      "server_uri": "trafficdirector.googleapis.com:443",
      "channel_creds": [
        {
          "type": "google_default"
        }
      ]
    }
  ],
  "node": {
    "id": "b7f9c818-fb46-43ca-8662-d3bdbcf7ec18~10.0.0.1",
    "metadata": {
      "TRAFFICDIRECTOR_GCP_PROJECT_NUMBER": "123456789012",
      "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 Una lista de servidores xDS. gRPC usa solo el primero de la lista.
server_uri Especifica al menos uno. gRPC intenta conectarse solo al primer servidor xDS de la lista “xds_servers”. El valor predeterminado es trafficdirector.googleapis.com:443
channel_creds Credenciales para 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 Comienza a usar la autenticación.
node Información sobre el cliente que se conecta al servidor xDS.
id Proporciona una string única en el campo de id. Esto ayuda a identificar el cliente de gRPC que se conecta a Traffic Director.
metadata Información específica del servidor xDS.
TRAFFICDIRECTOR_GCP_PROJECT_NUMBER El número de proyecto en el que se ejecuta Traffic Director.
TRAFFICDIRECTOR_NETWORK_NAME Si el campo está vacío o no se especifica, el valor se establece en default.
locality La zona de GCP en la que se ejecuta el cliente de gRPC

Próximos pasos

Después de completar la preparación que se describe en este documento, sigue las instrucciones en uno de estos documentos: