Conecte o Looker Cloud usando uma rede híbrida

1. Introdução

O Looker (Google Cloud Core) oferece provisionamento, configuração e gerenciamento simplificados e otimizados para uma instância do Looker no console do Google Cloud. Algumas tarefas de administração de instâncias também podem ser realizadas no console.

Há três configurações de rede disponíveis para instâncias do Looker (Google Cloud Core):

  • Público: a conexão de rede usa um endereço IP externo acessível pela Internet.
  • Privada: a conexão de rede usa um endereço IP de nuvem privada virtual (VPC) interno hospedado pelo Google.
  • Público e privado: a conexão de rede usa um endereço IP público e um endereço IP privado, no qual o tráfego de entrada será roteado por IP público e o tráfego de saída por IP privado.

Neste tutorial, você vai implantar uma rede privada completa para oferecer suporte à conectividade do Looker a uma VPC no local por meio de VPN HA que pode ser replicada para atender aos seus requisitos de conectividade multicloud e no local.

O Looker (Google Cloud Core) oferece suporte a IP privado para instâncias que atendem aos seguintes critérios:

O que você vai criar

Neste tutorial, você vai criar uma implantação abrangente de rede privada do Looker em uma VPC independente com conectividade híbrida para várias nuvens e no local.

Você vai configurar uma rede VPC chamada on-prem-vpc para representar um ambiente local. Para sua implantação, a VPC local não existiria. Em vez disso, seria usada uma rede híbrida para o data center local ou o provedor de nuvem.

Confira abaixo as principais etapas do tutorial.

  1. Criar uma VPC independente em us-central1
  2. Alocar uma sub-rede IP para o acesso a serviços privados
  3. Implantar a instância do Looker na VPC independente
  4. Criar a VPC local e a rede híbrida
  5. Divulgar e validar o intervalo de IP do Looker no BGP
  6. Integrar e validar a comunicação de dados do Looker e do Postgresql

Figura 1

8436cc4802b670db.png

O que você vai aprender

  • Como criar uma VPC e uma rede híbrida associada
  • Como implantar o Looker em uma VPC independente
  • Como criar uma on-prem-vpc e uma rede híbrida associada
  • Conectar o on-prem-vpc aos VPs de análise pela VPN de alta disponibilidade
  • Como anunciar sub-redes do Looker em redes híbridas
  • Como monitorar a infraestrutura de rede híbrida
  • Como integrar um banco de dados Postgresql com o Looker Cloud Core

O que é necessário

  • Projeto do Google Cloud

Permissões do IAM

2. Antes de começar

Atualizar o projeto para ser compatível com o tutorial

Este tutorial usa $variables para ajudar na implementação da configuração do gcloud no Cloud Shell.

No Cloud Shell, faça o seguinte:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

3. Configuração da VPC

Criar a analytics-vpc

No Cloud Shell, faça o seguinte:

gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom

Criar a on-prem-vpc

No Cloud Shell, faça o seguinte:

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

Crie a sub-rede do banco de dados do Postgresql

No Cloud Shell, faça o seguinte:

gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1

Cloud Router e configuração NAT

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

No Cloud Shell, crie o Cloud Router.

gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1

No Cloud Shell, crie o gateway NAT.

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

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=$projectid \
    --zone=us-central1-a \
    --machine-type=e2-medium \
    --subnet=database-subnet-us-central1 \
    --no-address \
   --image=projects/ubuntu-os-cloud/global/images/ubuntu-2304-lunar-amd64-v20230621 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

Criar regras de firewall

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

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

No Cloud Shell

gcloud compute firewall-rules create on-prem-ssh \
    --network on-prem-vpc --allow tcp:22 --source-ranges=35.235.240.0/20

4. Acesso a serviços particulares

O acesso a serviços particulares é uma conexão privada entre sua rede VPC e uma rede de propriedade do Google ou de terceiros. O Google ou o terceiro, entidades que fornecem serviços, também são conhecidos como produtores de serviços. O Looker Cloud Core é um produtor de serviços.

A conexão particular permite que as instâncias de VM na sua rede VPC e os serviços que você acessa se comuniquem exclusivamente por endereços IP internos.

De modo geral, para usar o acesso a serviços particulares, é preciso alocar um intervalo de endereços IP (bloco CIDR) na sua rede VPC e depois criar uma conexão particular com um produtor de serviços.

Alocar intervalo de endereços IP para serviços

Antes de criar uma conexão particular, é preciso alocar um intervalo de endereços IPv4 que será usado pela rede VPC do fornecedor de serviços. Isso garante que não haja colisão de endereços IP entre sua rede VPC e a rede do produtor de serviços.

Quando você aloca um intervalo na sua rede VPC, ele não se qualifica para sub-redes (intervalos primários e secundários) e destinos de rotas estáticas personalizadas.

Não é possível usar intervalos de endereços IPv6 com acesso a serviços particulares.

Ative a API Service Networking para seu projeto no console do Google Cloud. Ao ativar a API, talvez seja necessário atualizar a página do console para confirmar que ela foi ativada.

Criar uma alocação de IP

Para especificar um intervalo de endereços e um tamanho de prefixo (máscara de sub-rede), use os endereços e os sinalizadores de comprimento de prefixo. Por exemplo, para alocar o bloco CIDR 192.168.0.0/22, especifique 192.168.0.0 como endereço e 22 como comprimento.

No Cloud Shell, crie a alocação de IP para o Looker.

gcloud compute addresses create psa-range-looker \
    --global \
    --purpose=VPC_PEERING \
    --addresses=192.168.0.0 \
    --prefix-length=22 \
    --description="psa range for looker" \
    --network=analytics-vpc

No Cloud Shell, valide a alocação de IP.

gcloud compute addresses list --global --filter="purpose=VPC_PEERING"

Exemplo:

userl@cloudshell$ gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
NAME: psa-range-looker
ADDRESS/RANGE: 192.168.0.0/22
TYPE: INTERNAL
PURPOSE: VPC_PEERING
NETWORK: analytics-vpc
REGION: 
SUBNET: 
STATUS: RESERVED

Criar uma conexão particular

Depois de criar um intervalo alocado, crie uma conexão particular com um produtor de serviços, o Looker Cloud Core. A conexão particular estabelece uma conexão de peering de rede VPC entre sua rede VPC e a rede do produtor de serviços assim que a instância do Looker é estabelecida.

As conexões particulares são um relacionamento um para um entre a rede VPC e o produtor de serviços. Se um único produtor de serviços oferecer vários serviços, você precisará apenas de uma conexão particular para todos eles.

Se você se conectar a vários produtores de serviços, use uma alocação exclusiva para cada um deles. Essa prática ajuda a gerenciar suas configurações de rede, como regras de firewall e rotas, para cada produtor de serviço.

No Cloud Shell, crie uma conexão particular e anote o nome da operação.

gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range-looker \
    --network=analytics-vpc

Exemplo:

user@cloudshell$ gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range-looker \
    --network=analytics-vpc
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.

No Cloud Shell, verifique se a operação foi bem-sucedida e substitua OPERATION_NAME pelo nome gerado na etapa anterior.

gcloud services vpc-peerings operations describe \
    --name=OPERATION_NAME

Exemplo:

user@cloudshell$ gcloud services vpc-peerings operations describe \
    --name=operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.

5. Criar uma instância do Looker (Google Cloud Core)

Antes de começar

Ative a API Looker para seu projeto no console do Google Cloud. Ao ativar a API, talvez seja necessário atualizar a página do console para confirmar que ela foi ativada.

Configure um cliente OAuth para autenticar e acessar a instância.

Na próxima seção, você vai precisar usar o ID e a chave secreta do cliente OAuth para criar a instância do Looker.

Os URIs de JavaScript de origem e redirecionamento autorizados não são obrigatórios.

103601bca0b6ebe8.png

No Console do Cloud, crie uma instância com base nas capturas de tela fornecidas.

Acesse LOOKER → CRIAR UMA INSTÂNCIA.

Preencha o ID e a chave secreta do cliente OAuth criados anteriormente.

b780ed751824176c.png

3fe880e26a81a756.png

91acffd74c68a067.png

Selecione CRIAR.

Enquanto a instância está sendo criada, você será redirecionado para a página Instâncias no console. Talvez seja necessário atualizar a página para conferir o status da nova instância. Também é possível conferir a atividade de criação de instâncias clicando no ícone de notificações no menu do console do Google Cloud. Enquanto a instância é criada, o ícone de notificações no menu do console do Google Cloud é circulado por um ícone de carregamento.

Depois que a instância do Looker é criada, um URL de instância é gerado. Anote o URL.

5ac8a1b8b438dce6.png

6. Atualizar o ID do cliente OAuth 2.0

Na seção a seguir, você precisará atualizar o URI de redirecionamento autorizado do ID do cliente OAuth criado anteriormente, anexando /oauth2callback ao URL da instância.

Depois disso, use o URL da instância para fazer login na interface do Looker.

No console do Cloud, acesse APIs e SERVIÇOS → CREDENCIAIS

Selecione seu ID do cliente OAuth 2.0 e atualize o URL da instância, como no exemplo abaixo:

793c5b82ec34fb1f.png

7. Validar o acesso ao Looker

No Cloud Console, navegue até o Looker e selecione o URL da instância que vai abrir a interface do Looker.

9d132a67c532279e.png

Depois de iniciar, você vai encontrar a página de destino conforme a captura de tela abaixo, confirmando seu acesso ao Looker Cloud Core.

b77055fd674f8a69.png

8. Conectividade híbrida

Na seção a seguir, 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 intervalos de endereços IP de novas sub-redes e os divulga na rede de peering.

No tutorial, você vai implantar a VPN de alta disponibilidade entre analytics-vpc e on-prem-vpc para ilustrar a conectividade particular com o Looker.

Crie a GW de VPN de alta disponibilidade para analytics-vpc

Quando cada gateway é criado, dois endereços IPv4 externos são alocados automaticamente, um para cada interface de gateway. Anote esses endereços IP para usar mais tarde nas etapas de configuração.

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

gcloud compute vpn-gateways create analytics-vpn-gw \
   --network=analytics-vpc\
   --region=us-central1

Crie o GW de VPN de alta disponibilidade para a on-prem-vpc.

Quando cada gateway é criado, dois endereços IPv4 externos são alocados automaticamente, um para cada interface de gateway. Anote esses endereços IP para usar mais tarde nas etapas de configuração.

No Cloud Shell, crie a GW de VPN de alta disponibilidade.

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-vpc\
   --region=us-central1

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

No console, acesse CONECTIVIDADE HÍBRIDA → VPN → CLOUD VPN GATEWAYS.

a3973b2bbb832bae.png

Crie o Cloud Router para a analytics-vpc

No Cloud Shell, crie o Cloud Router localizado em us-central1

gcloud compute routers create analytics-cr-us-central1 \
   --region=us-central1 \
   --network=analytics-vpc\
   --asn=65001

Crie o Cloud Router para a on-prem-vpc

No Cloud Shell, crie o Cloud Router localizado em us-central1

gcloud compute routers create on-prem-cr-us-central1 \
   --region=us-central1 \
   --network=on-prem-vpc \
   --asn=65002

Criar os túneis VPN para a analytics-vpc

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

Criar túnel VPN0

No Cloud Shell, crie tunnel0:

gcloud compute vpn-tunnels create analytics-vpc-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router analytics-cr-us-central1 \
    --vpn-gateway analytics-vpn-gw \
    --interface 0

Criar túnel VPN 1

No Cloud Shell, crie o tunnel1:

gcloud compute vpn-tunnels create analytics-vpc-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router analytics-cr-us-central1 \
    --vpn-gateway analytics-vpn-gw \
    --interface 1

Criar os túneis VPN para on-prem-vpc

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

Criar túnel VPN0

No Cloud Shell, crie tunnel0:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway analytics-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 0

Criar túnel VPN 1

No Cloud Shell, crie tunnel1:

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway analytics-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

Validar a criação do túnel VPN

No console, acesse "CONECTIVIDADE HÍBRIDA → VPN → TÚneles do Cloud VPN".

61c09b3d3102149d.png

9. Estabelecer vizinhos do BGP

Criar sessões do BGP

Nesta seção, você configura as interfaces do Cloud Router e os pares do BGP.

Criar uma interface do BGP e peering para analytics-vpc

No Cloud Shell, crie a interface do BGP:

gcloud compute routers add-interface analytics-cr-us-central1 \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel analytics-vpc-tunnel0 \
    --region us-central1

No Cloud Shell, crie o peer do BGP:

gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region us-central1

No Cloud Shell, crie a interface do BGP:

gcloud compute routers add-interface analytics-cr-us-central1 \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel analytics-vpc-tunnel1 \
    --region us-central1

No Cloud Shell, crie o peer do BGP:

gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region us-central1

Criar uma interface do BGP e peering para on-prem-vpc

No Cloud Shell, crie a interface do BGP:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel0-to-analytics-vpc \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region us-central1

No Cloud Shell, crie o peer do BGP:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-analytics-vpc-tunnel0 \
    --interface if-tunnel1-to-analytics-vpc \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region us-central1

No Cloud Shell, crie a interface do BGP:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel1-to-analytics-vpc \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region us-central1

No Cloud Shell, crie o peer do BGP:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-analytics-vpc-tunnel1\
    --interface if-tunnel2-to-analytics-vpc \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region us-central1

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

ddd4a8f851d44fd6.png

Validar as rotas aprendidas da analytics-vpc pela VPN de alta disponibilidade

Como os túneis de VPN de alta disponibilidade e as sessões do BGP foram estabelecidas, as rotas da VPC no local são aprendidas da VPC de análise. No console, acesse Rede VPC → Redes VPC → analytics-vpc → ROUTES → REGIÃO → us-central1 → VISUALIZAÇÃO

Observe que a analytics-vpc aprendeu rotas de on-prem-vpc database-subnet-us-central1 172.16.10.0/27

57c7898390db4bcb.png

Validar se a VPC no local não aprendeu rotas pela VPN de alta disponibilidade

A analytics-vpc não tem uma sub-rede, portanto, o Cloud Router não divulgará nenhuma sub-rede para a on-prem-vpc . No console, acesse Rede VPC → Redes VPC → on-prem-vpc → ROUTES → REGIÃO → us-central1 → VISUALIZAÇÃO

5b007e46a7c7026.png

10. Anunciar a sub-rede do Looker para a nuvem on-prem

A sub-rede de acesso a serviços particulares (PSA, na sigla em inglês) do Looker não é anunciada automaticamente pelo Cloud Router analytics-cr-us-central1 porque a sub-rede é atribuída ao PSA, não à VPC.

Você precisa criar uma divulgação de rota personalizada do analytics-cr-central1 para a sub-rede PSA 192.168.0.0/22 (psa-range-looker) que será anunciada no ambiente local e usada por workloads para acessar o Looker.

No console, acesse CONEXÃO HÍBRIDA → ROUTERS DA NUVEM → analytics-cr-us-central1 e selecione EDITAR.

Na seção "Rotas anunciadas", selecione a opção Criar rotas personalizadas, atualize os campos com base no exemplo abaixo, selecione CONCLUÍDO e clique em SALVAR.

87f95ee3d1cd8521.png

11. Confira se o on-prem-vpc aprendeu a sub-rede do Looker

Agora, a on-prem-vpc poderá acessar a sub-rede PSA do Looker, já que ela foi anunciada em analytics-cr-us-central1 como uma divulgação de rota personalizada.

No console, acesse REDE VPC → REDES VPC → on-prem-vpc → ROUTES → REGIÃO → us-central1 → VISUALIZAÇÃO

Observe as rotas do Looker anunciadas pelo analytics-vpc:

a987a76fd57ddedd.png

12. Validar o peering de VPC atual

A conexão entre o Looker Cloud Core e o analytics-vpc é feita pelo peering de VPC, que permite a troca de rotas personalizadas aprendidas pelo BGP. No tutorial, a analytics-vpc precisa publicar as rotas aprendidas pela on-prem-vpc no Looker. Para ativar essa funcionalidade, o peering de VPC exige uma atualização para exportar rotas personalizadas.

Valide as rotas importadas e exportadas atuais.

Navegue até REDE VPC → PEERING DE REDE VPC → servicenetworking-googleapis-com.

f6d9395712934cd8.png

A captura de tela abaixo detalha a analytics-vpc importando o psa-range-looker da rede VPC com peering gerenciada pelo Google, servicesnetworking.

86a0e8c3534c6986.png

Selecione ROTAS EXPORTADAS que não têm rotas exportadas para a rede VPC com peering porque 1) as sub-redes não estão configuradas na analytics-vpc 2) Exportar rotas personalizadas não está selecionada

a52de427fa73fb22.png

13. Atualizar peering de VPC

Acesse Rede VPC → VPC NETWORK PEERING → servicenetworking-googleapis-com → EDITAR

Selecione EXPORTAR ROTAS PERSONALIZADAS → SALVAR

a2309e4c3a7cee80.png

14. Validar o peering de VPC atualizado

Valide as rotas exportadas.

Acesse REDE VPC → EXIBIÇÃO DE REDE VPC → servicenetworking-googleapis-com

A opção "ROTAS EXPORTADAS" revela que as rotas on-prem-vpc (sub-rede do banco de dados 172.16.10.0/27) são exportadas para a rede VPC com peering que hospeda o Looker pela analytics-vpc.

47e953268d78a469.png

15. Criação do banco de dados do Looker Postgres

Na próxima seção, você vai executar 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 "us-central1-a" "postgres-database" --project "$projectid"

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

ip a

Exemplo:

user@postgres-database:~$ ip a
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 
       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:ac:10:0a:02 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 172.16.10.2/32 metric 100 scope global dynamic ens4
       valid_lft 84592sec preferred_lft 84592sec
    inet6 fe80::4001:acff:fe10:a02/64 scope link 
       valid_lft forever preferred_lft forever

No SO, faça login no postgresql.

sudo -u postgres psql postgres

No SO, digite o prompt 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: 

Dentro do SO, saia do postgres.

\q

Exemplo:

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

Na seção a seguir, você vai inserir o endereço IP da instância do banco de dados do PostgreSQL e a sub-rede do Acesso privado do Google do Looker (192.168.0.0/22) no arquivo pg_hba.conf nas conexões locais do IPv4, conforme a captura de tela abaixo:

178364a8ee9b6233.png

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

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:

aad52092c0a9408.png

Depois:

7e80b916d29e097c.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 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 Sat 2023-07-01 23:40:59 UTC; 7s ago
    Process: 4073 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 4073 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Jul 01 23:40:59 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Jul 01 23:40:59 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

16. Criar o banco de dados do Postgres

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

No SO, faça login em postgres.

sudo -u postgres psql postgres

No SO, crie o banco de dados.

create database postgres_looker;

Dentro do SO, liste o banco de dados.

\l

Dentro do SO, crie o Looker de usuários com o Looker Looker

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

Exemplo:

user@postgres-database$ sudo -u postgres psql postgres
psql (15.3 (Ubuntu 15.3-0ubuntu0.23.04.1))
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 SCHEMA
postgres_looker=# create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
CREATE TABLE
postgres_looker=# exit

Saia do SO e volte ao Cloud Shell.

\q
exit

17. Criar um firewall na VPC no local

Na seção a seguir, crie um firewall de entrada com registro que permita a comunicação da sub-rede do Looker com a instância do banco de dados postgres.

No Cloud Shell, crie o firewall on-prem-vpc.

gcloud compute --project=$projectid firewall-rules create looker-access-to-postgres --direction=INGRESS --priority=1000 --network=on-prem-vpc --action=ALLOW --rules=all --source-ranges=192.168.0.0/22 --enable-logging

18. Criar DNS particular na analytics-vpc

Embora o Looker seja implantado em uma VPC gerenciada pelo Google, o acesso ao DNS particular analytics-vpc é compatível com o peering com a rede de serviços.

Na seção a seguir, você vai criar uma zona de DNS particular na analytics-vpc, que consiste em um registro A do nome de domínio totalmente qualificado da instância do postgres-database (postgres.analytics.com) e endereço IP).

No Cloud Shell, crie a zona particular analytics.com.

gcloud dns --project=$projectid managed-zones create gcp-private-zone --description="" --dns-name="analytics.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/analytics-vpc"

No Cloud Shell, identifique o endereço IP da instância do banco de dados postgres.

gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:

Exemplo:

user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
  networkIP: 172.16.10.2

No Cloud Shell, crie o registro A e adicione o endereço IP identificado anteriormente.

gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"

Exemplo:

user@cloudshell$ gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="172.16.10.2"
NAME: postgres.analytics.com.
TYPE: A
TTL: 300
DATA: 172.16.10.2

No Cloud Shell, faça peering de dns-suffix analytics.com com a rede de serviços, permitindo que o Looker acesse a zona particular analytics-vpc.

gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.

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

Na seção a seguir, você vai usar o Console do Cloud para criar uma conexão de banco de dados com a instância local do postgres-database.

No console do Cloud, acesse o Looker e selecione o URL da instância que vai abrir a interface do Looker.

9d132a67c532279e.png

Depois do lançamento, você vai ver a página de destino, de acordo com a captura de tela abaixo.

b77055fd674f8a69.png

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

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

c8cca15252c2020d.png

A conexão foi estabelecida

3e51b7e2cc62fb45.png

20. Validar a conectividade do Looker

Na seção a seguir, você vai aprender a validar a conectividade do Looker com o postgres-database 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-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"

No SO, crie um filtro TCPDUMP com a sub-rede psa-range-looker 192.168.0.0/22

sudo tcpdump -i any net 192.168.0.0/22 -nn

Navegue até a conexão de dados ADMIN → DATABASE → CONNECTIONS → Select → Test

Depois que o teste for selecionado, o Looker se conectará ao banco de dados postgres, conforme indicado abaixo:

ef25b837b6a41fe.png

Navegue de volta ao terminal do SO e valide se o TCPDUMP identificou que o psc-range-looker está se conectando à instância do banco de dados postgres local.

Adicione uma observação de que qualquer IP do intervalo de PSA vai ser mostrado do Looker.

user@postgres-database$ sudo tcpdump -i any net 192.168.0.0/22 -nn
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
00:16:55.121631 ens4  In  IP 192.168.1.24.46892 > 172.16.10.2.5432: Flags [S], seq 2221858189, win 42600, options [mss 1366,sackOK,TS val 4045928414 ecr 0,nop,wscale 7], length 0
00:16:55.121683 ens4  Out IP 172.16.10.2.5432 > 192.168.1.24.46892: Flags [S.], seq 1464964586, ack 2221858190, win 64768, options [mss 1420,sackOK,TS val 368503074 ecr 4045928414,nop,wscale 7], length 0

21. Recomendações de segurança

Existem algumas recomendações e práticas recomendadas de segurança relacionadas à proteção do banco de dados do Looker e do Postgres. incluindo:

  • Configurar as permissões da conta de banco de dados com menos privilégios para o Looker, o que ainda permite que ele execute as funções necessárias.
  • Os dados em trânsito entre a interface do cliente e do Looker e o Looker para o banco de dados são criptografados usando TLS 1.2 ou mais recente.
  • Os dados em repouso são criptografados por padrão. O cliente também pode usar a CMEK para instâncias do Looker ( https://cloud.google.com/looker/docs/looker-core-cmek) e para Postgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek)
  • Controle de acesso do Looker: os administradores do Looker podem controlar o que um princípio ou grupo de usuários pode ver e fazer no Looker concedendo acesso a conteúdo, dados e recursos. Essas opções permitem que o administrador do Looker defina funções específicas que incluem o modelo e o conjunto de permissões e criam um controle de acesso detalhado aos dados.
  • O Looker oferece suporte a registros de auditoria e de acesso a dados, que capturam quem fez o quê, quando e onde. Os registros de auditoria são ativados por padrão, enquanto os registros de acesso aos dados precisam ser ativados explicitamente.
  • No momento, o VPC-SC é compatível com instâncias corporativas e incorporadas que são configuradas apenas com IP privado.

22. Limpar

Exclua a instância do Looker Cloud Core. Acesse:

LOOKER → looker-tutorial → EXCLUIR

e5a2e3af9e7ffd40.png

Exclua os componentes do tutorial no Cloud Shell.

gcloud compute vpn-tunnels delete analytics-vpc-tunnel0 analytics-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet

gcloud compute vpn-gateways delete analytics-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet

gcloud compute routers delete analytics-cr-us-central1 on-prem-cr-us-central1 on-prem-cr-us-central1-nat --region=us-central1 --quiet

gcloud compute instances delete postgres-database --zone=us-central1-a --quiet

gcloud compute networks subnets delete database-subnet-us-central1 --region=us-central1 --quiet

gcloud compute firewall-rules delete looker-access-to-postgres on-prem-ssh --quiet

gcloud dns record-sets delete postgres.analytics.com. --type=A --zone=gcp-private-zone
        
gcloud dns managed-zones delete gcp-private-zone

gcloud compute networks delete on-prem-vpc --quiet

gcloud compute addresses delete psa-range-looker --global --quiet

gcloud compute networks delete analytics-vpc --quiet

23. Parabéns

Parabéns! Você configurou e validou com sucesso a conectividade do Looker em redes híbridas, permitindo a comunicação de dados em ambientes locais e de várias nuvens.

Você também testou a conectividade do Looker Cloud Core com o banco de dados postgres usando a ferramenta "Test" do Lookers Connect e o TCPDUMP na instância do banco de dados postgres.

Cosmopup acha que os tutoriais são incríveis!

e6d3675ca7c6911f.jpeg

Outras leituras e vídeos

Documentos de referência