Aprovisionar una organización de evaluación con emparejamiento de VPC

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

Consulta la documentación de Apigee Edge.

Resumen de los pasos

En este documento se explica cómo instalar y configurar una organización de evaluación de Apigee (o eval org) desde la línea de comandos. Las organizaciones de evaluación caducan al cabo de 60 días y pueden tener otras limitaciones. Consulta también Comparar organizaciones de evaluación y de pago.

Los pasos de aprovisionamiento son los siguientes:

Paso 1: Define las variables del entorno

Configura gcloud y define las variables de entorno que se usarán en pasos posteriores:

  1. Asegúrate de que has completado los requisitos que se indican en la sección Requisitos previos.
  2. Debes tener instalada la CLI de gcloud. Si necesitas instalarlo, consulta el artículo Instalar gcloud CLI.
  3. Inicializa gcloud CLI, tal como se describe en Inicializar gcloud CLI. Si la CLI ya está inicializada, asegúrate de que el proyecto de Google Cloud que has creado en Requisitos sea el proyecto predeterminado de gcloud.
  4. Define las siguientes variables de entorno:
    AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    PROJECT_ID="YOUR_PROJECT_ID"
    RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
    ANALYTICS_REGION="YOUR_ANALYTICS_REGION"

    Donde:

    • 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.
    • PROJECT_ID es el ID del proyecto de Cloud que has creado como parte de los requisitos previos.
    • RUNTIME_LOCATION es la ubicación física en la que se encuentra la instancia de Apigee. Para ver una lista de las ubicaciones de tiempo de ejecución disponibles, consulta Ubicaciones de Apigee.

    • ANALYTICS_REGION es la ubicación física en la que se almacenarán los datos de analíticas de Apigee. Para ver una lista de las regiones de analíticas de la API de Apigee disponibles, consulta Ubicaciones de Apigee.

      RUNTIME_LOCATION y ANALYTICS_REGION pueden ser la misma región, pero no es obligatorio. Sin embargo, puede que haya una mejora del rendimiento si son iguales.

  5. (Opcional) Comprueba tu trabajo repitiendo los valores que acabas de definir. Ten en cuenta que, si quieres usar una variable en tus comandos, debes poner el signo de dólar ($) delante del nombre de la variable.
    echo $AUTH
    echo $PROJECT_ID
    echo $RUNTIME_LOCATION
    echo $ANALYTICS_REGION
    

    Las respuestas a tus comandos echo deberían tener un aspecto similar al siguiente:

    Authorization: Bearer ya29.a123456678940B63hPSAMPLEsampleKKYVsample0f3pWDWZDuH2-hENkNa
    TvgZ1PD977TMvv6edBQPJezdHw040880Ol_LoD5ZDkt-i-knizia_KhA9L20sSvztL81-SAMPLE42ELPMASk2_
    1CxN
    my-cloud-project
    us-west1
    us-west1
    

Paso 2: Habilita las API

  1. Apigee requiere que habilites varias APIs de Google Cloud. Para habilitarlas, ejecuta el comando services enable:

    gcloud services enable apigee.googleapis.com \
      servicenetworking.googleapis.com compute.googleapis.com \
      cloudkms.googleapis.com --project=$PROJECT_ID
  2. (Opcional) Para comprobar tu trabajo, usa el comando services list para mostrar todas las APIs habilitadas:

    gcloud services list

    La respuesta muestra todos los servicios habilitados, incluidas las APIs que acabas de habilitar (Apigee, Service Networking, Cloud KMS y Compute Engine).

Paso 3: Configura las redes de servicios

  1. Crea estas variables de entorno:
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    Donde:

    • RANGE_NAME es el nombre del intervalo de direcciones IP que estás creando. Puedes asignar el nombre que quieras al intervalo. Por ejemplo: google-svcs
    • NETWORK_NAME es el nombre del recurso de red en el que se deben reservar las direcciones. Google crea una red predeterminada (llamada default) para cada proyecto nuevo, por lo que puedes usarla. Sin embargo, Google no recomienda usar la red predeterminada para nada que no sean pruebas.
  2. Crea un intervalo de IP con una longitud CIDR de /22:
    gcloud compute addresses create $RANGE_NAME \
      --global \
      --prefix-length=22 \
      --description="Peering range for Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    Donde --addresses te permite especificar de forma opcional una o varias IPs de dirección para la longitud del prefijo /22. Por ejemplo, para asignar el bloque CIDR 192.168.0.0/22, especifica 192.168.0.0 para la dirección y 22 para la longitud del prefijo. Consulta también Crear una asignación de IP.

    Si no proporcionas el parámetro --addresses, gcloud seleccionará un intervalo de direcciones disponible.

    Si la solicitud se realiza correctamente, gcloud responde con lo siguiente:

    Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses/google-svcs].

    Una vez que creas un intervalo de direcciones IP, estas se asocian al proyecto hasta que las liberas.

  3. Crea un segundo intervalo de IP con una longitud CIDR de /28. Apigee usa este intervalo para solucionar problemas y no se puede personalizar ni cambiar.
    gcloud compute addresses create google-managed-services-support-1 \
      --global \
      --prefix-length=28 \
      --description="Peering range for supporting Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    Donde --addresses te permite especificar de forma opcional una o varias IPs de dirección para la longitud del prefijo /28. Por ejemplo, para asignar el bloque CIDR 192.168.0.0/28, especifica 192.168.0.0 para la dirección y 28 para la longitud del prefijo. Consulta también Crear una asignación de IP.

    Si no proporcionas el parámetro --addresses, gcloud seleccionará un intervalo de direcciones disponible.

  4. Conecta tus servicios a la red con el siguiente comando:
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK_NAME \
      --ranges=$RANGE_NAME,google-managed-services-support-1 \
      --project=$PROJECT_ID

    Esta operación puede tardar varios minutos en completarse. Si la solicitud se realiza correctamente, gcloud responde con lo siguiente:

    Operation "operations/OPERATION_ID" finished successfully.

    Donde OPERATION_ID es el UUID de la LRO.

    Apigee crea una conexión entre tu red y los servicios de Google. En concreto, Apigee conecta tu proyecto a la API Service Networking mediante el emparejamiento de VPC. Apigee también asocia direcciones IP a tu proyecto.

Paso 4: Crea una organización

Una organización es el contenedor de nivel superior de Apigee. Contiene todos tus proxies de API y los recursos relacionados. Para obtener más información, consulta el artículo Acerca de las organizaciones.

  1. Crea una organización de evaluación con el comando gcloud alpha apigee organizations:
    gcloud alpha apigee organizations provision \
      --runtime-location=$RUNTIME_LOCATION \
      --analytics-region=$ANALYTICS_REGION \
      --authorized-network=$NETWORK_NAME \
      --project=$PROJECT_ID

    Donde --authorized-network es el nombre de tu red de emparejamiento personalizada. Por ejemplo: default.

  2. Cuando ejecutas el comando provision, Google inicia una LRO para crear la organización de evaluación. Esta operación tarda hasta 40 minutos en completarse. Durante ese tiempo, gcloud muestra lo siguiente:

    Provisioning organization...

    Cuando se crean la organización de evaluación y su instancia de tiempo de ejecución asociada, gcloud responde con el siguiente mensaje:

    Provisioning organization...done.
  3. Si ejecutas el siguiente comando:

    gcloud alpha apigee operations list --organization=$PROJECT_ID

    Deberías ver que todos los UUIDs están en el estado FINISHED. Por ejemplo:

    UUID                                  ORGANIZATION  STATE
    00bab06f-c60c-41a5-4242-7SAMPLE7f     my-org        FINISHED
    429790a7-3151-4642-4343-7SAMPLE7f     my-org        FINISHED
    d00a92a9-9b83-4642-4343-7SAMPLE7f     my-org        FINISHED
    f48a00ff-7daa-4c4a-4444-7SAMPLE7f     my-org        FINISHED

Paso 5: Configura el enrutamiento

Decide si quieres permitir el acceso externo o solo el interno:

Tipo de acceso Descripción del proceso de configuración e implementación
Interno

Permite solo el acceso interno a tus proxies de API.

Debes crear una máquina virtual en la red y conectarte a ella. Desde la nueva máquina virtual, puedes enviar una solicitud a un proxy de API de Apigee.

Externo

Permite el acceso externo a tus proxies de API.

Usa Private Service Connect (PSC) para habilitar la conexión privada entre un productor de servicios (Apigee) y un consumidor de servicios (el proyecto de VPC emparejado u otros proyectos de Cloud que controles). Con este método, las solicitudes pasan por un balanceador de carga externo global a un único punto de acoplamiento, llamado Service Attachment (Acoplamiento de servicio). Esta configuración te permite enviar solicitudes de proxy de API de Apigee desde cualquier máquina con conexión de red.

Cada uno de estos métodos de enrutamiento se presenta en una pestaña de las instrucciones que se indican a continuación.

Enrutamiento interno

No es necesario realizar ninguna tarea en este paso si utiliza la línea de comandos para configurar un proxy de API solo para el acceso interno. Puedes ir al paso 6: llama al proxy de API de ejemplo, donde enviarás una solicitud a tu proxy de API.

Enrutamiento externo

En esta sección se describe cómo configurar el enrutamiento externo mediante Private Service Connect (PSC) para permitir la comunicación entre Apigee y las VPCs que controlas. Debes hacerlo antes de poder enviar una solicitud desde un cliente externo a tu instancia de tiempo de ejecución de Apigee.

Los pasos de configuración externos son los siguientes:

Paso 5a: Crea un grupo de puntos de conexión de red (NEG)
Paso 5b: Configura el balanceador de carga

En las siguientes secciones se describe cada uno de estos pasos.

Paso 5a: Crea un grupo de endpoints de red (NEG)

  1. Obtén la vinculación de servicio de tu instancia de Apigee:
    curl -i -X GET -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    En el siguiente ejemplo de salida, el valor serviceAttachment se muestra en negrita:

    {
      "instances": [
        {
          "name": "eval-instance",
          "location": "us-west1",
          "host": "10.72.100.2",
          "port": "443",
          "createdAt": "1657832463500",
          "lastModifiedAt": "1657833920670",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_22",
          "runtimeVersion": "1-8-0-apigee-18",
          "ipRange": "10.74.100.0/28,10.74.100.16/28",
          "consumerAcceptList": [
            "apigee-eval-test"
          ],
          "serviceAttachment": "projects/s8da1b0111eb33765-tp/regions/us-west1/serviceAttachments/apigee-us-west1-icza"
        }
      ]
    }
  2. Crea un grupo de endpoints de red (NEG) de Private Service Connect que apunte al adjunto de servicio que has obtenido del cuerpo de respuesta de la instancia en el paso anterior.

    gcloud compute network-endpoint-groups create NEG_NAME \
      --network-endpoint-type=private-service-connect \
      --psc-target-service=TARGET_SERVICE \
      --region=$RUNTIME_LOCATION \
      --network=$NETWORK_NAME \
      --subnet=SUBNET_NAME \
      --project=$PROJECT_ID
    

    Haz los cambios siguientes:

    • NEG_NAME: nombre del grupo de endpoints de red.
    • TARGET_SERVICE: el archivo adjunto de servicio al que quieras conectarte. Por ejemplo: projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
    • SUBNET_NAME: nombre de la subred usada para la conectividad privada con el productor. El tamaño de la subred puede ser pequeño: el NEG de PSC solo necesita una IP de la subred. En Apigee, solo se necesita un NEG de PSC por región. Las subredes se pueden compartir y usar en VMs u otras entidades. Si no se especifica ninguna subred, los endpoints de red pueden pertenecer a cualquier subred de la región en la que se cree el grupo de endpoints de red.

Paso 5b: Configura el balanceador de carga

Configura un balanceador de carga HTTP(S) externo global (con el esquema de balanceo de carga definido como EXTERNAL_MANAGED).

Aunque el NEG de Private Service Connect es regional, el resto de los componentes de balanceo de carga de esta configuración son globales.

  1. Reserva una dirección IPv4 externa global para el balanceador de carga.
    gcloud compute addresses create ADDRESS_NAME \
      --ip-version=IPV4 --global --project=$PROJECT_ID

    Sustituye ADDRESS_NAME por el nombre del recurso de dirección IP.

    Ejecuta este comando para ver la dirección IP reservada:

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global --project=$PROJECT_ID
  2. Crea un servicio de backend para el NEG.
    gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTPS \
      --global --project=$PROJECT_ID
  3. Sustituye BACKEND_SERVICE_NAME por el nombre del servicio de backend.

  4. Añade el NEG al servicio de backend:
    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --network-endpoint-group=NEG_NAME \
      --network-endpoint-group-region=$RUNTIME_LOCATION \
      --global --project=$PROJECT_ID

    Haz los cambios siguientes:

    • BACKEND_SERVICE_NAME: el nombre del servicio de backend.
    • NEG_NAME: el nombre del grupo de endpoints de red.
  5. Crea un mapa de URLs para el balanceador de carga.

    Un mapa de URLs debe hacer referencia a un servicio de backend predeterminado. Define como predeterminado el servicio de backend que acabas de crear.

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=DEFAULT_BACKEND_SERVICE_NAME \
      --global --project=$PROJECT_ID

    Haz los cambios siguientes:

    • URL_MAP_NAME: nombre del mapa de URLs.
    • DEFAULT_BACKEND_SERVICE_NAME: el nombre del servicio de backend predeterminado del balanceador de carga. El valor predeterminado se usa cuando ninguna regla de host coincide con el nombre de host solicitado.
  6. Crea un certificado SSL para el proxy HTTPS de destino.

    Para crear un balanceador de carga HTTPS, debes tener un recurso de certificado SSL que usar en el proxy HTTPS de destino. Puedes crear un recurso de certificado SSL con un certificado SSL gestionado por Google o con un certificado SSL autogestionado.

    Usa este comando para crear un recurso de certificado SSL gestionado por Google:

    gcloud compute ssl-certificates create CERTIFICATE \
      --domains DOMAIN --project=$PROJECT_ID

    Haz los cambios siguientes:

    • CERTIFICATE: un nombre para el certificado.
    • DOMAIN: el nombre de dominio que usarás para el balanceador de carga externo.

    Para crear un certificado SSL autogestionado, necesitas un archivo de clave privada local y un archivo de certificado local. Si necesitas crear estos archivos, consulta Usar certificados SSL autogestionados.

    gcloud compute ssl-certificates create CERTIFICATE \
      --certificate LB_CERT \
      --private-key LB_PRIVATE_KEY --project=$PROJECT_ID

    Haz los cambios siguientes:

    • CERTIFICATE: un nombre para el certificado.
    • LB_CERT: la ruta al archivo de certificado con formato PEM de tu certificado autogestionado.
    • LB_PRIVATE_KEY: la ruta al archivo de clave privada con formato PEM de tu certificado autogestionado.
  7. El certificado puede tardar hasta una hora en aprovisionarse. Para comprobar el estado del aprovisionamiento, ejecuta este comando:

    gcloud compute ssl-certificates describe CERTIFICATE \
       --global \
       --format="get(name,managed.status, managed.Status)"
  8. Añade el dominio al grupo de entornos de Apigee que se ha creado para ti. El nombre del grupo de entornos es eval-group:
    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group" \
      -H "$AUTH" \
      -X PATCH \
      -H "Content-Type:application/json" \
      -d '{
        "hostnames":["'"DOMAIN"'"]
      }'
  9. Comprueba el estado de la operación del grupo de entornos:
    curl -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group/attachments"
    
  10. Usa el recurso de certificado SSL para crear un proxy HTTPS de destino.

    gcloud compute target-https-proxies create PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE --project=$PROJECT_ID

    Haz los cambios siguientes:

    • PROXY_NAME: nombre del proxy HTTPS de destino.
    • URL_MAP_NAME: nombre del mapa de URLs.
    • CERTIFICATE: el nombre del recurso de certificado.
  11. Crea la regla de reenvío.
    gcloud compute forwarding-rules create FWD_RULE \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=ADDRESS_NAME \
      --target-https-proxy=PROXY_NAME \
      --ports=443 \
      --global --project=$PROJECT_ID

    Haz los cambios siguientes:

    • FWD_RULE: el nombre de la regla de reenvío.
    • ADDRESS_NAME: el recurso de dirección IP que has reservado para usarlo en la regla de reenvío.
    • PROXY_NAME: nombre del proxy HTTPS de destino.

El aprovisionamiento de Apigee se ha completado.

Paso 6: Llama al proxy de API de ejemplo

Se ha creado y desplegado un proxy de API llamado hello-world durante el aprovisionamiento. En este paso, probarás la nueva organización de evaluación llamando al proxy.

Llamar al proxy con enrutamiento interno

Si has elegido la opción de enrutamiento interno en el paso 5, sigue los pasos que se indican en Llamar a un proxy de API con acceso solo para uso interno.

Llamar al proxy con enrutamiento externo

Si has elegido la opción de enrutamiento externo en el paso 5, sigue los pasos de esta sección.

  1. Configura una entrada DNS para tu dominio. Aquí tienes dos formas de hacerlo:
    • En tu registrador, crea un registro A que apunte a tu dominio. Por ejemplo, si tu dominio es sales.example.com y la IP es 10.23.0.2, dirige el registro de sales.example.com a la dirección 10.23.0.2.

      Ejecuta este comando para ver la dirección IP reservada:

      gcloud compute addresses describe ADDRESS_NAME \
        --format="get(address)" --global --project=$PROJECT_ID
    • Usa Cloud DNS de Google para asignar una URL a una dirección IP.
  2. Confirma que el proxy hello-world se ha implementado:
    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/eval/apis/hello-world/revisions/1/deployments"
  3. Llama al proxy de API:

    Envía una solicitud al proxy de la API desde cualquier máquina con conexión de red ejecutando el siguiente comando:

    curl -i -H "Host: DOMAIN" \
      https://DOMAIN/hello-world

    Donde DOMAIN es el dominio que has incluido en el certificado y que has añadido al grupo de entornos, tal como se explica en el paso 5: Configura el enrutamiento. Si es necesario, puedes usar esta API para obtener el valor DOMAIN del grupo de entornos:

    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups"

    Si la operación se realiza correctamente, el proxy de API de ejemplo devuelve la siguiente respuesta:

    Hello, Guest!

    Consejos para solucionar problemas:

    Si se produce un error de handshake, comprueba el estado del certificado SSL. Para obtener información sobre cómo solucionar problemas de certificados autogestionados y gestionados por Google, consulta Solucionar problemas de certificados SSL.

    Asegúrate de que el dominio registrado tenga un registro A que apunte a la dirección IPv4 externa global creada en el paso 5. Ejecuta este comando para ver la dirección IP reservada:

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global --project=$PROJECT_ID

    Si no puedes resolver la configuración del dominio, prueba a llamar al proxy con este comando:

    curl  -H Host:DOMAIN --resolve \
      DOMAIN:443:EXTERNAL_IP_ADDRESS  \
      https://DOMAIN:443/hello-world -k

Siguiente: para obtener más información sobre cómo crear y desplegar proxies de APIs, consulta el artículo Información general sobre cómo crear tu primer proxy de APIs.