Llama a un proxy de API con acceso solo 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 los proxies de API desde clientes que se ejecutan en tu red interna. Estos pasos son útiles a fin de probar tu configuración si Apigee se aprovisiona para usar el enrutamiento de red interno. Puedes seguir los pasos de este documento si Apigee se aprovisionó con cualquiera de estas opciones de configuración de enrutamiento de red:

Opción de aprovisionamiento Opción de Herramientas de redes Pasos de aprovisionamiento
Suscripción paga Con intercambio de tráfico entre VPC Enrutamiento interno (VPC)
Enrutamiento interno (PSC)
Pago por uso Con intercambio de tráfico entre VPC Enrutamiento interno (VPC)
Enrutamiento interno (PSC)
Evaluación Con intercambio de tráfico entre VPC Configura el enrutamiento (interno)
Evaluación Sin intercambio de tráfico de VPC Enrutamiento interno (PSC)

Consulta también Opciones de Herramientas de redes.

Antes de comenzar

Realiza los siguientes pasos de configuración preliminar:

  1. Si aún no lo hiciste, inicializa el SDK de Cloud, como se describe en Inicializa la CLI de gcloud, o asegúrate de que el proyecto de Google Cloud que creaste en la sección Requisitos previos sea el proyecto predeterminado para gcloud.
  2. Define las siguientes variables de entorno local:

    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)")

    Aquí:

    • PROJECT_ID es el ID del proyecto de Cloud que creaste como parte de los requisitos previos.
    • AUTH define el encabezado Authentication con un token del portador. Usarás este encabezado cuando llames a las API de Apigee. Ten en cuenta que el token vence después de un período y, cuando lo hace, 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 tu instancia nueva. Por ejemplo, my-runtime-instance El nombre debe comenzar con una letra en minúscula, puede tener hasta 32 caracteres y solo puede incluir letras en minúscula, números y guiones. No puede comenzar ni terminar con un guion y debe tener al menos dos caracteres.
    • PROJECT_NUMBER es el ID del proyecto de Cloud que creaste como parte de los requisitos previos. En este ejemplo, se emite un comando gcloud para obtener el número del 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 dentro de la región de la instancia y coloca el nombre de la zona en 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 con el fin de mostrar un nombre de zona para la región de entorno de ejecución configurada. Por ejemplo:

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

Crea una VM y llama al proxy de API

A continuación, crea una VM nueva dentro de tu red de VPC mediante el comando gcloud beta compute. La VM actúa como un puente que te permite enviar solicitudes a la IP del balanceador de cargas interno. Después de configurar la VM, puedes llamar a un proxy de API implementado:

  1. En el siguiente ejemplo, se crea una VM nueva con algunas opciones comunes y se usan las variables de entorno que definiste antes 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-10-buster-v20210217 \
      --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 en la VM nueva que acabas de crear.

    gcloud compute ssh $INSTANCE_NAME --zone=$VM_ZONE --project=$PROJECT_ID
  3. En la shell de la VM, instala la utilidad jq. Se usa en pasos posteriores:
    sudo apt-get update -y
    sudo apt-get install -y jq
    
  4. En la shell de VM, crea las siguientes variables de entorno para facilitar copiar y pegar 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 configuradas de forma correcta:
    echo $AUTH
    echo $PROJECT_ID
    echo $ENV_GROUP_HOSTNAME
  6. Llama a un proxy de API Selecciona una opción a continuación que corresponda a la forma en que configuraste el enrutamiento durante el aprovisionamiento de Apigee.

    Opciones para las instalaciones que usan intercambio de tráfico entre VPC

    • (Opción 1 de TLS) Si configuraste un balanceador de cargas interno (ILB) en tu proyecto, como se explica en Enrutamiento interno (VPC), llama al proxy mediante la IP de ILB. Esta opción usa certificados de CA que están bajo tu control y que se crearon cuando se creó el balanceador de cargas interno:
      1. Obtén la IP del ILB en tu proyecto, como se explica en Configura el balanceo de cargas de 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 2 de TLS) Usa el nombre de dominio predeterminado y completamente calificado que se resuelve en el balanceador de cargas interno en el proyecto de Apigee. Con esta opción, la TLS se emplea mediante certificados autofirmados creados de forma interna de Apigee. No tienes control sobre estos certificados.
      1. Obtén la IP del balanceador de cargas 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 CA 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, en el que example.$PROJECT_ID.apigee.internal es el nombre de dominio interno, predeterminado y completamente calificado que se resuelve en el balanceador de cargas 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 no necesitas TLS, puedes usar la marca -k en el comando curl para inhabilitar TLS y, tal vez, evitar problemas de SSL:
      1. Obtén la IP del balanceador de cargas 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 extremo del servicio) Si aprovisionaste una organización de evaluación o pagada con PSC y elegiste la opción de enrutamiento de extremo de servicio:
      1. Obtén la IP del extremo de servicio. Si necesitas buscar la IP del extremo, consulta Enumera extremos.
      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 las instalaciones que no usan intercambio de tráfico entre VPC

    • (Opción de extremo del servicio) Si aprovisionaste una organización de evaluación o pagada con PSC y elegiste la opción de enrutamiento de extremo de servicio:
      1. Obtén la IP del extremo de servicio. Si necesitas buscar la IP del extremo, consulta Enumera extremos.
      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 encuentras errores durante esta parte del proceso, asegúrate de que todas las variables de entorno que creaste y usaste en los comandos tengan valores válidos. Consulta también Solución de problemas.

    Próximo paso

    Prueba crear un proxy que puedas implementar o haz un recorrido de los instructivos de Apigee que te proporcionarán las características de Apigee, como protección contra los aumentos repentinos de tráfico u obtener una vista detallada del flujo de solicitud y respuesta.

    (Avanzado) Si planeas convertir esto en una configuración de producción, puedes configurar un perímetro de seguridad alrededor de tu clúster nuevo y servicios de Cloud relacionados. Esto es posible con los Controles del servicio de VPC.