Prepárate para configurar las APIs de enrutamiento de servicios con Envoy y cargas de trabajo sin proxy
En este documento, se proporciona información sobre las tareas previas para configurar La malla de servicios de Cloud a través de las APIs de enrutamiento de servicios con proxies de Envoy con gRPC sin proxy como plano de datos.
La configuración de Cloud Service Mesh incluye 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 de gRPC sin proxy. Las fases adicionales se abordan en las guías específicas de la plataforma que se enumeran en Continúa con el proceso de configuración más adelante en este documento.
Antes de leer esta guía, familiarízate con los siguientes documentos: que proporcionan una descripción general del uso de Cloud Service Mesh con la de enrutamiento y las APIs de puerta de enlace:
- Descripción general de Cloud Service Mesh
- Descripción general de las APIs de enrutamiento de servicios de Cloud Service Mesh
Requisitos previos
Completa las siguientes tareas para preparar tu entorno local:
- Configura proyectos para satisfacer las necesidades de tu empresa.
- Habilitar la facturación
- Otorga los permisos necesarios.
- Habilita la API de Traffic Director y otras APIs para tu proyecto.
- Asegúrate de que la cuenta de servicio tenga los permisos necesarios para acceder al API de Traffic Director.
- Habilita la API de Cloud DNS y configura Cloud DNS.
En las siguientes secciones, se proporcionan instrucciones para cada tarea.
Configura proyectos
Para configurar y administrar tus proyectos, consulta Crea y administra proyectos y documentación relacionada.
Habilitar facturación
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Para obtener más información, consulta Habilita, inhabilita o cambia la facturación de un proyecto.
Otorga los permisos de IAM necesarios
Debes tener permisos suficientes de Identity and Access Management (IAM) para crear una VM
y modificar una red para configurar Cloud Service Mesh. Si tienes el
Rol del propietario o editor del proyecto
(roles/owner
o roles/editor
) en el proyecto en el que habilitarás
Cloud Service Mesh, tienes automáticamente los permisos correctos.
De lo contrario, debes tener todos los roles de IAM que se muestran en el siguiente tabla. Si tienes estos roles, también están asociados permisos, 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
( roles/iam.serviceAccountAdmin ) |
Habilitar Cloud Service Mesh | Administrador de Service Usage
( roles/serviceusage.serviceUsageAdmin ) |
Crear redes, subredes y componentes del balanceador de cargas | Administrador de red de Compute
( roles/compute.networkAdmin ) |
Agregar y quitar reglas de firewall | Administrador de seguridad de Compute
( roles/compute.securityAdmin ) |
Crea instancias | Administrador de instancias de Compute
( roles/compute.instanceAdmin ) |
Permite el acceso a las cuentas de servicio. | Usuario de cuenta de servicio
( roles/iam.serviceAccountUser ) |
Habilita la cuenta de servicio para que realice las tareas necesarias. | Usuario de la cuenta de servicio
( roles.trafficdirector.client) |
Las VMs de Compute Engine deben tener la
https://www.googleapis.com/auth/cloud-platform
del proyecto. Para obtener más información, consulta Soluciona problemas de implementaciones que usan gRPC sin proxy.
Habilita la cuenta de servicio para acceder a la API de Traffic Director
Cuando configuras el plano de datos y lo conectas a Cloud Service Mesh,
Los clientes xDS, ya sean proxies de Envoy o clientes de 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 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.
A menos que modifiques la configuración, Google Cloud usa la cuenta de servicio predeterminada de Compute Engine.
Para otorgar acceso a la API de Traffic Director a la cuenta de servicio, usa el siguiente comando: instrucciones.
Console
En la consola de Google Cloud, ve a la página IAM y administración.
Selecciona tu proyecto.
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.
Expande el rol. En la cuenta de servicio que deseas editar, haz clic en
Editar.Selecciona el rol Otro > Cliente de la malla de servicios de Cloud.
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
Reemplaza lo siguiente:
PROJECT
: ingresagcloud config get-value project
SERVICE_ACCOUNT_EMAIL
: el correo electrónico asociado con la cuenta de servicio
Habilite las API necesarias
Habilita las siguientes APIs obligatorias.
- osconfig.googleapis.com
- trafficdirector.googleapis.com
- compute.googleapis.com
- networkservices.googleapis.com
Para habilitar las APIs requeridas, sigue las siguientes instrucciones.
Console
En la consola de Google Cloud, ve a la página Biblioteca de la API de tu proyecto.
En el campo Buscar API y servicios, ingresa
Traffic Director
.En la lista de resultados de la búsqueda, haz clic en API de Traffic Director. Si no ves la API de Traffic Director, significa que no tienes los permisos necesarios para habilitarla.
En la página API de Traffic Director, haz clic en Habilitar.
En el campo Buscar API y servicios, ingresa
OS Config
.En la lista de resultados de la búsqueda, haz clic en Configuración del SO. Si no ves el botón de la API de configuración del SO en la lista, esto significa que no tienes permisos para habilitar la API de Traffic Director.
En la página API de configuración del SO, haz clic en Habilitar.
En el campo Buscar API y servicios, ingresa
Compute
.En la lista de resultados de la búsqueda, haz clic en API de Compute Engine. Si no ves la API de Compute Engine en la lista, significa que no tienes los permisos necesarios para habilitarla.
En la página API de Compute Engine, haz clic en Habilitar.
En el campo Buscar API y servicios, ingresa
Network Services
.En la lista de resultados de la búsqueda, haz clic en API de Network Services. Si no ves el botón Network Services API en la lista, esto significa que no tienes los permisos necesarios permisos para habilitar la API de Network Services.
En la página API de 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 APIs de plano de control de xDS.
Requisitos adicionales con los 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 realizas implementaciones con gRPC sin proxy, consulta Requisitos adicionales con gRPC sin proxy.
Cómo está instalado Envoy
Durante el proceso de implementación de Cloud Service Mesh, creas una VM que instala Envoy automáticamente en las VMs en las que tus aplicaciones cuando se ejecute.
Acerca de las versiones de Envoy
Envoy debe tener la versión 1.20.0 o posterior para funcionar con Cloud Service Mesh. Recomendamos usar siempre la versión más reciente de Envoy para garantizar que se mitiguen las vulnerabilidades de seguridad conocidas.
Si decides implementar Envoy con uno de nuestros métodos automatizados, nosotros nos encargamos de esta tarea de la siguiente manera:
La implementación automatizada de Envoy con VMs de Compute Engine instala Envoy que validamos para que funcionen con Cloud Service Mesh. Cuando se crea una VM nueva mediante la plantilla de instancias, esta recibe la versión más reciente que validamos. Si tienes una VM de larga duración, puedes usar una actualización progresiva para reemplazar las VM existentes y elegir la versión más reciente.
Para obtener información sobre las versiones específicas de Envoy, consulta Historial de versiones. Para obtener información sobre las vulnerabilidades de seguridad, consulta Asesorías 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 implementas con Envoy consulta Requisitos adicionales con los proxies de Envoy.
Proceso general con gRPC sin proxy
Sigue este procedimiento general para configurar aplicaciones de gRPC sin proxy en una malla de servicios:
- Actualiza tus clientes de gRPC a la última versión de gRPC con el parche más reciente.
- Actualice las contraseñas de sus clientes Esquema del agente de resolución de nombres de gRPC cuando creas un canal especificar un archivo de arranque de Cloud Service Mesh.
- Configurar los recursos de Cloud Service Mesh 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 GKE grupos de extremos de red (NEG) de GKE..
Idiomas y versiones compatibles de gRPC
gRPC es un proyecto de código abierto y la compatibilidad de sus 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 mitiguen las vulnerabilidades de seguridad conocidas. Esto también garantiza que tus aplicaciones tener acceso a las últimas funciones compatibles con Cloud Service Mesh. Las funciones de la malla de servicios compatibles con varias implementaciones y versiones de gRPC se enumeran en GitHub. Para obtener una lista de los lenguajes y las funciones de gRPC compatibles con Cloud Service Mesh y los servicios de gRPC sin proxy, consulta Funciones de Cloud Service Mesh.
Cloud Service Mesh mantiene la compatibilidad con las versiones actuales y compatibles de gRPC y se esfuerza por ser compatible con las versiones de gRPC de menos de un año antigua, sujeta a las Condiciones del Servicio de Google Cloud Platform.
Actualiza tus clientes de gRPC
Actualiza la biblioteca de gRPC en tu aplicación a la versión que admita las funciones que necesitas. Para obtener más información, consulta la sección anterior.
Agrega el agente de resolución de nombres xDS como una dependencia a tus aplicaciones de gRPC. Los requisitos por lenguaje para Java y Go se muestran en las siguientes secciones. Otros lenguajes no tienen requisitos adicionales.
Requisitos para Java
En Java, si usas Gradle, agrega la dependencia grpc-xds
al archivo build.gradle
. Reemplaza LATEST_GRPC_VERSION
por la versión más reciente de gRPC.
dependencies { runtimeOnly 'io.grpc:grpc-xds:LATEST_GRPC_VERSION' }
Si usas Maven, agrega lo siguiente a la sección <dependencies>
de pom.xml. Reemplaza 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 para Go
Si usas Go, importa el paquete xds de Go.
Configura el agente de resolución de nombres de gRPC para que use 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.
Incluye el nombre del servicio usado en el URI de destino en la
Configuración de la malla de servicios de Cloud. 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]")
Crea y configura un archivo de arranque
El esquema del agente de resolución xds
le indica a la aplicación de gRPC que se conecte a
Cloud Service Mesh para obtener información de configuración para el destino
servicio. Por lo tanto, haz lo siguiente:
- Crea un archivo de arranque, como se muestra en el siguiente ejemplo. Este archivo le indica a gRPC que se conecte a un servidor xDS (Cloud Service Mesh) para obtener la configuración de 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. Para tu comodidad, puedes usar la versión más reciente del generador de arranque de gRPC de Cloud Service Mesh.
Un archivo de arranque que contiene la información necesaria para conectarse a Se debe incluir Cloud Service Mesh junto con la aplicación. 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" } ], "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 |
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
cómo se obtienen las credenciales, consulta
Cómo comenzar a usar la autenticación |
server_features |
Una lista de funciones admitidas por el servidor, como la asistencia de xDS v3. El valor predeterminado es vacío. |
node |
Información sobre el cliente que se conecta al servidor xDS. |
id |
El projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID Proporciona una string única como el valor de |
metadata |
Información específica del servidor xDS. |
TRAFFICDIRECTOR_MESH_NAME |
Si el campo está vacío o no se especifica, el valor se establece en default . |
locality |
La zona de Google Cloud en la que se ejecuta el cliente de gRPC. |
Continúa el proceso de configuración
Después de completar los requisitos previos que se describen en este documento, continúa con uno de estos documentos si estás configurando Cloud Service Mesh con las APIs de enrutamiento de servicios:
- Configura servicios de gRPC sin proxy con un recurso
Mesh
- Configura proxies de Envoy con servicios HTTP
- Configura una puerta de enlace de entrada
- Configura servicios de TCP con un recurso
TCPRoute
- Configura referencias entre proyectos con recursos
Mesh
yRoute
- Configura el enrutamiento TLS de la puerta de enlace