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:
- Información general sobre Cloud Service Mesh
- Información general sobre Cloud Service Mesh con servicios gRPC sin proxy
- Descripción general de las nuevas APIs de enrutamiento de servicios de Cloud Service Mesh
Requisitos previos
Prepara tu entorno completando las siguientes tareas:
- Habilita la facturación.
- Concede los permisos necesarios.
- Habilita la API de Traffic Director en tu proyecto.
- 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
En la Google Cloud consola, ve a la página Biblioteca de APIs de tu proyecto.
En el campo Buscar APIs y servicios, introduce
Traffic Director
.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.
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
En la Google Cloud consola, ve a la página Gestión de identidades y accesos.
Selecciona el proyecto.
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.
Despliega el rol. En la cuenta de servicio que quieras editar, haz clic en
Editar.Selecciona el rol Otro > Cliente de Cloud Service Mesh.
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
: introducegcloud 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:
- Actualiza tus clientes de gRPC a la versión más reciente de gRPC, con el parche más reciente.
- 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.
- 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 projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID Proporcione una cadena única como valor de |
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:
- Continúa con la configuración de Cloud Service Mesh para GKE y los servicios gRPC sin proxy.
- Continúa con la sección Configurar Cloud Service Mesh con Compute Engine y servicios de gRPC sin proxy.
- Sigue las guías de configuración de la API de Kubernetes Gateway de Cloud Service Mesh en GKE. Ten en cuenta que la función API Gateway está en versión preliminar.