Llamar a un proxy de API con acceso solo para uso interno

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 llamar a proxies de API desde clientes que se ejecutan en tu red interna. Estos pasos son útiles para probar la configuración si Apigee se ha aprovisionado para usar el enrutamiento de red interno. Puedes seguir los pasos de este documento si Apigee se ha aprovisionado con alguna de estas configuraciones de enrutamiento de red:

Opción de aprovisionamiento Opción de redes Pasos de aprovisionamiento
Suscripción de pago Con el emparejamiento de VPC Enrutamiento interno (VPC)
Enrutamiento interno (PSC)
Pago por uso Con el emparejamiento de VPC Enrutamiento interno (VPC)
Enrutamiento interno (PSC)
Evaluación Con el emparejamiento de VPC Configurar el enrutamiento (interno)
Evaluación Sin emparejamiento de VPC Ruta interna (PSC)

Consulta también las opciones de redes.

Antes de empezar

Sigue estos pasos preliminares:

  1. Si aún no lo has hecho, inicializa el SDK de Cloud, tal como se describe en Inicializar la CLI de gcloud, o asegúrate de que el proyecto de Google Cloud que has creado en Requisitos sea el proyecto predeterminado de gcloud.
  2. Define las siguientes variables de entorno locales:

    export PROJECT_ID=YOUR_PROJECT_ID
    export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    export SUBNET=NETWORK_NAME
    export INSTANCE_NAME=INSTANCE_NAME
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

    Donde:

    • PROJECT_ID es el ID del proyecto de Cloud que has creado como parte de los requisitos previos.
    • AUTH define el encabezado Authentication con un token de portador. Usarás este encabezado al llamar a las APIs de Apigee. Ten en cuenta que el token caduca al cabo de un tiempo. Cuando esto ocurra, puedes volver a generarlo con el mismo comando. Para obtener más información, consulta la página de referencia del comando print-access-token.
    • SUBNET es la subred especificada durante el aprovisionamiento. Por ejemplo: default.
    • INSTANCE_NAME: el nombre de la nueva instancia. Por ejemplo, my-runtime-instance. El nombre debe empezar por una letra en minúscula, tener una longitud máxima de 32 caracteres y solo puede incluir letras en minúscula, números y guiones. No puede empezar ni terminar con un guion y debe tener al menos dos caracteres.
    • PROJECT_NUMBER es el número de proyecto de Cloud que creaste como parte de los requisitos. En este ejemplo, se envía un comando gcloud para obtener el número de proyecto.
  3. Obtén el valor de la propiedad location de tu instancia de Apigee. Este valor es la región en la que se encuentra la instancia, como us-west1:
    curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances
  4. Elige una zona de la región de la instancia y asigna el nombre de la zona a una variable. La zona debe estar dentro de la instancia. Por ejemplo:
    export VM_ZONE="us-west1-b"

    Si necesitas ayuda para identificar una zona dentro de la región de la instancia, puedes usar este comando gcloud para obtener el nombre de la zona de la región de tiempo de ejecución configurada. Por ejemplo:

    VM_ZONE=$(gcloud compute zones list | grep "us-west1" | head -n 1 | awk '{print $1}')

Crear una VM y llamar al proxy de API

A continuación, crea una máquina virtual en tu red VPC con el comando gcloud beta compute. La máquina virtual actúa como puente que te permite enviar solicitudes a la IP del balanceador de carga interno. Una vez que se haya configurado la VM, puedes llamar a un proxy de API desplegado:

  1. En el siguiente ejemplo se crea una máquina virtual con algunas opciones habituales y se usan variables de entorno que has definido anteriormente como entradas.
    gcloud beta compute --project=$PROJECT_ID \
      instances create $INSTANCE_NAME \
      --zone=$VM_ZONE \
      --machine-type=e2-micro \
      --subnet=$SUBNET \
      --network-tier=PREMIUM \
      --no-restart-on-failure \
      --maintenance-policy=TERMINATE \
      --preemptible \
      --service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --scopes=https://www.googleapis.com/auth/cloud-platform \
      --tags=http-server,https-server \
      --image=debian-12-bookworm-v20240701 \
      --image-project=debian-cloud \
      --boot-disk-size=10GB \
      --boot-disk-type=pd-standard \
      --boot-disk-device-name=$INSTANCE_NAME \
      --no-shielded-secure-boot \
      --shielded-vtpm \
      --shielded-integrity-monitoring \
      --reservation-affinity=any
  2. Abre una conexión segura a la nueva VM que acabas de crear.

    gcloud compute ssh $INSTANCE_NAME --zone=$VM_ZONE --project=$PROJECT_ID
  3. En el shell de la VM, instala la utilidad jq. Se usa en los pasos posteriores:
    sudo apt-get update -y
    sudo apt-get install -y jq
    
  4. En el shell de la VM, crea las siguientes variables de entorno para copiar y pegar fácilmente la solicitud del proxy de API:
    export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    export PROJECT_ID=YOUR_PROJECT_ID
    export ENV_GROUP_HOSTNAME=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups -s | jq -r '.environmentGroups[0].hostnames[0]')
    
  5. Asegúrate de que las variables estén definidas correctamente:
    echo $AUTH
    echo $PROJECT_ID
    echo $ENV_GROUP_HOSTNAME
  6. Llama a un proxy de API. Selecciona una de las opciones siguientes que corresponda a la forma en que configuraste el enrutamiento durante el aprovisionamiento de Apigee.

    Opciones para instalaciones que usan el emparejamiento de VPC

    • (Opción 1 de TLS) Si has configurado un balanceador de carga interno (ILB) en tu proyecto, como se explica en Enrutamiento interno (VPC), llama al proxy mediante la IP de ese ILB. Esta opción usa certificados de CA que están bajo tu control y que se crearon cuando se creó el balanceador de carga interno:
      1. Obtén la IP del balanceador de carga interno de tu proyecto, tal como se explica en el artículo Configurar el balanceo de carga HTTP(S) interno con backends de grupos de instancias de VM.
      2. Llama a un proxy de API:
        curl -H "Host: $ENV_GROUP_HOSTNAME" \
          https://INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
    • (Opción de TLS n.º 2) Usa el nombre de dominio completo predeterminado que se resuelve en el balanceador de carga interno del proyecto de Apigee. Con esta opción, se usa TLS mediante certificados autofirmados de Apigee creados internamente. No tienes control sobre estos certificados.
      1. Obtén la IP del balanceador de carga interno en el proyecto de Apigee:
        export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
      2. Extrae el certificado de la AC que se creó durante la creación de la organización con el siguiente comando:
        curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID | jq -r .caCertificate | base64 -d > cacert.crt
      3. Envía la solicitud a un proxy de API implementado, donde example.$PROJECT_ID.apigee.internal es el nombre de dominio completo interno y predeterminado que se resuelve en el balanceador de carga interno.
        curl -is -H "Host: $ENV_GROUP_HOSTNAME" \
          https://example.$PROJECT_ID.apigee.internal/PROXY_BASEPATH \
          --cacert cacert.crt \
          --resolve example.$PROJECT_ID.apigee.internal:443:$INTERNAL_LOAD_BALANCER_IP
    • (Opción sin TLS) Si tienes problemas con la validación de certificados SSL/TLS, puedes usar la marca -k (o --insecure) con el comando curl. De esta forma, se omite la validación del certificado y se permite que se establezca la conexión. Ten en cuenta que, aunque la comunicación sigue cifrada, esta opción tiene implicaciones de seguridad, ya que no se verifica la autenticidad del servidor.
      1. Obtén la IP del balanceador de carga interno en el proyecto de Apigee:
        export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
      2. Llama a un proxy de API:
        curl -i -k \
          -H "Host: $ENV_GROUP_HOSTNAME" \
          https://$INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
    • (Opción de punto final de servicio) Si has aprovisionado una organización de pago o de evaluación con PSC y has elegido la opción de enrutamiento de punto final de servicio:
      1. Obtén la IP del endpoint de servicio. Si necesitas buscar la IP del endpoint, consulta List endpoints (Listar endpoints).
      2. Llama a un proxy de API:
        curl -i -k \
           -H "Host: $ENV_GROUP_HOSTNAME" \
           https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH

        Por ejemplo:

        curl -H "Host: $ENV_GROUP_HOSTNAME" https://10.138.0.2/helloworld -k

    Opciones para instalaciones que no usan el emparejamiento de VPC

    • (Opción de punto final de servicio) Si has aprovisionado una organización de pago o de evaluación con PSC y has elegido la opción de enrutamiento de punto final de servicio:
      1. Obtén la IP del endpoint de servicio. Si necesitas buscar la IP del endpoint, consulta List endpoints (Listar endpoints).
      2. Llama a un proxy de API:
        curl -i -k \
            -H "Host: $ENV_GROUP_HOSTNAME" \
            https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH

        Por ejemplo:

        curl -H "Host: $ENV_GROUP_HOSTNAME" https://10.138.0.2/helloworld -k

    Si se producen errores durante esta parte del proceso, asegúrate de que todas las variables de entorno que has creado y usado en los comandos tengan valores válidos. Consulta también la sección Solución de problemas.

    Paso siguiente

    Prueba a crear un proxy que puedas desplegar o haz un recorrido por los tutoriales de Apigee, que te mostrarán las funciones de Apigee, como protegerte frente a picos de tráfico repentinos o obtener una vista detallada del flujo de solicitudes y respuestas.

    (Avanzado) Si tienes previsto convertirlo en una configuración de producción, puedes configurar un perímetro de seguridad en torno a tu nuevo clúster y a los servicios de Cloud relacionados. Esto es posible con Controles de Servicio de VPC.