Usa 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 conectar proyectos separados de Apigee y servicio de destino del backend a este. Las redes de VPC compartidas te permiten implementar una infraestructura de red centralizada con Google Cloud. Puedes usar una sola red de VPC en un proyecto host para conectar recursos de varios proyectos de servicio.

Beneficio de la VPC compartida

El entorno de ejecución de Apigee (que se ejecuta en una VPC administrada por Google) intercambia tráfico con la VPC que te pertenece. En esta topología, el extremo del entorno de ejecución de Apigee puede comunicarse con tu red de VPC, como se muestra en el siguiente diagrama:

VPC compartida con backends internos en la VPC de otro proyecto

Consulta también Descripción general de la arquitectura de Apigee.

En muchos casos, la topología descrita anteriormente es muy simple, 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 jerarquías de recursos y separar su infraestructura en varios proyectos. Imagina una topología de red en la que el proyecto de usuario de Apigee intercambia tráfico a una red de VPC como antes, pero existen backends internos ubicados en la VPC de otro proyecto. Como se muestra en este diagrama:

VPC compartida con backends internos en la VPC de otro proyecto

Si intercambias el tráfico de la VPC de Apigee a la VPC de backend, como se muestra en el diagrama, se puede acceder al backend desde la red de VPC de Apigee y viceversa, ya que el intercambio de tráfico entre redes es simétrico. Sin embargo, el proyecto de usuario de Apigee solo puede comunicarse con la VPC de Apigee, ya que el intercambio de tráfico no es transitivo, como se describe en la documentación del intercambio de tráfico de VPC. Para que funcione, puedes implementar proxies adicionales en la VPC de Apigee a fin de reenviar el tráfico del vínculo de intercambio de tráfico a la VPC de backend. Sin embargo, este enfoque agrega sobrecarga operativa y mantenimiento adicionales.

La VPC compartida ofrece una solución al problema descrito anteriormente. La VPC compartida te permite establecer la conectividad entre el entorno de ejecución de Apigee y los backends que se encuentran en otros proyectos de Google Cloud en la misma organización sin componentes de herramientas de redes adicionales.

Configura una VPC compartida con Apigee

En esta sección, se explica cómo conectar un proyecto de servicio de VPC de Apigee a un host de VPC compartida. Las subredes definidas en el proyecto host se comparten con los proyectos de servicio. En una sección posterior, explicaremos cómo crear una segunda subred para servicios de 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 la VPC compartida

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

Requisitos previos

  1. Revisa los conceptos que se analizan en Descripción general de la VPC compartida. Es importante comprender los conceptos de proyecto host y proyecto de servicio.
  2. Crea un proyecto de Google Cloud nuevo que puedas configurar para la VPC compartida. Este proyecto es el proyecto host. Consulta Crea y administra proyectos.
  3. Sigue los pasos que se indican en Aprovisiona la VPC compartida a fin de aprovisionar el proyecto para la VPC compartida. Debes ser administrador de la organización o tener las funciones de administración de identidades y accesos (IAM) adecuadas para habilitar el proyecto host en la VPC compartida.
  4. Crea un segundo proyecto de Google Cloud. Este proyecto es un proyecto de servicio. Luego, lo conectarás al proyecto host.

Descarga 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 en el proyecto:
    cd devrel/tools/apigee-x-trial-provision
  3. Configura las siguientes variables de entorno:
    export HOST_PROJECT=HOST_PROJECT_ID
    export SERVICE_PROJECT=SERVICE_PROJECT_ID

    Aquí:

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

Configura el proyecto host

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

    Aquí:

    • 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 intercambio de tráfico y el firewall de la VPC 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, en el que NETWORK y SUBNET representan las rutas de acceso completamente calificadas en el 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 mostraron en el resultado.

Configura el proyecto de servicio

En este paso, debes configurar el proyecto de servicio. Cuando finalice la secuencia de comandos, creará e implementará un proxy de API de muestra en el entorno de Apigee que puedes 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 la configuración de red compartida:
    ./apigee-x-trial-provision.sh \
        -p $SERVICE_PROJECT

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

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

Configura otro proyecto de servicio para los servicios de backend

Se recomienda separar la infraestructura de Google Cloud en varios proyectos. Consulta Decide una jerarquía de recursos para la zona de destino de Google Cloud En esta sección, se explica cómo implementar un servicio de backend en un proyecto de servicio independiente y conectarlo al host de VPC compartida. Apigee puede usar el servicio de backend como una orientación del proxy de API porque el proyecto de servicio de Apigee y el proyecto de servicio de backend están conectados al host de VPC compartida.

Requisitos previos

Para hacer estos pasos, suponemos que tu VPC compartida ya está configurada y compartida con el proyecto de servicio de backend, como se describe en Configura una VPC compartida.

Configura el proyecto de servicio

En esta sección, probarás un servicio de backend en otra subred de VPC compartida, crearás una segunda subred en el proyecto host y usarás su dirección IP RFC1918 privada como la URL de destino para los 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
    

    Salida de 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
    

    Aquí:

    • PROJECT_ID es el nombre del proyecto de servicio que creaste para los servicios de backend.
    • SUBNET es uno de los resultados de la subred del comando anterior.
  3. Para crear un servicio httpbin de backend 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 e implementa un proxy de API de Apigee con los pasos que se indican en Crea un proxy de API.
  5. Obtén la dirección IP interna de la máquina virtual (VM) en la que se ejecuta el servicio de destino. Usarás esta IP en el próximo paso para llamar al proxy de 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 obtuviste en el paso anterior. En el siguiente ejemplo, se da por sentado que le asignaste un nombre a la ruta base del proxy /myproxy. Por ejemplo:
    curl -v https://INTERNAL_IP/myproxy

    Esta llamada a la API devuelve Hello, Guest!.