NEG híbrido vinculado ao sul do Looker PSC para o local

1. Introdução

Neste codelab, você vai realizar uma conexão southbound para um banco de dados postgres local por H-VPN usando um balanceador de carga de proxy TCP interno e um grupo de endpoint de rede híbrida invocado do PSC do Looker como consumidor de serviço.

O Private Service Connect é um recurso da rede do Google Cloud que permite que consumidores acessem serviços gerenciados de maneira particular na rede VPC deles. Da mesma forma, ele permite que produtores do serviço gerenciado hospedem esses serviços em redes VPC separadas e ofereçam uma conexão particular aos consumidores. Por exemplo, quando você usa o Private Service Connect para acessar o Looker, você é o consumidor de serviços e o Google é o produtor de serviços, conforme destacado na Figura 1.

Figura 1.

145ea4672c3a3b14.png

O acesso de ida, também conhecido como PSC reverso, permite que o consumidor crie um serviço publicado como produtor para permitir que o Looker acesse endpoints locais, em uma VPC, serviços gerenciados e híbridos. As conexões de saída podem ser implantadas em qualquer região, independentemente de onde o PSC do Looker está implantado, conforme destacado na Figura 2.

Figura 2.

259493afd914f68b.png

O que você vai aprender

  • Requisitos de rede
  • Criar um serviço de produtor do Private Service Connect
  • Criar um endpoint do Private Service Connect no Looker
  • Estabelecer conectividade com o banco de dados postgres local do Looker usando uma conexão de teste

O que é necessário

def88091b42bfe4d.png

2. O que você vai criar

Você vai estabelecer uma rede de produtor, looker-psc-demo, para implantar o balanceador de carga de proxy TCP interno e o NEG híbrido publicado como um serviço pelo Private Service Connect (PSC). Para demonstrar um banco de dados local, você vai implantar uma VPC de demonstração local conectada à VPC looker-psc-demo usando a VPN de alta disponibilidade.

Você vai realizar as seguintes ações para validar o acesso ao serviço de produtor:

  • Criar um endpoint do PSC no Looker associado ao anexo de serviço do produtor
  • Use o console do Looker para realizar uma validação de conexão com o banco de dados postgres local

3. Requisitos de rede

Confira abaixo os requisitos de rede para a rede do produtor. O consumidor neste codelab é a instância do PSC do Looker.

Componentes

Descrição

VPC (looker-psc-demo)

VPC de modo personalizado

VPC (on-prem-demo)

VPC de modo personalizado

Sub-rede NAT do PSC

Os pacotes da rede VPC do consumidor são convertidos usando a NAT de origem (SNAT) para que os endereços IP de origem sejam convertidos em endereços IP de origem da sub-rede NAT na rede VPC do produtor.

Sub-rede da regra de encaminhamento do PSC

Usado para alocar um endereço IP para o balanceador de carga de proxy TCP regional interno

Sub-rede PSC NEG

Usado para alocar um endereço IP para o grupo de endpoints de rede

Sub-rede somente proxy

Cada um dos proxies do balanceador de carga recebe um endereço IP interno. Os pacotes enviados de um proxy para um endpoint ou VM de back-end têm um endereço IP de origem da sub-rede somente proxy.

NEG híbrido

Serviços locais e outros serviços de nuvem são tratados como qualquer outro back-end do Cloud Load Balancing. A principal diferença é que você usa um NEG de conectividade híbrida para configurar os endpoints desses back-ends. Os endpoints precisam ser combinações de IP:porta válidas que o balanceador de carga possa alcançar usando produtos de conectividade híbrida, como o Cloud VPN ou o Cloud Interconnect.

Serviço de back-end

Um serviço de back-end atua como uma ponte entre o balanceador de carga e os recursos de back-end. No tutorial, o serviço de back-end está associado ao NEG híbrido.

Cloud Router

  • O Cloud NAT depende de Cloud Routers para recursos do plano de controle, mas não para o gerenciamento de sessões do BGP.
  • O Cloud Router é usado para estabelecer BGP para estabelecimento de HA-VPN entre as VPCs psc-looker-demo e on-prem-demo.

VPN de alta disponibilidade

VPN de alta disponibilidade entre redes VPC do Google Cloud. Nesta topologia, é possível conectar duas redes VPC do Google Cloud usando um gateway de VPN de alta disponibilidade em cada rede. As redes VPC podem estar na mesma região ou em várias.

Cloud NAT

Usado pela VPC de demonstração local para saída de Internet

4. Topologia do codelab

79aeb28b38f237da.png

5. Configuração e requisitos

Configuração de ambiente autoguiada

  1. Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google e pode ser atualizada quando você quiser.
  • O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto.
  • Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
  1. Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não vai ser muito cara, se tiver algum custo. Para encerrar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou exclua o projeto. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.

Inicie o Cloud Shell

Embora o Google Cloud e o Spanner possam ser operados remotamente do seu laptop, neste codelab usaremos o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.

No Console do Google Cloud, clique no ícone do Cloud Shell na barra de ferramentas superior à direita:

55efc1aaa7a4d3ad.png

O provisionamento e a conexão com o ambiente levarão apenas alguns instantes para serem concluídos: Quando o processamento for concluído, você verá algo como:

7ffe5cbb04455448.png

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Neste codelab, todo o trabalho pode ser feito com um navegador. Você não precisa instalar nada.

6. Antes de começar

Ativar APIs

No Cloud Shell, verifique se o ID do projeto está configurado:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region

Ative todos os serviços necessários:

gcloud services enable compute.googleapis.com

7. Criar rede VPC do produtor

Rede VPC

No Cloud Shell, faça o seguinte:

gcloud compute networks create looker-psc-demo --subnet-mode custom

Criar sub-redes

A sub-rede do PSC será associada ao anexo de serviço PSC para fins de conversão de endereços de rede.

No Cloud Shell, crie a sub-rede NAT do PSC:

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

No Cloud Shell, crie a sub-rede da regra de encaminhamento do produtor:

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

No Cloud Shell, crie a sub-rede somente proxy regional do produtor:

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

Reserve o endereço IP do balanceador de carga

No Cloud Shell, reserve um endereço IP interno para o balanceador de carga:

gcloud compute addresses create hybrid-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

No Cloud Shell, confira o endereço IP reservado.

gcloud compute addresses describe hybrid-neg-lb-ip \
  --region=$region | grep -i address:

Exemplo de saída:

gcloud compute addresses describe hybrid-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Configurar o NEG híbrido

Crie um NEG híbrido e defina o –network-endpoint-type como NON_GCP_PRIVATE_IP_PORT.

No Cloud Shell, crie um NEG híbrido usado para acessar o banco de dados local:

gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
    --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
    --network=looker-psc-demo \
    --zone=$zone

No Cloud Shell, atualize o NEG híbrido com o IP:Porta do banco de dados local, 192.168.10.4 e a porta 5432, gerado em uma etapa posterior do tutorial:

gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
    --add-endpoint=ip=192.168.10.4,port=5432 \
    --zone=$zone

Criar uma verificação de integridade regional

No Cloud Shell, crie uma verificação de integridade que analise a porta do banco de dados local, 5432:

gcloud compute health-checks create tcp on-prem-5432-healthcheck \
    --region=$region \
    --port=5432

Criar políticas e regras de firewall de rede

No Cloud Shell, faça o seguinte:

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

A regra de firewall a seguir permite o tráfego do intervalo de sub-rede NAT do PSC para todas as instâncias na rede.

No Cloud Shell, faça o seguinte:

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. Criar serviço de produtor

Criar componentes do balanceador de carga

No Cloud Shell, crie um serviço de back-end:

gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region

No Cloud Shell, adicione o back-end NEG híbrido ao serviço de back-end:

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --region=$region

No Cloud Shell, crie um proxy TCP de destino para encaminhar solicitações ao serviço de back-end:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

Na sintaxe a seguir, crie uma regra de encaminhamento (balanceador de carga do proxy TCP interno).

No Cloud Shell, faça o seguinte:

gcloud compute forwarding-rules create producer-hybrid-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=hybrid-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=5432

Criar anexo de serviço

No Cloud Shell, crie o anexo de serviço, onpremdatabase1-svc-attachment:

gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

Em seguida, anote o anexo de serviço listado no URI de self-link que começa com projetos para configurar o endpoint do PSC no Looker.

selfLink: projects/<ID-do-projeto>/regions/<sua-região>/serviceAttachments/onpremdatabase1-svc-attachment

No Cloud Shell, faça o seguinte:

gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region

Exemplo de saída esperada:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '2549689544315850024'
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/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr

No console do Cloud, navegue até:

Serviços de rede → Private Service Connect → Serviços publicados

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. Estabelecer uma conexão de endpoint do PSC no Looker

Na próxima seção, você vai associar o anexo de serviço do produtor ao PSC do Looker Core usando as flags –psc-service-attachment no Cloud Shell para um único domínio.

No Cloud Shell, crie a associação do psc atualizando os seguintes parâmetros para corresponder ao seu ambiente:

  • INSTANCE_NAME: o nome da sua instância do Looker (Google Cloud Core).
  • DOMAIN_1: onprem.database1.com
  • SERVICE_ATTACHMENT_1: URI capturado ao criar o anexo de serviço, onpremdatabase1-svc-attachment
  • REGION: a região em que sua instância do Looker (Google Cloud Core) está hospedada.

No Cloud Shell, faça o seguinte:

gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

Exemplo:

gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region

No Cloud Shell, valide se o status de conexão de serviceAttachments é "ACCEPTED" e atualize com o nome da instância do PSC do Looker:

gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json

Exemplo:

gcloud looker instances describe looker-psc-instance --region=$region --format=json

Exemplo:

{
  "adminSettings": {},
  "createTime": "2024-08-23T00:00:45.339063195Z",
  "customDomain": {
    "domain": "looker.cosmopup.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/$project/locations/$region/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/$project/global/networks/looker-psc-demo",
      "projects/$project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "onprem.database1.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-09-01T23:15:07.426372901Z"
}

Validar o endpoint do PSC no console do Cloud

No console do Cloud, é possível validar a conexão PSC.

No console do Cloud, navegue até:

Looker → Instância do Looker → Detalhes

2d4684d722d31e4b.png

993cdaf748f4c030.png

Criar a rede VPC on-prem

Rede VPC

No Cloud Shell, faça o seguinte:

gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom

Criar a sub-rede do banco de dados Postgresql

No Cloud Shell, faça o seguinte:

gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region

No Cloud Shell, reserve um endereço IPv4 interno, usado para onprem.database1.com, 192.168.10.4:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

Crie o Cloud Router para a VPC on-prem-demo

O Cloud NAT é usado no tutorial para a instalação do pacote de software porque a instância da VM não tem um endereço IP externo.

No Cloud Shell, crie o Cloud Router usado com o Cloud NAT e a VPN de alta disponibilidade:

gcloud compute routers create on-prem-cr \
   --region=$region \
   --network=on-prem-demo \
   --asn=65002

No Cloud Shell, crie o gateway NAT:

gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region

Criar a instância de teste do banco de dados

Crie uma instância do banco de dados postgres que será usada para testar e validar a conectividade com o Looker.

No Cloud Shell, crie a instância:

gcloud compute instances create postgres-database \
    --project=$project \
    --zone=$zone \
    --machine-type=e2-medium \
    --subnet=database-subnet \
    --no-address \
    --private-network-ip 192.168.10.4 \
    --image-family debian-12 \
    --image-project debian-cloud  \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

Criar políticas e regras de firewall de rede

No Cloud Shell, faça o seguinte:

gcloud compute network-firewall-policies create on-prem-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy

Para permitir que o IAP se conecte às suas instâncias de VM, crie uma regra de firewall que:

  • Aplica-se a todas as instâncias da VM que você quer que sejam acessíveis usando o IAP.
  • Permite o tráfego de entrada do intervalo de IP 35.235.240.0/20. Esse intervalo contém todos os endereços IP que o IAP usa para o encaminhamento de TCP.

No Cloud Shell, faça o seguinte:

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

A regra de firewall a seguir permite o tráfego do intervalo de sub-rede somente proxy para todas as instâncias na rede.

No Cloud Shell, faça o seguinte:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp

10. Conectividade híbrida

Na próxima seção, você vai criar um Cloud Router que permite trocar rotas dinamicamente entre a nuvem privada virtual (VPC) e a rede de peering usando o protocolo de gateway de borda (BGP).

O Cloud Router pode configurar uma sessão do BGP em um túnel do Cloud VPN para conectar suas redes. Ele aprende automaticamente novos intervalos de endereços IP de sub-rede e os anuncia na sua rede de peering.

Nas etapas a seguir, você vai implantar a VPN de alta disponibilidade entre a VPC looker-psc-demo e a VPC on-prem-demo para demonstrar a conectividade de NEG híbrido a onprem.database1.com.

Crie o GW de VPN de alta disponibilidade para o looker-psc-demo.

Quando cada gateway é criado, dois endereços IPv4 externos são alocados automaticamente, um para cada interface de gateway.

No Cloud Shell, crie o GW de VPN de alta disponibilidade:

gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region

Criar o GW de VPN de alta disponibilidade para a demonstração no local

Quando cada gateway é criado, dois endereços IPv4 externos são alocados automaticamente, um para cada interface de gateway.

No Cloud Shell, crie o GW de VPN de alta disponibilidade:

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region

Validar a criação do GW de VPN de alta disponibilidade

No console, navegue até CONECTIVAÇÃO HÍBRIDA → VPN → GATEWAYS DO CLOUD VPN.

7f1b504616504866.png

Criar o Cloud Router para o looker-psc-demo

No Cloud Shell, crie o Cloud Router:

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

Criar os túneis de VPN para looker-psc-demo

Você vai criar dois túneis de VPN em cada gateway de VPN de alta disponibilidade.

Criar túnel VPN0

No Cloud Shell, crie o tunnel0:

gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 0

Criar túnel VPN1

No Cloud Shell, crie o tunnel1:

gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 1

Criar os túneis VPN para a demonstração no local

Você vai criar dois túneis de VPN em cada gateway de VPN de alta disponibilidade.

Criar túnel VPN0

No Cloud Shell, crie o tunnel0:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
   --interface 0

Criar túnel VPN1

No Cloud Shell, crie o tunnel1:

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

Validar a criação do túnel VPN

No console, navegue até CONECTIVADE HÍBRIDA → VPN → TÚNEIS DO CLOUD VPN.

c2fcb340a7614070.png

11. Estabelecer vizinhos do BGP

Criar uma interface e um peering do BGP para looker-psc-demo

No Cloud Shell, crie a interface do BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel0 \
    --region $region

No Cloud Shell, crie o peer do BGP:

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region $region

No Cloud Shell, crie a interface do BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel1 \
    --region $region

No Cloud Shell, crie o peer do BGP:

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region $region

Criar uma interface e um peering do BGP para a demonstração local

No Cloud Shell, crie a interface do BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel0-to-looker-psc-demo \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region $region

No Cloud Shell, crie o peer do BGP:

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel0 \
    --interface if-tunnel1-to-looker-psc-demo \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region $region

No Cloud Shell, crie a interface do BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel1-to-looker-psc-demo \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region $region

No Cloud Shell, crie o peer do BGP:

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel1\
    --interface if-tunnel2-to-looker-psc-demo \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region $region

Navegue até Conectividade híbrida → VPN para conferir os detalhes do túnel VPN.

78ab590317919bf5.png

Validar as rotas aprendidas pelo looker-psc-demo pela VPN de alta disponibilidade

Agora que os túneis de VPN de alta disponibilidade e as sessões do BGP estão estabelecidos, o comportamento padrão do Cloud Router é divulgar rotas de sub-rede. Confira as rotas aprendidas do looker-psc-demo.

No console, navegue até Rede VPC → Redes VPC → looker-psc-demo → ROUTES → REGION → VIEW.

Observe que o looker-psc-demo aprendeu a sub-rede de banco de dados 192.168.10.0/28 da VPC on-prem-demo.

c11a11ed8b0491c8.png

Validar se a VPC on-prem-demo aprendeu rotas pela VPN de alta disponibilidade

Como o comportamento padrão do Cloud Router é anunciar todas as sub-redes, a sub-rede somente proxy é anunciada pelo BGP. O NEG híbrido vai usar a sub-rede somente proxy como o endereço de origem ao se comunicar com o servidor onprem.database1.com.

Observe que a on-prem-demo aprendeu a sub-rede somente proxy 10.10.10.0/24 da looker-psc-demo.

No console, navegue até Rede VPC → Redes VPC → on-prem-demo → ROUTES → REGION → VIEW.

b0073faed026931f.png

12. Criação de banco de dados do postgres do Looker

Na próxima seção, você vai realizar um SSH na VM postgres-database usando o Cloud Shell.

No Cloud Shell, faça um ssh para a instância do banco de dados postgres:**

 gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

No SO, identifique e anote o endereço IP (ens4) da instância do banco de dados postgres:

ip a

Exemplo:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
    link/ether 42:01:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 192.168.10.4/32 metric 100 scope global dynamic ens4
       valid_lft 66779sec preferred_lft 66779sec
    inet6 fe80::4001:c0ff:fea8:a04/64 scope link 
       valid_lft forever preferred_lft forever

No SO, faça login no postgresql:

sudo -u postgres psql postgres

No SO, insira o comando de senha:

\password postgres

No SO, defina a senha como postgres (digite a mesma senha duas vezes):

postgres

Exemplo:

user@postgres-database:~$ sudo -u postgres psql postgres
\password postgres
psql (13.11 (Debian 13.11-0+deb11u1))
Type "help" for help.
postgres=# \password postgres
Enter new password for user "postgres": 
Enter it again: 

No SO, saia do Postgres:

\q

Exemplo:

postgres=# \q
user@postgres-database:~$ 

Na seção a seguir, você vai inserir o IP da instância do banco de dados do PostgreSQL (192.168.10.4) e a sub-rede somente proxy (10.10.10.0/24) no arquivo pg_hba.conf nas conexões locais do IPv4.

sudo nano /etc/postgresql/15/main/pg_hba.conf

A captura de tela abaixo mostra a atualização concluída: eaff2ed6d27fa7cc.png

Na seção a seguir, remova o comentário do postgresql.conf para detectar todos os endereços IP "*" conforme a captura de tela abaixo:

sudo nano /etc/postgresql/15/main/postgresql.conf

Antes:

65e0b1074dc48644.png

Depois:

14a0d1fa5455e23e.png

No SO, reinicie o serviço postgresql:

sudo service postgresql restart

No SO, valide o status do postgresql como ativo:

sudo service postgresql status

Exemplo:

No SO, valide o status do PostgreSQL como ativo:

user@postgres-database:/$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
     Active: active (exited) since Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
    Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 20486 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

13. Criar o banco de dados do Postgres

Na seção a seguir, você vai criar um banco de dados postgres chamado postgres_looker e o esquema looker_schema usado para validar a conectividade do Looker com o local.

No SO, faça login no postgres:

sudo -u postgres psql postgres

No SO, crie o banco de dados:

create database postgres_looker;

No SO, liste o banco de dados:

\l

No SO, crie o usuário postgres_looker com a senha postgreslooker:

create user postgres_looker with password 'postgreslooker';

No SO, conecte-se ao banco de dados:

\c postgres_looker;

No SO, crie o esquema looker-schema e saia para o prompt do Cloud Shell.

create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit

Exit from the OS, returning you to cloud shell:

\q

Exemplo:

user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
Type "help" for help.

postgres=# create database postgres_looker;
CREATE DATABASE
postgres=# \l
                                                List of databases
      Name       |  Owner   | Encoding | Collate |  Ctype  | ICU Locale | Locale Provider |   Access privileges   
-----------------+----------+----------+---------+---------+------------+-----------------+-----------------------
 postgres        | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | 
 postgres_looker | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | 
 template0       | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | =c/postgres          +
                 |          |          |         |         |            |                 | postgres=CTc/postgres
 template1       | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | =c/postgres          +
                 |          |          |         |         |            |                 | postgres=CTc/postgres
(4 rows)

postgres=# create user postgres_looker with password 'postgreslooker';
CREATE ROLE
postgres=# \c postgres_looker;
You are now connected to database "postgres_looker" as user "postgres".
postgres_looker=# create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q

14. Integrar o Looker ao banco de dados postgres do Postgres

Na próxima seção, você vai usar o Looker Console para criar uma conexão de banco de dados com a instância do banco de dados postgres local.

Navegue até ADMIN → DATABASE → CONNECTIONS → Selecione ADD CONNECTION.

Preencha os detalhes da conexão conforme a captura de tela abaixo e selecione CONECTAR.

5900fdf0b698cbfc.png

A conexão está configurada

4817157fd3b1277e.png

15. Validar a conectividade do Looker

Na seção a seguir, você vai aprender a validar a conectividade do Looker com o banco de dados postgres na on-prem-vpc usando a ação "test" do Looker e o TCPDUMP.

No Cloud Shell, faça login no banco de dados postgres se a sessão tiver expirado.

No Cloud Shell, faça o seguinte:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

No SO, crie um filtro TCPDUMP com a sub-rede somente proxy 10.10.10.0/24.

sudo tcpdump -i any net 10.10.10.0/24 -nn

Navegue até a conexão de dados ADMIN → DATABASE → CONNECTIONS → postgres-database → Test

Depois que o teste é selecionado, o Looker se conecta ao banco de dados postgres, conforme indicado abaixo:

774f9313ece41034.png

Limpar

Excluir componentes do laboratório em um único terminal do Cloud Shell

gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-hybrid-neg-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 on-prem-nat --router=on-prem-cr --router-region=$region -q

gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q

gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q

gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q

gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q

gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q

gcloud compute instances delete postgres-database --zone=$zone -q

gcloud compute addresses delete on-prem-database1-ip --region=$region -q

gcloud compute networks subnets delete database-subnet --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy  --name=on-prem-demo --global-firewall-policy -q

gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks delete on-prem-demo -q

gcloud compute networks delete looker-psc-demo -q

16. Parabéns

Parabéns, você configurou e validou a conectividade ao banco de dados local pela HA-VPN usando o Looker Console com o Private Service Connect.

Você criou a infraestrutura do produtor e aprendeu a criar um NEG híbrido, um endpoint do PSC do serviço do produtor e um endpoint do PSC do Looker que permitissem a conectividade ao serviço do produtor.

Cosmopup acha que os codelabs são incríveis.

c911c127bffdee57.jpeg

Qual é a próxima etapa?

Confira alguns destes codelabs:

Leituras e vídeos complementares

Documentos de referência