Patrones de Herramientas de redes descendentes

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 usar Private Service Connect (PSC) para crear una conexión privada entre Apigee y los servicios de destino de backend. De forma predeterminada, puedes acceder a los extremos de destino en todo el mundo. Ten en cuenta que el tráfico del proxy de API que fluye entre Apigee y un servicio de destino de backend se conoce como tráfico “descendente”.

Los pasos de configuración de red descendentes que se describen en este documento se aplican a las instancias de Apigee con intercambio de tráfico entre VPC y sin intercambio de tráfico entre VPC. Sin embargo, ten en cuenta que el intercambio de tráfico de DNS privado solo es compatible con instancias de Apigee con intercambio de tráfico entre VPC.

Conecta Apigee de forma privada a destinos de backend

Para conectar Apigee de forma privada a un destino de backend, debes crear dos entidades: un adjunto de servicio en la red de VPC en la que se implementa el destino y un adjunto de extremo en la VPC de Apigee. Estas dos entidades permiten que Apigee se conecte al servicio de destino.

En la figura 1, se ilustra la arquitectura de red de Apigee que admite el acceso global para conexiones descendentes en varias regiones:

Figura 1: Arquitectura de herramientas de redes descendentes de Apigee.

Limitaciones

En una organización de Apigee, se permite un adjunto de extremo para un adjunto de servicio determinado. Por ejemplo, supongamos que tienes 10 adjuntos de servicio que exponen servicios de destino. Puedes crear 10 adjuntos de extremos en tu organización de Apigee, uno para cada adjunto de servicio.

Ejemplo: Exposición de un servicio de destino a Apigee

En este ejemplo, se ilustra cómo usar PSC para permitir que Apigee se comunique con un servicio de destino que se ejecuta en una red de VPC que no intercambia tráfico directo con Apigee. En los pasos de este ejemplo, se usan llamadas a la API de gcloud y de Apigee para instalar y configurar un adjunto de servicio en la red de VPC en la que se implementa el destino y un adjunto de extremo en la VPC de Apigee.

Situación de ejemplo

En este ejemplo, se considera un caso en el que tienes un servidor web Apache implementado en un grupo de instancias administrado (MIG) que se ejecuta en tu VPC. Para poder realizar una comunicación con Apigee en este contexto, exponemos los servicios a través de una puerta de enlace de entrada.

Configura un balanceador de cargas

Configura un balanceador de cargas en tu VPC donde se encuentren los microservicios que deseas exponer:

  1. Crea estas variables de entorno:
    export PROJECT_ID=YOUR_PROJECT_ID
    export IMAGE_PROJECT=debian-cloud
    export IMAGE_FAMILY=debian-10
    export BACKEND=foo
    export REGION=us-west1
    export ZONE=us-west1-a
    export NETWORK=default
    export SUBNET_NAME=default
  2. Crea una plantilla de instancias:
    gcloud compute instance-templates create "$BACKEND" \
        --tags=psc-demo,http-server,https-server \
        --image-family "$IMAGE_FAMILY" --image-project "$IMAGE_PROJECT" \
        --network "$NETWORK" --subnet "$SUBNET_NAME" --region "$REGION" \
        --project "$PROJECT_ID" \
        --metadata startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>foo[/]: '\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html
        sudo mkdir /var/www/html/foo
        echo '<!doctype html><html><body><h1>foo[/foo]: '\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/foo/index.html"
  3. Crea un grupo de instancias administrado:
    gcloud compute instance-groups managed create $BACKEND \
        --project $PROJECT_ID --base-instance-name $BACKEND \
        --size 1 --template $BACKEND --region $REGION
  4. Cree una verificación de estado.
    gcloud compute instance-groups managed set-named-ports $BACKEND \
        --project $PROJECT_ID --region $REGION --named-ports http:80
    gcloud compute health-checks create tcp hc-tcp-$BACKEND \
      --region=$REGION \
      --description="health check for psc backend" \
      --port-name=http --project=$PROJECT_ID
  5. Crea un balanceador de cargas:
    1. Crea un servicio de backend:
      gcloud compute backend-services create be-ilb \
          --load-balancing-scheme=internal \
          --protocol=tcp \
          --region=$REGION \
          --network=$NETWORK \
          --health-checks=hc-tcp-$BACKEND \
          --health-checks-region=$REGION \
          --project=$PROJECT_ID
    2. Agrega el grupo de instancias administrado al servicio de backend:
      gcloud compute backend-services add-backend be-ilb \
          --region=$REGION \
          --instance-group=$BACKEND \
          --instance-group-zone=$ZONE \
          --project=$PROJECT_ID
      
    3. Crea una regla de reenvío:
      gcloud compute forwarding-rules create fr-ilb \
          --region=$REGION \
          --load-balancing-scheme=internal \
          --network=$NETWORK \
          --subnet=$SUBNET_NAME \
          --ip-protocol=TCP \
          --ports=80 \
          --backend-service=be-ilb \
          --backend-service-region=$REGION \
          --project=$PROJECT_ID

Crea un adjunto de servicio

Crea un adjunto de servicio PSC en la red de VPC en la que se implementan los servicios de destino.

  1. Para realizar esta tarea, debes tener el permiso compute.subnetworks.create o el rol de IAM Compute Network Admin (roles/compute.networkAdmin).
  2. Crea una subred PSC con el parámetro purpose configurado en PRIVATE_SERVICE_CONNECT:
    gcloud compute networks subnets create PSC_SUBNET_NAME \
      --network NETWORK --region=REGION --purpose=PRIVATE_SERVICE_CONNECT --range=RANGE
    gcloud compute --project=$PROJECT_ID firewall-rules create allow-psc-nat-80 \
      --direction=INGRESS --priority=1000 --network NETWORK --action=ALLOW --rules=tcp:80
      --source-ranges=RANGE --target-tags=psc-demo

    Para obtener una descripción detallada de los parámetros del comando, consulta la referencia de Google Cloud CLI. También puedes realizar este paso en Console o con una API.

    Por ejemplo:

    gcloud compute networks subnets create psc-subnet --network default \
    --region=us-west1 --purpose=PRIVATE_SERVICE_CONNECT --range=10.100.0.0/28
  3. Crea un adjunto de servicio en tu red de VPC:
    1. Obtén la regla de reenvío del balanceador de cargas interno. Usarás esta regla en otro paso, más adelante:
      gcloud compute forwarding-rules list --project=PROJECT_ID

      En este caso, PROJECT_ID es un ID del proyecto de Google Cloud. Por ejemplo:

      gcloud compute forwarding-rules list --project=my-project
      NAME                                                  REGION    IP_ADDRESS    IP_PROTOCOL  TARGET
      k8s2-tcp-e61tta3j-apps-istio-ingressgateway-0kl92frk  us-west1  10.138.0.53   TCP
      
    2. Crea el adjunto del servicio:
      gcloud compute service-attachments create PSC_NAME \
          --region=REGION --producer-forwarding-rule=PRODUCER_FORWARDING_RULE \
          --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=PSC_SUBNET_NAME --project=PROJECT_ID

      El parámetro NAME debe ser una string que contenga entre 1 y 63 caracteres, y contener solo letras minúsculas, números y guiones. No puede tener números ni guiones iniciales. Tampoco puede tener guiones finales. Para obtener una descripción detallada de los parámetros de este comando, consulta la referencia de Google Cloud CLI.

      Por ejemplo:

      gcloud compute service-attachments create gkebackend \
          --region=us-west1 --producer-forwarding-rule=k8s2-tcp-e62tta1j-apps-istio-ingressgateway-0kl92frk \
          --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-subnet --project=my-project

      También puedes realizar este paso en la IU de Console. Por ejemplo, consulta Publica un servicio con aprobación automática de proyectos.

Crea un adjunto de extremo

Crea un adjunto de extremo en la organización de Apigee. Puedes realizar este paso desde la línea de comandos o desde la IU del adjunto del extremo de Apigee.

Requisito previo: Antes de crear un adjunto de extremo, debes publicar los servicios que deseas exponer con Private Service Connect (PSC) mediante la creación de un balanceador de cargas y un adjunto de servicio, como se explicó en este ejemplo. Para obtener más información sobre cómo exponer servicios con PSC, consulta Publica servicios administrados mediante Private Service Connect. Ten en cuenta que el adjunto del servicio debe estar configurado para aceptar conexiones nuevas.

Línea de comandos

Crea un adjunto de extremo en la VPC de Apigee desde la línea de comandos:

  1. Obtén el recurso de adjunto del servicio:
    gcloud compute service-attachments list

    El comando muestra la información del adjunto del servicio. Usarás esta información en el paso siguiente. Por ejemplo:

    NAME       REGION   TARGET_SERVICE                                       CONNECTION_PREFERENCE
    gkebackend us-west1 k8s2-tcp-tgysilgj-apps-istio-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC
  2. Obtén el token de autenticación para la API de Apigee:
    TOKEN="$(gcloud auth print-access-token)"
  3. Usa esta API de Apigee para crear el adjunto del extremo. Usa los valores que muestra el comando gcloud compute service-attachments list en el cuerpo de la solicitud:
    curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type:application/json" \
    "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/endpointAttachments?endpointAttachmentId=EA_NAME" \
    -d '{
        "location": "REGION",
        "serviceAttachment": "projects/PROJECT_ID/regions/REGION/serviceAttachments/SA_NAME"
    }'

    Aquí:

    • REGION es la región del adjunto del servicio. Por ejemplo: us-west1
    • ORGANIZATION es el nombre de tu organización de Apigee.
    • PROJECT_ID es el proyecto de Google Cloud en el que se creó el adjunto de servicio.
    • EA_NAME es el nombre del adjunto del extremo. El nombre debe ser único. No pueden existir otros adjuntos de extremo con el mismo nombre y no puedes cambiarlo más adelante. El nombre debe comenzar con una letra minúscula seguida por un máximo de 31 letras minúsculas, números o guiones, pero no puede terminar con un guion. La longitud mínima es de 2.
    • SA_NAME es el nombre del adjunto del servicio.

    Apigee inicia una operación de larga duración. Cuando se complete la operación, verás una respuesta similar a la siguiente:

    {
      "name": "organizations/my-organization/operations/6e249895-e78e-48f0-a28f-7140e15e1676",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/my-organization/endpointAttachments/gkebackend",
        "state": "FINISHED"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.EndpointAttachment",
        "name": "organizations/my-organization/endpointAttachments/gkebackend",
        "location": "us-west1",
        "host": "7.0.3.4",
        "serviceAttachment": "projects/my-project/regions/us-west1/serviceAttachments/gkebackend"
      }
    }

    Ahora puedes usar la dirección IP 7.0.3.4 que se muestra en la respuesta para conectarte a los servicios detrás del adjunto del servicio, como se muestra en el siguiente paso. Ten en cuenta que 7.0.3.4 es una IP pública de uso privado (PUPI) que Apigee asigna a la puerta de enlace de entrada. No se anuncia en Internet y ningún servicio de Google usa IP en este rango de forma interna.

  4. Usa la IP del host del adjunto del servicio como destino de un proxy de API. Por ejemplo:
    <TargetEndpoint name="default">
        <HTTPTargetConnection>
            <URL>http://7.0.3.4/orders</URL>
        </HTTPTargetConnection>
    </TargetEndpoint>

IU de Apigee

Crea un adjunto de extremo en la organización de Apigee en la IU de Apigee:

  1. En la IU de Apigee, ve a Administrador > Adjuntos de extremo.
  2. Haz clic en + Endpoint Attachment. Aparecerá el cuadro de diálogo Adjunto de extremo.
  3. Ingresa un nombre para el adjunto de extremo. El nombre debe ser único. No pueden existir otros adjuntos de extremo con el mismo nombre y no puedes cambiarlo más adelante. El nombre debe comenzar con una letra minúscula seguida por un máximo de 31 letras minúsculas, números o guiones, pero no puede terminar con un guion. La longitud mínima es de 2.
  4. Haga clic en Siguiente.
  5. En la lista desplegable Adjunto de servicio, elige el adjunto de servicio al que deseas conectarte.

    El comportamiento de la IU depende de tus permisos. Si tienes permiso para enumerar regiones y adjuntos de servicio, solo puedes seleccionar tu adjunto de servicio de la lista desplegable. Si no tienes permiso para enumerar regiones, se muestra una lista estática de regiones y puedes seleccionarla en ella. Si no tienes permiso para enumerar los adjuntos del servicio, debes ingresar el nombre de forma manual. Ubica el nombre del adjunto del servicio. Ten en cuenta que, si no tienes permiso para enumerar regiones, se mostrará una lista estática de regiones entre las que puedes elegir.

    Ubicación del ID del proyecto de Apigee necesario para la configuración del adjunto de servicio.

  6. Verifica que el extremo del servicio pueda aceptar conexiones. Para conocer los pasos, consulta Verifica y administra la conectividad de adjuntos.
  7. Haga clic en Siguiente.
  8. Haga clic en Crear. La operación suele tardar uno o dos minutos en completarse.
  9. Para verificar el estado actual de creación, haz clic en Actualizar en la página de lista.
  10. Usa la IP del host del adjunto del servicio como destino de un proxy de API. La IP del host aparece en la IU de adjuntos de extremo cuando se completa el proceso de creación, como se muestra en la siguiente captura de pantalla:

    La IP del host del adjunto de servicio se muestra en la IU del adjunto de extremo

    Por ejemplo:
    <TargetEndpoint name="default">
        <HTTPTargetConnection>
            <URL>http://7.0.5.2/orders</URL>
        </HTTPTargetConnection>
    </TargetEndpoint>

Comprueba y administra la conectividad de los adjuntos

En esta sección, se explica cómo verificar que un adjunto de servicio pueda acceder a un adjunto de extremo en tu proyecto de Apigee y cómo cambiar la preferencia de conexión si quieres hacerlo.

  1. Sigue los pasos que se indican en Lista de servicios publicados para ver la lista de adjuntos de servicio en tu proyecto.
  2. Selecciona el adjunto de servicio al que deseas conectarte como se explica en Visualiza detalles de un servicio publicado.
  3. Elige una preferencia de conexión para el adjunto de servicio publicado. Private Service Connect ofrece dos opciones que se describen a continuación. Si deseas cambiar la preferencia de conexión actual, sigue los pasos que se indican en Cambia la preferencia de conexión para un servicio publicado.
    • Aceptar de forma automática todas las conexiones: El adjunto de servicio acepta adjuntos de extremo de cualquier proyecto. Si eliges esta opción, el adjunto del servicio podrá aceptar una conexión de un adjunto de extremo en el proyecto de Apigee. No es necesario que lo configures.
    • Aceptar conexiones de proyectos seleccionados: Tú especificas los proyectos desde los que el adjunto de servicio aceptará conexiones. Si eliges esta opción, debes agregar el ID del proyecto de Apigee al adjunto del servicio. Puedes encontrar el ID del proyecto de Apigee en el paso Verifica la conexión del proyecto en la IU del adjunto de extremo, como se muestra en esta captura de pantalla:

      Ubicación del ID del proyecto de Apigee necesario para la configuración del adjunto de servicio.

      También puedes recuperar el ID del proyecto de Apigee mediante la API de las organizaciones de Apigee, que muestra el ID en un campo llamado apigeeProjectId.

  4. Si realizaste cambios en las preferencias de conexión, guárdalos.
  5. En la IU de Apigee, ve a Administrador > Adjuntos de extremo. También puedes enumerar los adjuntos de extremo con la API de Apigee Endpoints.
  6. En la lista de archivos adjuntos, verifica que el estado de conexión de PSC ahora sea ACCEPTED. Si el campo muestra un estado que no es ACCEPTED, consulta Soluciona problemas de estado de conexión de PSC.

Administra adjuntos de extremos

La API de endpointAttachments de Apigee proporciona métodos para crear, borrar, obtener y enumerar adjuntos de extremo.

Enumera adjuntos de extremos

Puedes ver una lista de adjuntos de extremos en la IU del adjunto de extremos de Apigee o llamar a la API de extremos de Apigee.

Para mostrar una lista de los adjuntos de extremo en la IU de Apigee, haz lo siguiente:

  1. En la IU de Apigee, ve a Administrador > Adjuntos de extremo.
  2. Visualiza la lista de adjuntos de extremo.

Crea un adjunto de extremo

Para crear un adjunto de extremo en la IU o con la API de Apigee Endpoints, consulta Crea un adjunto de extremo.

Borra un adjunto de extremo

Para borrar un extremo con la IU de Apigee, haz lo siguiente:

  1. En la IU de Apigee, ve a Administrador > Adjuntos de extremo.
  2. Selecciona el adjunto de extremo que quieres borrar.
  3. Haz clic en Borrar adjunto de extremo.

También puedes usar la API de Apigee Endpoints para enumerar, crear y borrar adjuntos de extremos.

Intercambio de tráfico de DNS privado

Si tienes una zona privada de Cloud DNS alojada en el proyecto de Cloud que intercambia el tráfico con Apigee, puedes configurar un intercambio de tráfico de DNS para permitir que Apigee resuelva nombres en tu zona privada. De forma predeterminada, las zonas privadas son privadas de la red de VPC en la que se alojan. Para ver los pasos de configuración del intercambio de tráfico de DNS entre una zona DNS privada y Apigee (el productor de servicios), consulta Comparte zonas de DNS privado con los productores de servicios.

Soluciona problemas

Problemas con el estado de conexión de PSC

En esta sección, se describen posibles soluciones cuando se aprovisiona un adjunto de extremo y el estado es Activo, pero el estado de la conexión no es Aceptado. En la figura 2, se muestran algunos estados de conexión posibles.

Figura 2: Detalles del estado del adjunto de extremo

El estado que se proporciona puede ayudar a apuntar a la causa probable, como se describe en la siguiente tabla:

Estado de conexión Causa posible Solución recomendada
ACEPTADOS El adjunto de servicio aceptó la conexión desde el extremo de conexión. No disponible
PENDIENTE Es posible que el ID del proyecto de Apigee no esté en la lista de proyectos aceptados del consumidor ni en la lista rechazada. Agrega el ID del proyecto de Apigee a la lista de aceptación del consumidor en el adjunto de servicio. Consulta Cambia la preferencia de conexión de un servicio publicado.
REJECTED El ID del proyecto de Apigee se encuentra en la lista de rechazo del consumidor. Quita el ID del proyecto de Apigee de la lista de rechazo del consumidor y agrégala a la lista de aceptación del consumidor en el adjunto de servicio. Consulta Administra solicitudes para acceder a un servicio publicado.
INHABILITADO El adjunto de servicio de este adjunto de extremo se suspendió o inhabilitó. Describe el adjunto de servicio para obtener más detalles. Consulta Ve detalles de un servicio publicado.
CERRADA Se borró el adjunto de servicio para este adjunto de extremo. Vuelve a crear el adjunto de servicio y el adjunto de extremo.
NEEDS_ATTENTION El adjunto de servicio aceptó el adjunto de extremo; sin embargo, hay un problema con el adjunto de servicio. Describe el adjunto de servicio para obtener más detalles. Consulta Ve detalles de un servicio publicado.
UNAVAILABLE El estado de conectividad no está disponible, lo que puede ocurrir durante el aprovisionamiento. Espera unos minutos para ver si cambia el estado.

Configuración de PSC con Apigee

Consulta la guía Problemas de conectividad de Apigee con destinos de PSC descendentes.