Accede a los servicios publicados a través de backends

En esta guía, se describe cómo configurar un balanceador de cargas de aplicaciones externo global con un backend de Private Service Connect para acceder a un servicio que se publica mediante Private Service Connect.

Figura 1. El uso de un backend basado en un balanceador de cargas de aplicaciones externo global permite que los consumidores de servicios con acceso a Internet envíen tráfico a los servicios en la red de VPC del productor de servicios (haz clic para agrandar).

Para obtener más información, consulta Acerca de los backends de Private Service Connect.

Funciones

El rol de administrador de balanceadores de cargas de Compute (roles/compute.loadBalancerAdmin) contiene el permiso necesario para hacer las tareas descritas en esta guía.

Antes de comenzar

  • Si deseas publicar tu propio servicio, consulta Publica servicios mediante Private Service Connect.

  • Si vas a conectar un servicio publicado por un tercero, pídele la siguiente información al productor del servicio:

    • El URI del adjunto del servicio para el servicio al que deseas conectarte. El adjunto de servicio tiene este formato: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

    • Todos los requisitos sobre qué nombres de DNS usar a fin de enviar solicitudes. Es posible que debas usar nombres de DNS específicos en la configuración de mapa de URL o en la configuración de DNS.

Crear un grupo de extremos de red

Crea un NEG de Private Service Connect que apunte al adjunto de servicio del servicio publicado al que deseas acceder. Si el servicio publicado se implementa en varias regiones diferentes, crea un NEG por adjunto de servicio.

Cada NEG de Private Service Connect consume una dirección IP /32 para que el balanceador de cargas pueda comunicarse con ella.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de extremos de red.

    Ir a Grupos de extremos de red

  2. Haz clic en Crear un grupo de extremos de red.

  3. Ingresa un nombre para el grupo de extremos de red.

  4. En Tipo de grupo de extremos de red, elige Grupo de extremos de red (Private Service Connect).

  5. Selecciona el tipo de destino Servicio publicado.

  6. En Servicio de destino, escribe el URI del adjunto del servicio.

  7. Elige la Red y Subred para crear el grupo de extremos de red.

    La subred debe estar en la misma región que el servicio publicado.

  8. Haz clic en Crear.

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
    --network-endpoint-type=private-service-connect \
    --psc-target-service=TARGET_SERVICE \
    --region=REGION \
    --network=NETWORK \
    --subnet=SUBNET

Reemplaza lo siguiente:

  • NEG_NAME: un nombre para el grupo de extremos de red.

  • TARGET_SERVICE: el adjunto de servicio al que deseas conectarte.

  • REGION: la región en la que se creará el grupo de extremos de red. La región debe ser la misma que la del servicio de destino.

  • NETWORK: la red en la que se creará el grupo de extremos de red. Si se omite, se usa la red predeterminada.

  • SUBNET: la subred en la que se creará el grupo de extremos de red. La subred debe estar en la misma región que el servicio de destino. Se proporciona una subred si proporcionas la red. Si se omiten la red y la subred, se usa la red predeterminada, y se usa la subred predeterminada en el REGION especificado.

Reserva una dirección IP externa para el balanceador de cargas

Para reservar una dirección IP externa para el balanceador de cargas, sigue estos pasos.

Console

  1. En la consola de Google Cloud, ve a la página Direcciones IP.

    Ir a Direcciones IP

  2. Para reservar una dirección IPv4, haz clic en Reservar dirección estática.

  3. Asigna un nombre para el recurso de dirección IP.

  4. Establece el nivel de red en Premium.

  5. Configura la Versión de IP como IPv4.

  6. Configura el Tipo como Global.

  7. Haz clic en Reservar.

gcloud

  1. Reserva una dirección IPv4 externa global para el balanceador de cargas.

    gcloud compute addresses create ADDRESS_NAME \
        --ip-version=IPV4 --global
    

    Reemplaza ADDRESS_NAME con un nombre para el recurso de dirección IP

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

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

Crea un recurso de certificado SSL

Si quieres crear un balanceador de cargas de HTTPS, debes agregar un recurso de certificado SSL al frontend del balanceador de cargas. Crea un recurso de certificado SSL mediante un certificado SSL administrado por Google o un certificado SSL autoadministrado.

  • Certificados administrados por Google. Te recomendamos que uses certificados administrados por Google, ya que Google Cloud obtiene, administra y renueva estos certificados de forma automática. Si quieres crear un certificado administrado por Google, debes tener un dominio y los registros DNS para ese dominio a fin de aprovisionar el certificado. Si aún no tienes un dominio, puedes obtener uno en Google Domains. Para obtener más información, consulta Primeros pasos con Google Domains. Además, deberás actualizar el registro A del DNS del dominio a fin de que apunte a la dirección IP del balanceador de cargas que se creó en el paso anterior. Para obtener instrucciones detalladas, consulta Usa certificados administrados por Google.

  • Certificados autoadministrados. Los certificados SSL autoadministrados son certificados que obtienes, aprovisionas y renuevas tú mismo. Los certificados autoadministrados pueden estar firmados por una autoridad certificadora o se pueden autofirmar. Si están firmados por una autoridad certificadora, debes tener un dominio. Si aún no tienes un dominio, puedes obtener uno en Google Domains. Para obtener más información, consulta Primeros pasos con Google Domains. Además, deberás actualizar el registro A del DNS del dominio a fin de que apunte a la dirección IP del balanceador de cargas que se creó en el paso anterior. Para obtener instrucciones detalladas, consulta Usa certificados SSL administrados por Google.

    Si no deseas configurar un dominio en este momento, puedes usar un certificado SSL autofirmado para hacer una prueba.

En estas instrucciones se supone que ya creaste un recurso de certificado SSL.

Configura el balanceador de cargas

Configura un balanceador de cargas de aplicaciones externo global con capacidades avanzadas de administración de tráfico (esquema de balanceo de cargas configurado como EXTERNAL_MANAGED) para conectarte a los servicios administrados.

Si te conectas a un servicio publicado que se implementa en varias regiones y creaste varios NEG de Private Service Connect para conectarte a cada adjunto de servicio, puedes agregar todos los NEG al servicio de backend.

Aunque el NEG de Private Service Connect es regional, todos los demás componentes del balanceo de cargas de esta configuración son globales.

Console

Inicia la configuración

  1. En la consola de Google Cloud, ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Haz clic en Crear balanceador de cargas.
  3. En Tipo de balanceador de cargas, selecciona Balanceador de cargas de aplicaciones (HTTP/HTTPS) y haz clic en Siguiente.
  4. En Orientado al público o interno, selecciona Orientado al público (externo) y haz clic en Siguiente.
  5. En Implementación global o de una sola región, selecciona Mejor para cargas de trabajo globales y haz clic en Siguiente.
  6. En Generación de balanceadores de cargas, selecciona Balanceador de cargas de aplicaciones externo global y haz clic en Siguiente.
  7. Haz clic en Configurar.

Configuración básica

  1. Ingresa un nombre de balanceador de cargas.
  2. Mantén la ventana abierta para continuar.

Configuración de frontend

  1. Haga clic en Configuración de frontend.
  2. Haz clic en Agregar IP y puerto de frontend.
  3. Ingresa un Nombre para el balanceador de cargas.
  4. En el campo Protocolo, elige HTTPS (incluye HTTP/2).
  5. Asegúrate de que el Puerto esté establecido en 443 para permitir el tráfico HTTPS.
  6. En Dirección IP, elige la dirección IP que reservaste.

  7. Haz clic en la lista Certificado y elige el certificado que creaste.

  8. Haz clic en Aceptar.

  9. Haz clic en Listo.

Configuración de backend

El grupo de extremos de red de Private Service Connect es un tipo de backend del balanceador de cargas. Agrega todos los NEG de Private Service Connect para el mismo servicio administrado al servicio de backend.

  1. Haga clic en Configuración de backend.
  2. Haz clic en la lista Servicios y buckets de backend y, luego, en Crear un servicio de backend.
  3. Ingresa un Nombre para el servicio de backend.
  4. Configura el Tipo de backend como Grupo de extremos de red de Private Service Connect.
  5. En la sección Backends, haz clic en la lista Grupo de extremos de red de Private Service Connect y elige el NEG de Private Service Connect que creaste. Haz clic en Listo.
  6. Si creaste más de un NEG de Private Service Connect, haz clic en Agregar backend para elegir otro NEG.

    Repite este paso hasta que todos los NEG de este servicio administrado se agreguen al servicio de backend.

  7. Haga clic en Crear.

Reglas de enrutamiento

Debido a que esta configuración contiene solo un servicio de backend, la regla de enrutamiento predeterminada es suficiente y no necesitas hacer ningún cambio en esta sección.

Revisa y finaliza

  1. Para revisar la configuración, haz clic en Revisar y finalizar.
  2. Haz clic en Crear.

gcloud

  1. Crea un servicio de backend para el servicio administrado al que deseas conectarte.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTPS \
        --global
    

    Reemplaza BACKEND_SERVICE_NAME por el nombre del servicio de backend.

  2. Agrega el NEG de Private Service Connect que apunta al servicio de destino.

    Si creaste varios NEG en diferentes regiones para el mismo servicio, repite este paso a fin de agregar todos los NEG al servicio de backend.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --network-endpoint-group=NEG_NAME \
      --network-endpoint-group-region=REGION \
      --global
    

    Reemplaza lo siguiente:

    • BACKEND_SERVICE_NAME: el nombre del servicio de backend.
    • NEG_NAME: es el nombre del grupo de extremos de red.
    • REGION: la región del grupo de extremos de red
  3. Crea un mapa de URL para el balanceador de cargas.

    Un mapa de URL debe hacer referencia a un servicio de backend predeterminado. Configura el servicio de backend que creaste como el servicio de backend predeterminado.

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=BACKEND_SERVICE_NAME \
      --global
    

    Reemplaza lo siguiente:

    • URL_MAP_NAME: un nombre para el mapa de URL

    • BACKEND_SERVICE_NAME: el nombre del servicio de backend predeterminado del balanceador de cargas El valor predeterminado se usa cuando ninguna regla de host coincide con el nombre de host solicitado.

  4. Crea el proxy HTTPS de destino.

    Usa el recurso de certificado SSL que creaste para crear un proxy HTTPS de destino.

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

    Reemplaza lo siguiente:

    • PROXY_NAME: un nombre para el proxy HTTPS de destino.
    • URL_MAP_NAME: el nombre del mapa de URL.
    • CERTIFICATE: el nombre del recurso de certificado.
  5. 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
    

    Reemplaza lo siguiente:

    • FWD_RULE: un nombre para la regla de reenvío.

    • ADDRESS_NAME: El recurso de dirección IP que reservaste para usar en la regla de reenvío.

    • PROXY_NAME: el nombre del proxy HTTPS de destino.

Configura registros DNS

Si deseas acceder a tu extremo de Private Service Connect mediante un nombre de DNS, crea nombres de DNS para cada regla de reenvío externa. El registro DNS debe corresponder a un nombre en el mapa de URL. A menos que tu mapa de URL reescriba los nombres, el registro DNS también debe corresponder a los nombres que espera el servicio del productor.

Si usas Cloud DNS para administrar DNS, consulta Agrega un registro DNS.

Verifica la configuración

  1. Crea la instancia de VM.

    gcloud compute instances create VM_NAME \
        --network=NETWORK \
        --image-project=debian-cloud --image-family=debian-11 \
        --zone=ZONE
    

    Reemplaza lo siguiente:

    • VM_NAME: un nombre para la máquina virtual.

    • NETWORK: la red de la VM.

    • ZONE: La zona para la VM.

  2. Conéctate a la VM.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. Usa curl para verificar la configuración. Con este comando, se establece el encabezado Host y se omite la resolución de DNS mediante la especificación de una dirección IP definida por el usuario. Puedes omitir el puerto si usas el puerto predeterminado para el protocolo, por ejemplo, si usas el puerto 443 en HTTPS.

    Puedes omitir la validación del certificado con la marca -k. Es posible que debas omitir la validación si usaste un certificado autofirmado para configurar el proxy HTTPS de destino o si la VM no tiene el certificado de la autoridad certificadora que firmó el certificado.

    curl [-k] -s 'https://HOST:443/RESOURCE_URI' \
        -H 'Host: HOST' \
        --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443
    

    Reemplaza lo siguiente:

    • HOST: el nombre de host que se configura en el mapa de URL.

    • RESOURCE_URI: el resto del URI del recurso que deseas usar para la verificación.

    • FWD_RULE_IP_ADDRESS: la dirección IP asignada a la regla de reenvío.

Soluciona problemas

La creación del backend se realiza correctamente, pero no se establece la conectividad

Si creas un backend para servicios publicados de forma correcta, pero no se establece la conectividad, verifica el estado de conexión del backend. El estado de la conexión puede indicar los pasos a seguir para resolver el problema.