Conecte o Looker Cloud usando uma rede híbrida

1. Introdução

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

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

  • Pública: 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 interno da nuvem privada virtual (VPC) hospedada 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.

No tutorial, você vai implantar uma rede privada abrangente de ponta a ponta para oferecer suporte à conectividade do Looker em uma VPN de alta disponibilidade on-prem-vpc, que pode ser replicada para atender aos seus requisitos de conectividade em várias nuvens 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ê configurará uma rede VPC chamada on-prem-vpc para representar um ambiente local. Para sua implantação, a on-prem-vpc não existiria. Em vez disso, a rede híbrida para seu data center local ou provedor de nuvem seria usada.

Confira abaixo as principais etapas do tutorial

  1. Crie uma VPC autônoma em us-central1
  2. Alocar uma sub-rede IP para o Acesso privado a serviços
  3. Implantar a instância do Looker na VPC independente
  4. Criar a rede híbrida e on-prem-vpc
  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

Figure1

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 on-prem-vpc com analytics-vps 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 ao 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

Neste tutorial, usamos as variáveis $variables para ajudar na implementação da configuração da 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 o analytics-vpc

No Cloud Shell, faça o seguinte:

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

Crie 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

Configuração do Cloud Router e do 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

Criar 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 a ser usado pela rede VPC do produtor 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, pode ser 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.

Conexões particulares são um relacionamento um para um entre sua rede VPC e um 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 as configurações de rede, como rotas e regras de firewall, para cada produtor de serviços.

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, pode ser 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 seção a seguir, você precisará usar o ID do cliente OAuth e o secret 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.

Quando a instância estiver sendo criada, a página Instâncias será aberta 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 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 receber a página de destino de acordo com 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 sua nuvem privada virtual (VPC) e sua 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 a GW de VPN de alta disponibilidade

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

Crie a GW de VPN de alta disponibilidade para 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 o 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 de VPN para analytics-vpc

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

Criar túnel VPN 0

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 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

Crie os túneis de VPN para on-prem-vpc

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

Criar túnel VPN 0

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, navegue até 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

Acesse CONECTIVIDADE Híbrida → VPN para ver os detalhes do túnel VPN.

ddd4a8f851d44fd6.png

Validar rotas aprendidas analytics-vpc na VPN de alta disponibilidade

Como os túneis de VPN de alta disponibilidade e as sessões do BGP são estabelecidos, as rotas de on-prem-vpc são aprendidas da analytics-vpc. 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

Confira se on-prem-vpc 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 no local

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

Você precisa criar uma divulgação de rota personalizada em analytics-cr-central1 para a sub-rede PSA 192.168.0.0/22 (psa-range-looker) que será divulgada no ambiente local e usada pelas cargas de trabalho 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 na analytics-vpc:

a987a76fd57ddedd.png

12. Validar o peering de VPC atual

A conexão entre o Looker Cloud Core e a analytics-vpc é feita pelo peering de VPC, que permite a troca de rotas personalizadas aprendidas pelo BGP. No tutorial, a analytics-vpc vai precisar publicar as rotas aprendidas por 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.

Acesse REDE VPC → EXIBIÇÃO 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 → EXIBIÇÃO DE REDE VPC → 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, execute ssh na instância postgres-database**.**

 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 em 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 próxima seção, você vai inserir o endereço IP da instância postgres-database 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 IPv4, conforme a captura de tela abaixo:

178364a8ee9b6233.png

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

Na seção a seguir, remova a marca de 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 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 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 do Looker do esquema 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 no on-prem-vpc

Na seção a seguir, crie um firewall de entrada com geração de registros 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 no 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 DNS particular na analytics-vpc, que consiste em um registro A do nome de domínio totalmente qualificado da instância 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 postgres-database.

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 o peering de dns-suffix analytics.com. à rede de serviços, permitindo assim o acesso do Looker à 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 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

Acesse ADMINISTRADOR → BANCO DE DADOS → CONEXÕES → selecione ADICIONAR CONEXÃO

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 próxima seção, você vai aprender a validar a conectividade do Looker com o postgres-database no on-prem-vpc usando o "test" do Looker e TCPDUMP.

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

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é Conexão de dados ADMIN → BANCO DE DADOS → CONEXÕES → Selecionar → Teste

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

ef25b837b6a41fe.png

Volte ao terminal do SO e confirme se o TCPDUMP identificou que o psc-range-looker está se conectando à instância local do postgres-database.

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 podem controlar o que um princípio ou grupo de usuários pode ver e fazer no Looker concedendo acesso ao conteúdo e aos dados e aos recursos. Com essas opções, o administrador do Looker pode definir papéis específicos, como o conjunto de permissões e modelos, e criar um controle de acesso refinado 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 o "Teste" do Looker Connect e TCPDUMP na instância do banco de dados postgres.

Cosmopup acha os tutoriais incríveis!!

e6d3675ca7c6911f.jpeg

Leia mais e Vídeos

Documentos de referência