1. Introducción
En este codelab, crearás una conexión hacia el sur al servicio SMTP de Looker mediante un balanceador de cargas de proxy TCP interno y un grupo de extremos de red de Internet (NEG) con el FQDN notifications-pa.googleapis.com invocado desde Looker PSC como consumidor del servicio.
Private Service Connect es una función de las herramientas de redes de Google Cloud que permite a los consumidores acceder a servicios administrados de forma privada desde dentro de su red de VPC. De forma similar, permite que los productores de servicios administrados alojen estos servicios en sus propias redes de VPC independientes y ofrezcan una conexión privada a sus consumidores. Por ejemplo, cuando usas Private Service Connect para acceder a Looker, tú eres el consumidor del servicio y Google es el productor del servicio, como se destaca en la Figura 1.
Figura 1:
El acceso de salida, también conocido como PSC inverso, permite que el consumidor cree un servicio publicado como productor para permitir que Looker acceda a extremos locales, en una VPC, a servicios administrados y a Internet. Las conexiones de salida se pueden implementar en cualquier región, independientemente de dónde se implemente el PSC de Looker, como se destaca en la Figura 2.
Figura 2:
Qué aprenderás
- Requisitos de red
- Crea un servicio de productor de Private Service Connect
- Crea un extremo de Private Service Connect en Looker
- Establecer la conectividad con el servicio SMTP de Looker
Requisitos
- Proyecto de Google Cloud con permisos de propietario
- Instancia existente de PSC de Looker
2. Qué compilarás
Establecerás una red de Producer, looker-psc-demo, para implementar un balanceador de cargas de proxy de TCP interno y un NEG de Internet publicado como un servicio a través de Private Service Connect (PSC). Una vez publicado, realizarás las siguientes acciones para validar el acceso al servicio de Productor:
- Crea un extremo de PSC en Looker asociado con el adjunto de servicio del productor
- Usa la consola de Looker para crear una configuración de correo SMTP
3. Requisitos de red
A continuación, se muestra el desglose de los requisitos de red para la red de productor. El consumidor en este codelab es la instancia de PSC de Looker.
Componentes | Descripción |
VPC (looker-psc-demo) | VPC en modo personalizado |
Subred NAT de PSC | Los paquetes de la red de VPC del consumidor se traducen con NAT de origen (SNAT) para que sus direcciones IP de origen originales se conviertan en direcciones IP de origen de la subred NAT en la red de VPC del productor. |
Subred de la regla de reenvío de PSC | Se usa para asignar una dirección IP al balanceador de cargas de proxy TCP regional interno. |
Subred del PSC NEG | Se usa para asignar una dirección IP a un grupo de extremos de red |
Subred de solo proxy | A cada uno de los proxies del balanceador de cargas se le asigna una dirección IP interna. Los paquetes enviados desde un proxy a una VM o a un extremo de backend tienen una dirección IP de origen de la subred de solo proxy. |
NEG de Internet | Es un recurso que se usa para definir un backend externo para el balanceador de cargas. No se puede acceder al extremo solo desde Cloud VPN o Cloud Interconnect. |
Servicio de backend | Un servicio de backend actúa como un puente entre el balanceador de cargas y los recursos de backend. En el instructivo, el servicio de backend está asociado con el NEG de Internet. |
Cloud Router | Cloud NAT se basa en Cloud Routers para las funciones del plano de control, pero no para la administración de sesiones de BGP. |
Cloud NAT | El NEG de Internet regional aprovecha Cloud NAT para la salida a Internet. |
4. Topología del codelab
5. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.
- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla cuando quieras.
- El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto (suele identificarse como
PROJECT_ID
). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usa el mismo durante todo el proyecto. - Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no costará mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.
Inicia Cloud Shell
Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.
En Google Cloud Console, haz clic en el ícono de Cloud Shell en la barra de herramientas en la parte superior derecha:
El aprovisionamiento y la conexión al entorno deberían tomar solo unos minutos. Cuando termine el proceso, debería ver algo como lo siguiente:
Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Todo tu trabajo en este codelab se puede hacer en un navegador. No es necesario que instales nada.
6. Antes de comenzar
Habilita las APIs
En Cloud Shell, asegúrate de que el ID del proyecto esté configurado:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
echo $project
echo $region
Habilita todos los servicios necesarios con el siguiente comando:
gcloud services enable compute.googleapis.com
7. Crea la red de VPC del productor
Red de VPC
Dentro de Cloud Shell, realiza lo siguiente:
gcloud compute networks create looker-psc-demo --subnet-mode custom
Crea subredes
La subred de PSC se asociará con el adjunto de servicio de PSC para la traducción de direcciones de red.
En Cloud Shell, crea la subred de PSC NAT:
gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT
En Cloud Shell, crea la subred de la regla de reenvío del productor:
gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
En Cloud Shell, crea la subred de solo proxy regional del productor:
gcloud compute networks subnets create $region-proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=looker-psc-demo \
--range=10.10.10.0/24
Crea la puerta de enlace de NAT pública
El balanceador de cargas del proxy de TCP interno regional usa la puerta de enlace de NAT para la salida de Internet con la opción de configuración –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, por lo que la misma NATGW no admitirá la salida de Internet de GCE/GKE. Implementar una puerta de enlace NAT adicional con –endpoint-types=ENDPOINT_TYPE_VM para la salida de Internet de GCE/GKE
En Cloud Shell, crea el Cloud Router:
gcloud compute routers create looker-psc-demo-cloud-router --network looker-psc-demo --region $region
En Cloud Shell, crea la puerta de enlace de Cloud NAT, habilita la salida de Internet para el balanceador de cargas del proxy TCP:
gcloud compute routers nats create looker-psc-demo-natgw \
--router=looker-psc-demo-cloud-router \
--endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
--nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
--auto-allocate-nat-external-ips \
--region=$region
Reserva la dirección IP del balanceador de cargas
En Cloud Shell, reserva una dirección IP interna para el balanceador de cargas:
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=producer-psc-fr-subnet
En Cloud Shell, consulta la dirección IP reservada.
gcloud compute addresses describe internet-neg-lb-ip \
--region=$region | grep -i address:
Resultado de ejemplo:
user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
Configura el NEG de Internet
Crea un NEG de Internet y configura –network-endpoint-type como internet-fqdn-port (el nombre de host y el puerto donde se puede acceder al backend externo).
En Cloud Shell, crea un NEG de Internet que se usa para github.com.
gcloud compute network-endpoint-groups create smtp-internet-neg \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=looker-psc-demo \
--region=$region
En Cloud Shell, actualiza el NEG de Internet smtp-internet-neg con el FQDN notifications-pa.googleapis.com y el puerto 443.
gcloud compute network-endpoint-groups update smtp-internet-neg \
--add-endpoint="fqdn=notifications-pa.googleapis.com,port=443" \
--region=$region
Crea una política de firewall de red y reglas de firewall
En Cloud Shell, haz lo siguiente:
gcloud compute network-firewall-policies create looker-psc-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy
La siguiente regla de firewall permite el tráfico del rango de subred de NAT de PSC a todas las instancias de la red.
En Cloud Shell, haz lo siguiente:
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp
8. Crear servicio de productor
Crea componentes del balanceador de cargas
En Cloud Shell, haz lo siguiente:
gcloud compute backend-services create producer-backend-svc --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED
gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=smtp-internet-neg --network-endpoint-group-region=$region --region=$region
En Cloud Shell, crea un proxy TCP de destino para enrutar las solicitudes a tu servicio de backend:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=producer-backend-svc \
--region=$region
En la siguiente sintaxis, crea una regla de reenvío (balanceador de cargas de proxy TCP interno).
En Cloud Shell, haz lo siguiente:
gcloud compute forwarding-rules create producer-smtp-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=looker-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=internet-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=443
Cómo crear un archivo adjunto de servicio
En Cloud Shell, crea el archivo adjunto del servicio, smtp-svc-attachment:
gcloud compute service-attachments create smtp-svc-attachment --region=$region --producer-forwarding-rule=producer-smtp-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
A continuación, obtén y anota el adjunto de servicio que aparece en el URI de selfLink, comenzando por los proyectos para configurar el extremo de PSC en Looker.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/github-svc-Attachment-https
En Cloud Shell, haz lo siguiente:
gcloud compute service-attachments describe smtp-svc-attachment --region=$region
Ejemplo:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-10-04T14:56:50.409-07:00'
description: ''
enableProxyProtocol: false
fingerprint: KUPXTZjrGkw=
id: '8947818105173563981'
kind: compute#serviceAttachment
name: smtp-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '23100082169578472'
low: '8947818105173563981'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-smtp-fr
En la consola de Cloud, navega a:
Servicios de red → Private Service Connect → Servicios publicados
9. Establece una conexión de extremo de PSC en Looker
En la siguiente sección, asociarás el archivo adjunto de servicio de productores con el PSC de Looker Core mediante el uso de marcas –psc-service-attachment en Cloud Shell para un solo dominio.
En Cloud Shell, crea la asociación de psc actualizando los siguientes parámetros para que coincidan con tu entorno:
- INSTANCE_NAME: Es el nombre de tu instancia de Looker (Google Cloud Core).
- DOMINIO_1: notifications-pa.googleapis.com
- SERVICE_ATTACHMENT_1: URI capturado cuando se describe el adjunto de servicio, smtp-svc-attachment
- REGIÓN: La región en la que se aloja tu instancia de Looker (Google Cloud Core).
Dentro de Cloud Shell, realiza lo siguiente:
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
Ejemplo:
gcloud looker instances update looker-psc-instance \
--psc-service-attachment domain=notifications-pa.googleapis.com,attachment=projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment \
--region=$region
En Cloud Shell, valida que el estado de conexión de serviceAttachments sea "ACEPTADO" y realiza la actualización con tu instancia de Looker PSC INSTANCE_NAME.
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
Ejemplo:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
Ejemplo:
{
...........................
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "notifications-pa.googleapis.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-10-04T22:02:31.445761128Z"
}
Valida el extremo de PSC en la consola de Cloud
En la consola de Cloud, puedes validar la conexión de PSC
En la consola de Cloud, navega a:
Looker → Instancia de Looker → Detalles
10. Prueba la conectividad de SMTP
En los siguientes pasos, usarás la consola de Looker para validar la conectividad SMTP. Para ello, generarás una prueba de SMTP y .
Correo electrónico de prueba
Looker envía correos electrónicos con el servidor SMTP predeterminado notifications-pa.googleapis.com. No se requieren pasos adicionales en este caso. Si deseas usar un servidor SMTP diferente para las notificaciones, consulta la sección de configuración SMTP personalizada.
Abre Looker Console y navega a los siguientes elementos:
Administrador → Plataforma → SMTP → Selecciona Enviar correo electrónico de prueba
A continuación, se muestra el correo electrónico de prueba obtenido de Looker:
Correo electrónico del informe generado
Navega a lo siguiente:
Explorar → Actividad del sistema → Uso de la API → Tipo de consulta de la API → Ejecutar
Resultado de ejemplo:
Para enviar los resultados a tu correo electrónico, selecciona el ícono de ajustes.
Si seleccionas Enviar, se abrirá una ventana nueva.
Ingresa tu dirección de correo electrónico y selecciona Enviar.
A continuación, se muestra el correo electrónico de prueba obtenido de Looker:
11. Configuración SMTP personalizada
En este instructivo, el servidor SMTP de Looker se usa para enviar notificaciones por correo electrónico a través del FQDN instalar-pa.googleapis.com y de Cloud NAT realizando la salida de Internet. Para usar tu propio servidor SMTP, crea un nuevo adjunto de servicio con las siguientes modificaciones:
Actualiza el NEG de Internet con el FQDN de tu servidor SMTP:
gcloud compute network-endpoint-groups update smtp-internet-neg \
--add-endpoint="fqdn=<your SMTP FQDN>,port=443" \
--region=$region
Especifica tu dominio SMTP cuando actualices la instancia de PSC de Looker:
- INSTANCE_NAME: Es el nombre de tu instancia de Looker (Google Cloud Core).
- DOM_1: <el FQDN del servidor SMTP>
- SERVICE_ATTACHMENT_1: URI capturado cuando se describe el adjunto de servicio, smtp-svc-attachment
- REGIÓN: La región en la que se aloja tu instancia de Looker (Google Cloud Core).
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
Para usar otro servicio de correo electrónico, selecciona Usar configuración de correo electrónico personalizada.
12. Limpia
Borra componentes del lab desde una sola terminal de Cloud Shell
gcloud compute service-attachments delete smtp-svc-attachment --region=$region -q
gcloud compute forwarding-rules delete producer-smtp-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete producer-backend-svc --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy --name=looker-psc-demo --global-firewall-policy -q
gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q
gcloud compute routers nats delete looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q
gcloud compute routers delete looker-psc-demo-cloud-router --region=$region -q
gcloud compute network-endpoint-groups delete smtp-internet-neg --region=$region -q
gcloud compute addresses delete internet-neg-lb-ip --region=$region -q
gcloud compute networks subnets delete producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q
gcloud compute networks delete looker-psc-demo -q
13. Felicitaciones
¡Felicitaciones! Configuraste y validaste correctamente la conectividad al servicio de SMTP de Looker con Looker Console potenciado por Private Service Connect.
Creaste la infraestructura del productor y aprendiste a crear un NEG de Internet, un servicio de productor y un extremo de PSC de Looker que permitieron la conectividad al servicio de productor.
Cosmopup piensa que los codelabs son geniales.
¿Qué sigue?
Consulta algunos codelabs sobre los siguientes temas:
- Usa Private Service Connect para publicar y consumir servicios
- Conéctate a servicios locales a través de redes híbridas con Private Service Connect y un balanceador de cargas de proxy TCP interno
- Acceso a todos los codelabs publicados de Private Service Connect
Lecturas y videos adicionales
Documentos de referencia
- Configura un balanceador de cargas de red de proxy interno regional con un backend externo
- Descripción general de Cloud NAT
- Crea una instancia de Private Service Connect de Looker (Google Cloud Core)
- Cómo publicar un servicio con Private Service Connect
- Configuración del administrador: SMTP | Looker | Google Cloud