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.

Configuración de varios proyectos con recursos Mesh
Configuración de varios proyectos con recursos Mesh (haz clic para agrandar)

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.

  1. En el archivo shared-mesh.yaml, crea una especificación de 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. Escribe el URI completo del recurso Mesh, ya que los propietarios del servicio necesitan el URI para conectar sus rutas a este Mesh.

    /projects/[HOST_PROJECT_NUMBER]/locations/global/meshes/shared-mesh
    
  4. Otorga el permiso de IAM networkservices.meshes.use para esta Mesh a las cuentas de servicio entre proyectos que deberían poder adjuntar la información de sus servicios a esta Mesh.

    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.

  1. 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 o Gateway, consulta Cómo mostrar una lista de recursos Route. Esta función está en vista previa.