Usar redes de VPC compartidas

Esta página se aplica a Apigee, pero no a Apigee Hybrid.

Consulta la documentación de Apigee Edge.

En este documento se explica cómo configurar un host de nube privada virtual (VPC) compartida y cómo adjuntarle proyectos de servicio de Apigee y de backend independientes. Las redes de VPC compartidas te permiten implementar una infraestructura de red gestionada de forma centralizada con Google Cloud. Puede usar una sola red de VPC en un proyecto host para conectar recursos de varios proyectos de servicio.

Ventajas de la VPC compartida

El tiempo de ejecución de Apigee (que se ejecuta en una VPC gestionada por Google) se empareja con la VPC de tu propiedad. En esta topología, el endpoint de tiempo de ejecución de Apigee puede comunicarse con tu red VPC, como se muestra en el siguiente diagrama:

VPC compartida con back-ends internos en la VPC de otro proyecto

Consulta también la información general sobre la arquitectura de Apigee.

En muchos casos, la topología descrita anteriormente es demasiado sencilla, ya que la red de VPC forma parte de un solo proyecto de Google Cloud y muchas organizaciones quieren seguir las prácticas recomendadas para las jerarquías de recursos y separar su infraestructura en varios proyectos. Imagina una topología de red en la que el proyecto de arrendatario de Apigee esté emparejado con una red de VPC como antes, pero que tenga back-ends internos ubicados en la VPC de otro proyecto. Como se muestra en este diagrama:

VPC compartida con back-ends internos en la VPC de otro proyecto

Si emparejas tu VPC de Apigee con la VPC de backend, tal como se muestra en el diagrama, se podrá acceder al backend desde tu red VPC de Apigee y viceversa, ya que el emparejamiento de redes es simétrico. Sin embargo, el proyecto de arrendatario de Apigee solo puede comunicarse con la VPC de Apigee, ya que el emparejamiento no es transitivo, tal como se describe en la documentación sobre el emparejamiento de VPCs. Para que funcione, puedes implementar proxies adicionales en tu VPC de Apigee para reenviar el tráfico a través del enlace de peering a la VPC de backend. Sin embargo, este enfoque añade una sobrecarga operativa y de mantenimiento adicionales.

La VPC compartida ofrece una solución al problema descrito anteriormente. La VPC compartida te permite establecer la conectividad entre el tiempo de ejecución de Apigee y los back-ends que se encuentran en otros proyectos de Google Cloud de la misma organización sin necesidad de componentes de red adicionales.

Configurar una VPC compartida con Apigee

En esta sección se explica cómo adjuntar un proyecto de servicio de VPC de Apigee a un host de VPC compartida. Las subredes definidas en el proyecto del host se comparten con los proyectos de servicio. En una sección posterior, explicaremos cómo crear una segunda subred para los servicios backend implementados en un segundo proyecto de servicio de VPC. En el siguiente diagrama se muestra la arquitectura resultante:

Descripción general de la arquitectura de VPC compartida

Apigee proporciona una secuencia de comandos de aprovisionamiento para simplificar la creación de la topología necesaria. Sigue los pasos que se indican en esta sección para descargar y usar la secuencia de comandos de aprovisionamiento para configurar Apigee con una VPC compartida.

Requisitos previos

  1. Consulta los conceptos que se explican en la descripción general de la VPC compartida. Es importante entender los conceptos de proyecto host y proyecto de servicio.
  2. Crea un proyecto de Google Cloud que puedas configurar para la VPC compartida. Este proyecto es el proyecto del host. Consulta el artículo Crear y gestionar proyectos.
  3. Sigue los pasos que se indican en Aprovisionar una VPC compartida para aprovisionar el proyecto para la VPC compartida. Para habilitar el proyecto host para la VPC compartida, debes ser administrador de la organización o tener los roles de gestión de identidades y accesos (IAM) de administrador adecuados.
  4. Crea un segundo proyecto de Google Cloud. Este proyecto es un proyecto de servicio. Más adelante, lo vincularás al proyecto del host.

Descargar la secuencia de comandos

Apigee proporciona una secuencia de comandos de aprovisionamiento para simplificar la creación de la topología necesaria. Debes extraer la secuencia de comandos de GitHub:

  1. Clona el proyecto de GitHub que contiene la secuencia de comandos:
    git clone https://github.com/apigee/devrel.git
  2. Ve al siguiente directorio del proyecto:
    cd devrel/tools/apigee-x-trial-provision
  3. Define las siguientes variables de entorno:
    export HOST_PROJECT=HOST_PROJECT_ID
    export SERVICE_PROJECT=SERVICE_PROJECT_ID

    Donde:

    • HOST_PROJECT_ID es el ID del proyecto host de la VPC compartida que has creado como uno de los requisitos previos.
    • SERVICE_PROJECT_ID es el ID del proyecto de servicio de Google Cloud que has creado en los requisitos previos.

Configurar el proyecto del host

  1. Define las siguientes variables de entorno:
  2. export NETWORK=YOUR_SHARED_VPC
    export SUBNET=YOUR_SHARED_SUBNET
    export PEERING_CIDR=CIDR_BLOCK

    Donde:

    • YOUR_SHARED_VPC es el nombre de tu red de VPC compartida.
    • YOUR_SHARED_SUBNET es el nombre de tu subred de VPC compartida.
    • CIDR_BLOCK es el bloque CIDR de la VPC de Apigee. Por ejemplo: 10.111.0.0/23.
  3. Para configurar el emparejamiento de VPC y el cortafuegos de Apigee, ejecuta la secuencia de comandos con estas opciones:
    ./apigee-x-trial-provision.sh \
        -p $HOST_PROJECT --shared-vpc-host-config --peering-cidr $PEERING_CIDR

    La secuencia de comandos configura el proyecto host. El resultado será similar al siguiente, donde NETWORK y SUBNET representan las rutas completas del proyecto host:

    export NETWORK=projects/$HOST_PROJECT/global/networks/$NETWORK
    export SUBNET=projects/$HOST_PROJECT/regions/us-west1/subnetworks/$SUBNET
  4. Exporta las variables que se han devuelto en la salida.

Configurar el proyecto de servicio

En este paso, configurará el proyecto de servicio. Cuando finalice la secuencia de comandos, se creará y desplegará un proxy de API de ejemplo en tu entorno de Apigee que podrás usar para probar el aprovisionamiento.

  1. Ejecuta la secuencia de comandos apigee-x-trial-provision.sh por segunda vez para aprovisionar el proyecto de servicio con los ajustes de red compartidos:
    ./apigee-x-trial-provision.sh \
        -p $SERVICE_PROJECT

    La secuencia de comandos crea un proxy de ejemplo en tu entorno de Apigee e imprime un comando curl que puedes llamar para probar el aprovisionamiento.STDOUT

  2. Llama al proxy de API de prueba. Por ejemplo:
    curl -v https://10-111-111-111.nip.io/hello-world

Configurar otro proyecto de servicio para los servicios de backend

Te recomendamos que separes tu infraestructura de Google Cloud en varios proyectos. Consulta Decidir una jerarquía de recursos para tu zona de aterrizaje de Google Cloud. En esta sección se explica cómo implementar un servicio backend en un proyecto de servicio independiente y asociarlo al host de la VPC compartida. Apigee puede usar el servicio backend como destino de proxy de API porque tanto el proyecto de servicio de Apigee como el proyecto de servicio backend están vinculados al host de VPC compartida.

Requisitos previos

Para seguir estos pasos, damos por hecho que ya has configurado tu VPC compartida y la has compartido con el proyecto de servicio backend, tal como se describe en el artículo Configurar una VPC compartida.

Configurar el proyecto de servicio

En esta sección, probarás un servicio backend en otra subred de VPC compartida, crearás una segunda subred en el proyecto host y usarás su dirección IP privada RFC1918 como URL de destino de tus proxies de API de Apigee.

  1. En el proyecto de servicio de backend, ejecuta el siguiente comando para ver todas las subredes compartidas disponibles:
    gcloud compute networks subnets list-usable --project $HOST_PROJECT  --format yaml
    

    Ejemplo:

    ipCidrRange: 10.0.0.0/20
    network: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/global/networks/hub-vpc
    subnetwork: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/regions/europe-west1/subnetworks/sub1
  2. Crea estas variables de entorno:
    BACKEND_SERVICE_PROJECT=PROJECT_ID
    SHARED_VPC_SUBNET=SUBNET
    

    Donde:

    • PROJECT_ID es el nombre del proyecto de servicio que has creado para los servicios de backend.
    • SUBNET es una de las subredes que se han obtenido con el comando anterior.
  3. Para crear un servicio de backend httpbin en el proyecto con fines de prueba, usa el siguiente comando:
    gcloud compute --project=$BACKEND_SERVICE_PROJECT instances create-with-container httpbin \
      --machine-type=e2-small --subnet=$SHARED_VPC_SUBNET \
      --image-project=cos-cloud --image-family=cos-stable --boot-disk-size=10GB \
      --container-image=kennethreitz/httpbin --container-restart-policy=always --tags http-server
    
  4. Crea y despliega un proxy de API de Apigee siguiendo los pasos que se indican en Crear un proxy de API.
  5. Obtén la dirección IP interna de la máquina virtual en la que se ejecuta el servicio de destino. Usará esta IP en el siguiente paso para llamar al proxy de la API de prueba:
    gcloud compute instances list --filter=name=httpbin
  6. Para probar la configuración, llama al proxy. Usa la dirección IP interna de la VM que has obtenido en el paso anterior. En el siguiente ejemplo, se da por hecho que has llamado /myproxy a la ruta base del proxy. Por ejemplo:
    curl -v https://INTERNAL_IP/myproxy

    Esta llamada a la API devuelve Hello, Guest!.