Configurar referencias entre proyectos

Este documento solo se aplica a Cloud Service Mesh con las APIs de enrutamiento de servicios Google Cloud. No utilices este documento si vas a configurar Cloud Service Mesh con las APIs de Istio.

En algunos casos, la configuración de la malla de servicios incluye servicios que están en proyectos diferentes. Por ejemplo, en las implementaciones de VPC compartida o de VPC emparejada, cada propietario de un proyecto puede definir su propio conjunto de servicios para que estén disponibles para el resto de los proyectos.

Configuración entre proyectos con recursos de malla
Configuración entre proyectos con recursos de Mesh (haz clic en la imagen para ampliarla)

Esta configuración se denomina configuración entre proyectos porque se combinan varios recursos definidos en diferentes proyectos para formar una única configuración que se puede servir a un proxy de Envoy o a un cliente gRPC sin proxy.

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.

Configurar el recurso Mesh

Designa un proyecto como proyecto host en el que administrar el recurso Mesh. Cualquier cuenta de servicio que tenga permisos para crear, actualizar o eliminar recursos Mesh en este proyecto puede controlar las configuraciones de enrutamiento asociadas a los recursos Mesh de este proyecto.

  1. En el archivo shared-mesh.yaml, crea una especificación Mesh.

    name: shared-mesh
    interceptionPort: 15001
    
  2. Define un recurso Mesh en este proyecto.

    gcloud network-services meshes import shared-mesh \
      --source=shared-mesh.yaml \
      --location=global
    
  3. Anota el URI completo del recurso Mesh, ya que los propietarios del servicio necesitan el URI para adjuntar sus rutas a este Mesh.

    /projects/HOST_PROJECT_NUMBER/locations/global/meshes/shared-mesh
    
  4. Concede el permiso de gestión de identidades y accesos networkservices.meshes.use a las cuentas de servicio entre proyectos que deban poder adjuntar la información de sus servicios a este Mesh.Mesh

    gcloud projects add-iam-policy-binding HOST_PROJECT_NUMBER
      --member='HTTP_ROUTE_SERVICE_OWNER_ACCOUNT'
      --role='roles/compute.networkAdmin'
    

Todos los propietarios de servicios que tengannetworkservices.meshes.use permiso pueden añadir sus reglas de enrutamiento a este recurso.Mesh

Configurar el enrutamiento en los proyectos de servicio

Cada propietario de un servicio debe crear uno o varios servicios de backend y recursos Route en su proyecto, de forma similar al ejemplo de la guía de configuración de proxies adicionales. 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.

  1. Utiliza la siguiente información para rellenar 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
    

Crear los servicios de 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 del proyecto en el que se encuentra el recurso Mesh y el nombre Mesh. Este requisito se aplica tanto a los proxies Envoy como a los despliegues de gRPC sin proxy. En los despliegues de Envoy, usa la opción --service-proxy:project-number.

Siguientes pasos

  • Para obtener información sobre cómo enumerar los recursos de ruta asociados a un recurso Mesh o Gateway, consulta Enumerar recursos de Route.