Configura referencias entre proyectos
Este documento solo se aplica a Cloud Service Mesh con las APIs de enrutamiento de servicio de Google Cloud. No uses este documento si estás configurando Cloud Service Mesh con las APIs de Istio.
En algunos casos, la configuración de la malla de servicios incluye servicios que se encuentran en diferentes proyectos. Por ejemplo, en implementaciones de VPC compartida o VPC con intercambio de tráfico, es posible que cada propietario de proyecto defina su propio conjunto de servicios a fin de que estos servicios estén disponibles para todos los demás proyectos.
Esta configuración se denomina configuración de varios proyectos porque se combinan varios recursos definidos en diferentes proyectos para formar una sola configuración que se puede entregar en un cliente de gRPC sin proxy o un proxy de Envoy.
En las siguientes instrucciones, se usan los recursos Mesh
y HTTPRoute
, pero se pueden aplicar al recurso Gateway
y a los recursos GRPCRoute
y TCPRoute
.
Configura el recurso Mesh
Designa un proyecto como el proyecto host en el que administras el recurso Mesh
. Cualquier cuenta de servicio con permisos para crear, actualizar o borrar recursos Mesh
en este proyecto puede controlar las configuraciones de enrutamiento conectadas a los recursos Mesh
en este proyecto.
En el archivo
shared-mesh.yaml
, crea una especificación deMesh
.name: shared-mesh interceptionPort: 15001
Define un recurso
Mesh
en este proyecto.gcloud network-services meshes import shared-mesh \ --source=shared-mesh.yaml \ --location=global
Escribe el URI completo del recurso
Mesh
, ya que los propietarios del servicio necesitan el URI para conectar sus rutas a esteMesh
./projects/[HOST_PROJECT_NUMBER]/locations/global/meshes/shared-mesh
Otorga el permiso de IAM
networkservices.meshes.use
para estaMesh
a las cuentas de servicio entre proyectos que deberían poder adjuntar la información de sus servicios a estaMesh
.gcloud projects add-iam-policy-binding [HOST_PROJECT_NUMBER] --member='[HTTP_ROUTE_SERVICE_OWNER_ACCOUNT]' --role='roles/compute.networkAdmin'
Todos los propietarios del servicio que tienen el permiso networkservices.meshes.use
otorgado pueden agregar sus reglas de enrutamiento a este recurso Mesh
.
Configura el enrutamiento en los proyectos de servicio
Cada propietario del servicio debe crear uno o más servicios de backend y recursos de Route
en su proyecto, de manera similar al ejemplo en la guía de configuración del proxy de sidecar.
La única diferencia es que cada recurso HTTPRoute
, GRPCRoute
o TCPRoute
debe tener el URI del recurso Mesh
del proyecto host en el campo meshes
.
Usa lo siguiente para propagar el campo
meshes
. Puedes usar el ID o el número del proyecto.echo "name: sharedvpc-http-route hostnames: - helloworld-gce meshes: - /projects/[HOST_PROJECT_NUMBER]/locations/global/meshes/shared-mesh rules: - action: destinations: - serviceName: \"url/of/the/service\"" | \ gcloud network-services http-routes import sharedvpc-http-route \ --source=- \ --location=global
Crea los servicios del cliente en los proyectos de servicio
Cuando configuras un cliente de Cloud Service Mesh que se encuentra en un proyecto de servicio, la configuración de arranque debe especificar el número de proyecto donde se encuentra el recurso Mesh
y el nombre de Mesh
. Este requisito se aplica al proxy de Envoy y a las implementaciones de gRPC sin proxy.
Con las implementaciones de Envoy, usa la opción --service-proxy:project-number
.
¿Qué sigue?
- Para obtener información sobre cómo mostrar una lista de recursos de ruta asociados con un recurso
Mesh
oGateway
, consulta Cómo mostrar una lista de recursosRoute
. Esta función está en vista previa.