Prepararse para configurar APIs de enrutamiento en servicios con Envoy y cargas de trabajo sin proxy

En este documento se proporciona información sobre las tareas previas necesarias para configurar Cloud Service Mesh mediante las APIs de enrutamiento de servicios con proxies de Envoy o con gRPC sin proxy como plano de datos.

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 instancias de VM o aplicaciones gRPC sin proxy. Las fases adicionales se describen en las guías específicas de cada plataforma que se indican en la sección Continuar 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 las APIs de enrutamiento de servicios y las APIs de Gateway:

Requisitos previos

Prepara tu entorno completando las siguientes tareas:

  1. Configura proyectos que se adapten a las necesidades de tu empresa.
  2. Habilita la facturación.
  3. Concede los permisos necesarios.
  4. Habilita la API de Traffic Director y otras APIs en tu proyecto.
  5. Asegúrate de que la cuenta de servicio tenga permisos suficientes para acceder a la API Traffic Director.
  6. Habilita la API Cloud DNS y configura Cloud DNS.

En las siguientes secciones se proporcionan instrucciones para cada tarea.

Configurar proyectos

Para configurar y gestionar tus proyectos, consulta el artículo Crear y gestionar proyectos y la documentación relacionada.

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 tienes 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, mallas, pasarelas 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)
Permite acceder a cuentas de servicio. Usuario de cuenta de servicio
(roles/iam.serviceAccountUser)
Habilita la cuenta de servicio para que pueda realizar las tareas necesarias. El plano de datos de xDS (Envoy o gRPC sin proxy) necesita este permiso para recibir la configuración de xDS del plano de control. Cliente de Traffic Director
(roles/trafficdirector.client)

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.

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, ya sean proxies de Envoy o clientes gRPC sin proxy, 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.

A menos que modifiques la configuración, Google Cloud utiliza la cuenta de servicio predeterminada de Compute Engine.

Para conceder acceso a la API Traffic Director a la cuenta de servicio, sigue estas instrucciones.

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 Traffic Director.

  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

Habilitar las APIs necesarias

Habilita las APIs obligatorias que se indican a continuación.

  • osconfig.googleapis.com
  • trafficdirector.googleapis.com
  • compute.googleapis.com
  • networkservices.googleapis.com

Para habilitar las APIs necesarias, sigue estas instrucciones.

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.

  5. En el campo Buscar APIs y servicios, introduce OS Config.

  6. En la lista de resultados de búsqueda, haz clic en Configuración del SO. Si no ves la API OS Config, significa que no tienes los permisos necesarios para habilitar la API Traffic Director.

  7. En la página API OS Config, haz clic en Habilitar.

  8. En el campo Buscar APIs y servicios, introduce Compute.

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

  10. En la página API de Compute Engine, haz clic en Habilitar.

  11. En el campo Buscar APIs y servicios, introduce Network Services.

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

  13. En la página API Network Services, haz clic en Habilitar.

gcloud

Ejecuta el siguiente comando:

gcloud services enable osconfig.googleapis.com \
trafficdirector.googleapis.com \
compute.googleapis.com \
networkservices.googleapis.com

Versión de xDS

Las APIs de enrutamiento de servicios requieren que uses xDS v3. Para obtener información sobre cómo actualizar tu implementación de xDS v2 a xDS v3, consulta las APIs del plano de control de xDS.

Requisitos adicionales con proxies de Envoy

En esta sección se describen los requisitos adicionales para usar Cloud Service Mesh con las APIs de enrutamiento de servicios y los proxies de Envoy. Si vas a hacer un despliegue con gRPC sin proxy, consulta los requisitos adicionales de gRPC sin proxy.

Cómo se instala Envoy

Durante el proceso de despliegue de Cloud Service Mesh, se crea una plantilla de máquina virtual que instala automáticamente Envoy en las máquinas virtuales en las que se ejecutan tus aplicaciones.

Acerca de las versiones de Envoy

Para que Envoy funcione con Cloud Service Mesh, debe tener la versión 1.20.0 o una posterior. Te recomendamos que utilices siempre la versión más reciente de Envoy para asegurarte de que se mitiguen las vulnerabilidades de seguridad conocidas.

Si decides implementar Envoy con uno de nuestros métodos automatizados, nosotros nos encargaremos de esta tarea de la siguiente manera:

El despliegue automatizado de Envoy con máquinas virtuales de Compute Engine instala la versión de Envoy que hemos validado para que funcione con Cloud Service Mesh. Cuando se crea una VM con la plantilla de instancia, la VM recibe la última versión que hemos validado. Si tienes una máquina virtual que se ejecuta durante mucho tiempo, puedes usar una actualización continua para sustituir las máquinas virtuales que tengas y obtener la versión más reciente.

Para obtener información sobre versiones específicas de Envoy, consulta el historial de versiones. Para obtener información sobre las vulnerabilidades de seguridad, consulta Avisos de seguridad.

Requisitos adicionales con gRPC sin proxy

En esta sección se describen los requisitos adicionales para usar Cloud Service Mesh con las APIs de enrutamiento de servicios y gRPC sin proxy. Si vas a implementar proxies de Envoy, consulta los requisitos adicionales para proxies de Envoy.

Proceso general con gRPC sin proxy

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_MESH_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 documentos si vas a configurar Cloud Service Mesh con las APIs de enrutamiento de servicios: