Accede a los servicios publicados a través de extremos

En este documento, se explica cómo acceder a los servicios en otra red de VPC mediante los extremos de Private Service Connect. Puedes conectarte a tus propios servicios o a los que proporcionan otros productores de servicios, incluido Google.

Para obtener más información sobre los servicios, consulta Publica servicios administrados.

Roles

La siguiente función de IAM proporciona los permisos necesarios para realizar las tareas de esta guía.

Tarea Roles
Crear un extremo Ambos roles:
Administrador de red de Compute (roles/compute.networkAdmin) y
Directorio de servicios Editor (roles/servicedirectory.editor)
Configura entradas de DNS de forma manual o automática para un extremo Administrador de DNS(roles/dns.admin)

Antes de comenzar

  • Lee Acerca de la conexión a servicios mediante extremos, incluidas las limitaciones.

  • Debes habilitar la API de Compute Engine en tu proyecto.

  • Debes habilitar la API de Directorio de servicios en tu proyecto.

  • Debes habilitar la API de Cloud DNS en tu proyecto.

  • Las reglas de firewall de salida deben permitir el tráfico a la dirección IP interna del extremo. La regla de firewall implícita de permiso de salida permite la salida a cualquier dirección IP de destino.

    Si creaste reglas de firewall de denegación de salida en la red de VPC o si creaste políticas de firewall jerárquicas que modifican el comportamiento de salida permitido, el acceso al extremo podría verse afectado. Crea una política o regla de firewall de permiso de salida específicas para permitir el tráfico al destino de la dirección IP interna del extremo del servicio.

  • Debes tener el URI del adjunto del servicio para el servicio. Por ejemplo, projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

Crear un extremo

Un extremo se conecta a servicios en otra red de VPC mediante una regla de reenvío de Private Service Connect. Cada regla de reenvío se tiene en cuenta para la cuota por proyecto de las reglas de reenvío de Private Service Connect para acceder a los servicios en otra red de VPC.

Cuando usas Private Service Connect para conectarte a servicios en otra red de VPC, debes elegir una dirección IP de una subred regular en tu red de VPC.

La dirección IP debe estar en la misma región que el adjunto de servicio del productor del servicio. La dirección IP se considera dentro de la cuota del proyecto para las direcciones IP internas.

Cuando creas un extremo, se registra de forma automática con el Directorio de servicios mediante el espacio de nombres que elijas o el predeterminado, goog-psc-default.

Si deseas que el extremo esté disponible en más de una región, activa el acceso global.

Solo puedes actualizar el campo de acceso global de los extremos para los servicios publicados. Si deseas actualizar otros campos, borra el extremo y, luego, crea uno nuevo.

Console

  1. En la consola de Google Cloud, ve a la página Private Service Connect.

    Ir a Private Service Connect

  2. Haz clic en la pestaña Extremos conectados.

  3. Haz clic en Conectar extremo.

  4. En Destino, selecciona Servicio publicado.

  5. En Servicio de destino, ingresa el URI del adjunto de servicio al que deseas conectarte.

    El URI del adjunto de servicio tiene el siguiente formato: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

  6. En Nombre del extremo, ingresa un nombre para usar en el extremo.

  7. Selecciona una red para el extremo.

  8. Selecciona una subred para el extremo.

  9. Selecciona una dirección IP para el extremo. Si necesitas una dirección IP nueva, puedes crear una:

    1. Haz clic en el menú desplegable Dirección IP y selecciona Crear dirección IP.
    2. Ingresa un nombre y una descripción para la dirección IP.
    3. En Dirección IP estática, selecciona Asignar de forma automática o Permitirme elegir.

      Si seleccionaste Permitirme elegir, ingresa la dirección IP personalizada que deseas usar.

    4. Haz clic en Reservar.

  10. Para que el extremo esté disponible desde cualquier región, selecciona Habilitar el acceso global.

  11. Selecciona un espacio de nombres de la lista desplegable o crea un espacio de nombres nuevo.

    La región se propaga en función de la subred seleccionada.

  12. Haz clic en Agregar extremo.

gcloud

  1. Reserva una dirección IP interna para asignarla al extremo.

    gcloud compute addresses create ADDRESS_NAME \
        --region=REGION \
        --subnet=SUBNET
    

    Reemplaza lo siguiente:

    • ADDRESS_NAME: nombre que se asignará a la dirección IP reservada.

    • REGION: Es la región de la dirección IP del extremo. Debe ser la misma región que contiene el adjunto del servicio del productor de servicios.

    • SUBNET: Es el nombre de la subred para la dirección IP del extremo.

  2. Busca la dirección IP reservada.

    gcloud compute addresses list --filter="name=ADDRESS_NAME"
    
  3. Crea una regla de reenvío para conectar el extremo al adjunto de servicio del productor de servicios. De forma predeterminada, los extremos solo están disponibles en su propia región. Para que un extremo esté disponible desde cualquier región, usa la marca --allow-psc-global-access.

    • Crea un extremo al que solo se pueda acceder desde su propia región.

      gcloud compute forwarding-rules create ENDPOINT_NAME \
        --region=REGION \
        --network=NETWORK_NAME \
        --address=ADDRESS_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT \
        [ --service-directory-registration=projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE ]
      
    • Crea un extremo al que se pueda acceder desde cualquier región.

      gcloud compute forwarding-rules create ENDPOINT_NAME \
        --region=REGION \
        --network=NETWORK_NAME \
        --address=ADDRESS_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT \
        --allow-psc-global-access \
        [ --service-directory-registration=projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE ]
      

    Reemplaza lo siguiente:

    • ENDPOINT_NAME: nombre que se asignará al extremo.

    • REGION: Es la región para el extremo. Debe ser la misma región que contiene el adjunto del servicio del productor de servicios.

    • NETWORK_NAME: nombre de la red de VPC para el extremo.

    • ADDRESS_NAME: Es el nombre de la dirección reservada.

    • SERVICE_ATTACHMENT: Es el URI del adjunto del servicio del productor de servicios. Por ejemplo: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

    • PROJECT_ID: el ID de tu proyecto

    • NAMESPACE: El espacio de nombres del Directorio de servicios que deseas usar. Si especificas un espacio de nombres que no existe, se crea el espacio de nombres.

      Si omites la marca --service-directory-registration, se usa el espacio de nombres predeterminado de goog-psc-default.

API

  1. Reserva una dirección IP interna para asignarla al extremo.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
    
    {
      "name": "ADDRESS_NAME",
      "addressType": "INTERNAL",
      "subnetwork": "SUBNET_URI"
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto

    • ADDRESS_NAME: nombre que se asignará a la dirección IP reservada.

    • SUBNET_URI: la subred de la dirección IP. Usa el método subnetworks.list o gcloud compute networks subnets list --uri para encontrar las URL de tus redes.

  2. Crea una regla de reenvío para conectar el extremo al adjunto de servicio del productor de servicios. De forma predeterminada, los extremos solo están disponibles en su propia región. Para hacer que un extremo esté disponible desde cualquier región, establece allowPscGlobalAccess en true.

    • Crea un extremo al que solo se pueda acceder desde su propia región.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules
      {
        "name": "ENDPOINT_NAME",
        "IPAddress": "ADDRESS_URI",
        "target": "SERVICE_ATTACHMENT",
        "network": "NETWORK_URI",
        "serviceDirectoryRegistrations": [
            {
                "namespace": "NAMESPACE"
            }
        ]
      }
      
    • Crea un extremo al que se pueda acceder desde cualquier región.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules
      {
        "name": "ENDPOINT_NAME",
        "IPAddress": "ADDRESS_URI",
        "target": "SERVICE_ATTACHMENT",
        "network": "NETWORK_URI",
        "allowPscGlobalAccess": true,
        "serviceDirectoryRegistrations": [
            {
                "namespace": "NAMESPACE"
            }
        ]
      }
      

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto

    • REGION: Es la región para el extremo.

    • ENDPOINT_NAME: nombre que se asignará al extremo.

    • ADDRESS_URI: URI de la dirección reservada en la red asociada. Usa el método addresses.list o gcloud compute addresses list --uri para encontrar la URL de la dirección reservada.

    • SERVICE_ATTACHMENT: Es el URI del adjunto del servicio del productor de servicios. Por ejemplo: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

    • NETWORK_URI: red de VPC para el extremo. Usa el método network.list o gcloud compute networks list --uri para encontrar el URI de tu red.

    • NAMESPACE: es el espacio de nombres para el extremo. Especificar un espacio de nombres que no existe, crea el espacio de nombres. Si omites el campo namespace, se asigna el espacio de nombres predeterminado de goog-psc-default.

Crea un extremo con una dirección IP desde una red de VPC compartida

Los administradores de proyectos de servicio pueden crear extremos en proyectos de servicio de VPC compartida que usan direcciones IP de las redes de VPC compartidas conectadas. La creación de extremos de este tipo no está disponible en la consola de Google Cloud. Debes usar Google Cloud CLI o enviar una solicitud a la API. Para obtener más información, consulta VPC compartida.

En este ejemplo, se muestra cómo crear un extremo con una dirección IP de una red de VPC compartida a la que se puede acceder desde una sola región. Si quieres habilitar el acceso global o elegir un espacio de nombres para el Directorio de servicios, consulta Crea un extremo.

gcloud

  1. Para reservar una dirección IP interna a fin de asignarla al extremo, realiza una de las siguientes acciones:
  2. En el proyecto de servicio, crea el extremo:

    gcloud compute forwarding-rules create ENDPOINT_NAME \
        --region=REGION \
        --network=projects/HOST_PROJECT/global/networks/HOST_NETWORK \
        --address=projects/ADDRESS_PROJECT/regions/REGION/addresses/ADDRESS_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT
    

    Reemplaza lo siguiente:

    • ENDPOINT_NAME: nombre que se asignará al extremo.
    • REGION: Es la región para el extremo. Debe ser la misma región que contiene el adjunto del servicio del productor de servicios.
    • HOST_PROJECT: el ID del proyecto de la red de VPC compartida.
    • HOST_NETWORK: nombre de la red de VPC compartida que contiene la dirección IP del extremo.
    • ADDRESS_PROJECT: el ID del proyecto en el que reservaste la dirección IP. Puede ser el proyecto de servicio o el proyecto host.
    • ADDRESS_NAME: nombre de la dirección IP reservada.
    • SERVICE_ATTACHMENT: Es el URI del adjunto del servicio del productor de servicios. Por ejemplo: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

API

  1. Para reservar una dirección IP interna a fin de asignarla al extremo, realiza una de las siguientes acciones:

  2. En el proyecto de servicio, crea el extremo:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules
    {
       "name": "ENDPOINT_NAME",
       "IPAddress": "projects/ADDRESS_PROJECT/regions/REGION/addresses/ADDRESS_NAME",
       "target": "SERVICE_ATTACHMENT",
       "network": "projects/HOST_PROJECT/global/networks/HOST_NETWORK"
    }
    

    Reemplaza lo siguiente:

    • PROJECT: el ID del proyecto de servicio.
    • REGION: Es la región para el extremo. Debe ser la misma región que contiene el adjunto del servicio del productor de servicios.
    • ENDPOINT_NAME: nombre que se asignará al extremo.
    • ADDRESS_PROJECT: el ID del proyecto en el que reservaste la dirección IP. Puede ser el proyecto de servicio o el proyecto host.
    • ADDRESS_NAME: nombre de la dirección IP reservada.
    • SERVICE_ATTACHMENT: Es el URI del adjunto del servicio del productor de servicios. Por ejemplo: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
    • HOST_PROJECT: el ID del proyecto de la red de VPC compartida.
    • HOST_NETWORK: nombre de la red de VPC compartida que contiene la dirección IP del extremo.

Enumerar extremos

Puedes enumerar todos los extremos configurados.

Console

  1. En la consola de Google Cloud, ve a la página Private Service Connect.

    Ir a Private Service Connect

  2. Haz clic en la pestaña Extremos conectados.

    Se muestran los extremos.

gcloud

gcloud compute forwarding-rules list \
    --filter 'target~serviceAttachments'

El resultado es similar al siguiente:

NAME  REGION  IP_ADDRESS  IP_PROTOCOL  TARGET
RULE          IP          TCP          REGION/serviceAttachments/SERVICE_NAME

API

Esta llamada a la API muestra todas las reglas de reenvío, no solo los extremos que se usan para acceder a los servicios.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules

Reemplaza lo siguiente:

  • PROJECT_ID: proyecto que contiene el extremo.
  • REGION: Es la región para el extremo.

Ver detalles del extremo

Puedes ver todos los detalles de configuración de un extremo, incluido su estado de conexión.

Console

  1. En la consola de Google Cloud, ve a la página Private Service Connect.

    Ir a Private Service Connect

  2. Haz clic en la pestaña Extremos conectados.

  3. Haz clic en el servicio que deseas ver.

gcloud

gcloud compute forwarding-rules describe \
    ENDPOINT_NAME --region=REGION

Reemplaza lo siguiente:

  • ENDPOINT_NAME: El nombre del extremo.
  • REGION: Es la región para el extremo.

API

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/ENDPOINT_NAME

Reemplaza lo siguiente:

  • PROJECT_ID: proyecto que contiene el extremo.
  • REGION: Es la región para el extremo.
  • ENDPOINT_NAME: El nombre del extremo.

Etiqueta un extremo

Puedes administrar etiquetas para los extremos. Para obtener instrucciones detalladas, consulta Etiqueta recursos.

Borra un extremo †

Puedes borrar un extremo.

Sin embargo, las siguientes configuraciones del Directorio de servicios no se borran cuando borras el extremo:

  • Espacio de nombres del Directorio de servicios
  • Zona del DNS del Directorio de servicios

Otros servicios pueden usar el espacio de nombres del Directorio de servicios y la zona del DNS del Directorio de servicios. Verifica que el espacio de nombres esté vacío antes de borrar el espacio de nombres del Directorio de servicios o borrar la zona del DNS del Directorio de servicios.

Console

  1. En la consola de Google Cloud, ve a la página Private Service Connect.

    Ir a Private Service Connect

  2. Haz clic en la pestaña Extremos conectados.

  3. Selecciona el extremo que deseas borrar y, luego, haz clic en Borrar.

gcloud

    gcloud compute forwarding-rules delete \
        ENDPOINT_NAME --region=REGION

Reemplaza lo siguiente:

  • ENDPOINT_NAME: El nombre del extremo.
  • REGION: Es la región para el extremo.

API

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/ENDPOINT_NAME

Reemplaza lo siguiente:

  • PROJECT_ID: proyecto que contiene el extremo.
  • REGION: Es la región para el extremo.
  • ENDPOINT_NAME: El nombre del extremo.

Accede a los extremos desde redes híbridas

Los clientes en las redes conectadas a Google Cloud con adjuntos de VLAN para los túneles de Cloud Interconnect o Cloud VPN pueden llegar a los extremos de Private Service Connect.

  • El adjunto de VLAN o el túnel de Cloud VPN deben finalizar en la misma red de VPC que el extremo. Los clientes en redes de VPC de intercambio de tráfico no pueden alcanzar extremos.

  • El tráfico del cliente desde los adjuntos de VLAN o los túneles de Cloud VPN puede llegar a los extremos en otra región si se configura el acceso global.

  • Dataplane v1 y Dataplane v2 son compatibles con los adjuntos de VLAN. Para obtener más información sobre las versiones de Dataplane, consulta Dataplane v2.

Si deseas acceder al extremo mediante su nombre de DNS, debes configurar los sistemas en la otra red para que puedan realizar consultas a tus zonas del DNS privado.

Si implementaste las zonas del DNS privado con Cloud DNS, completa los siguientes pasos:

  • Crea una política de servidor de entrada en la red de VPC a la que se conecta la otra red.

  • Identifica los puntos de entrada de reenvío entrantes en la región en la que se encuentra el adjunto de VLAN o el túnel de Cloud VPN, en la red de VPC a la que tu otra red se conecta.

  • Configura sistemas y servidores de nombres de DNS en la otra red para reenviar los Nombres de DNS para los extremos a un punto de entrada de reenvío entrante en la misma región que el adjunto de VLAN o el túnel de Cloud VPN que se conecta a la red de VPC.

Visualiza las zonas DNS del Directorio de servicios

Si se cumplen los requisitos para la configuración de DNS automática, se crea una zona DNS con un nombre en el formato NAMESPACE--REGION.

Console

  1. En la consola de Google Cloud, ve a la página Zonas de Cloud DNS.

    Ir a Zonas de Cloud DNS

  2. Busca una zona privada con el nombre NAMESPACE--REGION.

gcloud

  • Ejecuta el siguiente comando para mostrar todas las zonas del DNS privadas:

    gcloud dns managed-zones list \
        --filter="visibility=private"
    
  • Ejecuta el siguiente comando para obtener detalles de una zona con el nombre NAMESPACE--REGION.

    gcloud dns managed-zones describe NAMESPACE--REGION
    

Si la zona no está presente, consulta los detalles del extremo y verifica si la configuración del extremo incluye un valor para el espacio de nombres.

Otras formas de configurar el DNS

Si no se cumplen los requisitos para la configuración automática del DNS, puedes crear entradas del DNS de otras maneras:

Configura una zona del DNS del Directorio de servicios

Si un extremo se registra con el Directorio de servicios, pero el servicio publicado con el que se conecta no tiene configurado un nombre de dominio, no se realizan cambios de DNS.

Si deseas replicar la configuración automática de DNS, puedes configurar de forma manual una zona DNS del Directorio de servicios respaldada por el espacio de nombres del Directorio de servicios. Después de crear la zona, se crean automáticamente entradas de DNS para el extremo.

Crea una zona DNS del directorio del servicio con la siguiente configuración:

  • Nombre de la zona: Especifica NAMESPACE--REGION, en la que NAMESPACE es el espacio de nombres en el que está registrado el extremo y REGION es la región en la que se crea el extremo.

  • Nombre de DNS: Es el dominio DNS que el productor de servicios usa para sus servicios publicados. Consulta esta información con el productor de servicios.

    El nombre del DNS puede tener el formato REGION.p.DOMAIN. Por ejemplo, si el dominio público del productor de servicios es example.com y su servicio publicado está en us-west1, recomendamos que habiliten la disponibilidad de su servicio mediante los nombres de dominio us-west1.p.example.com. Incluye un punto final, por ejemplo, us-west1.p.example.com..

  • Espacio de nombres del Directorio de servicios: El espacio de nombres que configuraste para este extremo.

Consulta los detalles del extremo para encontrar el espacio de nombres y la región del Directorio de servicios.

Mediante esta configuración, si configuraste una zona del DNS del Directorio de servicios con el nombre DNS us-west1.p.example.com y creas un extremo llamado analytics, se crea automáticamente un registro DNS para analytics.us-west1.p.example.com.

Registra un extremo con el Directorio de servicios

Los extremos nuevos se registran de forma automática con el Directorio de servicios. Sin embargo, si se creó un extremo antes de que se habilitara el registro automático con el Directorio de servicios, es posible que falte esta configuración.

Puedes borrar el extremo y crear uno nuevo, que se registra con el Directorio de servicios de forma automática.

También puedes seguir estos pasos para registrar un extremo existente con un espacio de nombres del Directorio de servicios.

  1. Crea un espacio de nombres del Directorio de servicios para el extremo, NAMESPACE.

  2. Crea un servicio del Directorio de servicios para el extremo, SERVICE_NAME.

    En el servicio, usa el mismo nombre que el de la regla de reenvío que se usa para el extremo, ENDPOINT_NAME.

  3. Crea un extremo de Directorio de servicios con el nombre default y usa la dirección IP y el puerto (443) del extremo.

Después de registrar el extremo en el Directorio de servicios, sigue las instrucciones para configurar una zona DNS del Directorio de servicios.

Configura DNS de forma manual

Si impediste la configuración automática de DNS o si no está habilitada en tu configuración, puedes usar Cloud DNS para crear registros DNS de forma manual.

Si deseas obtener más información, consulta las siguientes páginas:

  • Control de acceso: El rol de administrador de DNS (roles/dns.admin) proporciona los permisos necesarios para crear zonas y registros DNS.

  • Crea una zona privada.

    • Cuando configuras una zona privada, debes proporcionar un nombre de DNS. Usa el dominio DNS que el productor de servicios usa para sus servicios publicados. Consulta esta información con el productor de servicios.

      Puede tener este formato: REGION.p.DOMAIN. Por ejemplo, si el dominio público del productor de servicios es example.com y su servicio publicado está en us-west1, recomendamos que habiliten la disponibilidad de su servicio mediante los nombres de dominio us-west1.p.example.com.

  • Agrega un registro,

Soluciona problemas

No se puede crear una zona DNS privada

Cuando creas un extremo, se crea una zona DNS del Directorio de servicios. La creación de zonas puede fallar por los siguientes motivos:

  • No habilitaste la API de Cloud DNS en tu proyecto.

  • No tienes los permisos necesarios para crear una zona DNS del Directorio de servicios.

  • Existe una zona DNS con el mismo nombre en esta red de VPC.

  • Ya existe una zona DNS para el mismo nombre de dominio en esta red de VPC.

Para crear manualmente la zona DNS del Directorio de servicios, haz lo siguiente:

  1. Verifica que la API de Cloud DNS esté habilitada en tu proyecto.

  2. Verifica que tengas los permisos necesarios para crear la zona DNS del Directorio de servicios:

    • dns.managedZones.create
    • dns.networks.bindPrivateDNSZone
    • servicedirectory.namespaces.associatePrivateZone
  3. Si hay una zona en conflicto, pero ya no es necesaria, borra la zona DNS.

  4. Crea una zona DNS de Directorio del servicio respaldada por el espacio de nombres del Directorio de servicios asociado con tu extremo.

La creación de extremos falla cuando se configura el acceso global

No todos los servicios publicados de Private Service Connect admiten extremos con acceso global. Si creas un extremo con acceso global y el servicio publicado no lo admite, verás este mensaje de error:

Private Service Connect global access is not supported for the given forwarding rule, since its producer service does not support consumer global access.

Crea el extremo sin la opción de acceso global.

La creación del extremo se realiza de manera correcta, pero no se establece la conectividad

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