1. Introdução
O Looker (Google Cloud Core) oferece provisionamento, configuração e gerenciamento simplificados de 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ú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) hospedado pelo Google.
- Pública e particular: a conexão de rede usa um endereço IP público e um endereço IP particular. O tráfego de entrada é roteado pelo IP público, e o tráfego de saída é roteado pelo IP particular.
No tutorial, você vai implantar uma rede particular abrangente de ponta a ponta para oferecer suporte à conectividade do Looker com uma VPC local por uma VPN de alta disponibilidade que pode ser replicada para atender aos seus requisitos de conectividade multicloud e local.
O Looker (Google Cloud Core) oferece suporte a IP particular para instâncias que atendem aos seguintes critérios:
- As edições de instância precisam ser Enterprise ou Embed.
O que você vai criar
Neste tutorial, você vai criar uma implantação de rede abrangente e 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. Na sua implantação, a on-prem-vpc não existiria. Em vez disso, seria usada uma rede híbrida para seu data center no local ou provedor de nuvem.
Confira abaixo as principais etapas do tutorial
- Criar uma VPC independente em us-central1
- Alocar uma sub-rede IP para o acesso a serviços particulares
- Implantar a instância do Looker na VPC independente
- Criar a rede no local-vpc e híbrida
- Anunciar e validar o intervalo de IP do Looker pelo BGP
- Integrar e validar a comunicação de dados do Looker e do PostgreSQL
Figure1

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 VPC no local e uma rede híbrida associada
- Conecte a vpc no local com a 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 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 oferecer suporte ao 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
Crie a analytics-vpc
No Cloud Shell, faça o seguinte:
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
Criar a VPC no local
No Cloud Shell, faça o seguinte:
gcloud compute networks create on-prem-vpc --project=$projectid --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-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 para instalação de pacotes 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 postgres-database 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 suas instâncias de VM, crie uma regra de firewall que:
- Aplica-se a todas as instâncias de VM que você quer acessar 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
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 oferecem 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 usando endereços IP internos.
Em geral, para usar o acesso a serviços particulares, você precisa 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 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 deixa de ser aceito 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 no 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 sinalizadores "addresses" e "prefix-length". Por exemplo, para alocar o bloco CIDR 192.168.0.0/22, especifique 192.168.0.0 como endereço e 22 como tamanho de prefixo.
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ço, 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 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.
Caso você se conecte a vários produtores de serviço, use uma alocação exclusiva para cada. 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. 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 seção a seguir, você precisará usar o ID do cliente OAuth e a chave secreta para criar a instância do Looker.
Não é necessário ter origens JavaScript autorizadas e URIs de redirecionamento.

No Console do Cloud, crie uma instância com base nas capturas de tela fornecidas.
Acesse LOOKER → CRIAR UMA INSTÂNCIA.
Preencha o ID do cliente e a chave secreta do OAuth criados anteriormente.



Selecione CRIAR.
Enquanto a instância é 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. Para conferir a atividade de criação de instâncias, clique no ícone de notificações no menu do console do Google Cloud. Enquanto a instância está sendo criada, o ícone de notificações no menu do console do Google Cloud fica circulado por um ícone de carregamento.
Depois que a instância do Looker é criada, um URL da instância é gerado. Anote o URL.

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:

7. Validar o acesso ao Looker
No console do Cloud, navegue até o Looker e selecione o URL da instância para abrir a interface do Looker.

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

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 a rede de peering usando o Border Gateway Protocol (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.
No tutorial, você vai implantar a VPN de alta disponibilidade entre as VPCs analytics-vpc e on-prem-vpc para ilustrar a conectividade particular com o Looker.
Crie o gateway de VPN de alta disponibilidade para a 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 gateway de VPN de alta disponibilidade.
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
Crie o gateway 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 o gateway 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 do gateway de VPN de alta disponibilidade
No console, navegue até CONECTIVIDADE HÍBRIDA → VPN → GATEWAYS DO CLOUD VPN.

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 VPC no local
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
Crie os túneis VPN para 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 o 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 VPN tunnel1
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
Crie os túneis VPN para a VPC 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 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 VPN tunnel1
No Cloud Shell, crie o 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ÚNEIS DO CLOUD VPN.

9. Estabelecer vizinhos do BGP
Criar sessões do BGP
Nesta seção, você configura as interfaces do Cloud Router e os peerings do BGP.
Criar uma interface e um peering do BGP 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 peering 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 peering 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 e um peering do BGP para VPC no local
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 peering 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 peering 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.

Validar as rotas aprendidas da analytics-vpc pela VPN de alta disponibilidade
Como os túneis VPN de alta disponibilidade e as sessões do BGP estão estabelecidos, as rotas da VPC no local são aprendidas com a VPC de análise. No console, acesse Rede VPC → Redes VPC → analytics-vpc → ROTAS → REGIÃO → us-central1 → VISUALIZAR
Observe que a analytics-vpc aprendeu rotas da on-prem-vpc database-subnet-us-central1 172.16.10.0/27

Validar 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 vai anunciar nenhuma sub-rede para a on-prem-vpc. No console, acesse rede VPC → Redes VPC → on-prem-vpc → ROTAS → REGIÃO → us-central1 → VER

10. Anunciar a sub-rede do Looker no local
A sub-rede do Private Service Access (PSA) do Looker não é divulgada automaticamente pelo Cloud Router analytics-cr-us-central1 porque ela é atribuída ao PSA, não à VPC.
Você precisará criar um anúncio de rota personalizado do analytics-cr-central1 para a sub-rede do PSA 192.168.0.0/22 (psa-range-looker) que será anunciado no ambiente local e usado pelas cargas de trabalho para acessar o Looker.
No console, navegue até CONECTIVIDADE HÍBRIDA → CLOUD ROUTERS → analytics-cr-us-central1 e selecione EDITAR.
Na seção "Rotas divulgadas", selecione a opção Criar rotas personalizadas, atualize os campos com base no exemplo abaixo, selecione CONCLUÍDO e clique em SALVAR.

11. Valide se a VPC no local aprendeu a sub-rede do Looker
Agora, a VPC no local poderá acessar a sub-rede de PSA do Looker, já que ela foi anunciada de analytics-cr-us-central1 como um anúncio de rota personalizado.
No console, acesse REDE VPC → REDES VPC → on-prem-vpc → ROTAS → REGIÃO → us-central1 → VER
Observe as rotas do Looker anunciadas da analytics-vpc:

12. Validar o peering de VPC atual
A conexão entre o Looker Cloud Core e a analytics-vpc é feita por peering de VPC, que permite a troca de rotas personalizadas aprendidas via 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 precisa de uma atualização para exportar rotas personalizadas.
Valide as rotas importadas e exportadas atuais.
Acesse REDE VPC → PEERING DE REDE VPC → servicenetworking-googleapis-com

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

Selecionar "ROTAS EXPORTADAS" não revela rotas exportadas para a rede VPC de peering porque 1) as sub-redes não estão configuradas na analytics-vpc e 2) a opção "Exportar rotas personalizadas" não está selecionada.

13. Atualizar o peering de VPC
Acesse REDE VPC → PEERING DE REDE VPC → servicenetworking-googleapis-com → EDITAR
Selecione EXPORTAR ROTAS PERSONALIZADAS → SALVAR.

14. Validar o peering de VPC atualizado
Valide as rotas exportadas.
Acesse REDE VPC → PEERING DE REDE VPC → servicenetworking-googleapis-com
Selecione "ROTAS EXPORTADAS" para revelar que as rotas no local-vpc (sub-rede de banco de dados 172.16.10.0/27) são exportadas para a rede VPC com peering que hospeda o Looker pela analytics-vpc.

15. Criação do banco de dados postgres do Looker
Na seção a seguir, você vai fazer um SSH na VM postgres-database usando o Cloud Shell.
No Cloud Shell, faça um 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 postgres-database.
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, insira a solicitação de senha.
\password postgres
No SO, defina a senha como postgres (insira 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, insira 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 em "Conexões locais IPv4", conforme a captura de tela abaixo:

sudo nano /etc/postgresql/15/main/pg_hba.conf
Na seção a seguir, remova a marca de comentário de postgresql.conf para detectar todos os endereços IP "*", conforme a captura de tela abaixo:
sudo nano /etc/postgresql/15/main/postgresql.conf
Antes:

Depois:

No SO, reinicie o serviço postgresql.
sudo service postgresql restart
No SO, valide se o status do postgresql está ativo.
sudo service postgresql status
Exemplo:
No SO, valide se o status do postgresql está 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 o esquema looker_schema usado para validar a conectividade do Looker com o ambiente 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 do Looker com a senha do 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 para voltar ao Cloud Shell.
\q
exit
17. Criar um firewall na vpc no local
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 postgres-database.
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 DNS particular na analytics-vpc, que consiste em um registro A do nome de domínio totalmente qualificado (FQDN, na sigla em inglês) 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 peering do sufixo DNS 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 postgres-database.
No console do Cloud, navegue até o Looker e selecione o URL da instância para abrir a interface do Looker.

Depois de iniciar, você vai ver a página de destino conforme a captura de tela abaixo.

Navegue até 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.

A conexão foi estabelecida

20. 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 VPC local usando a ação "test" do Looker e o TCPDUMP.
No Cloud Shell, faça login no postgres-database 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 vai se conectar ao banco de dados postgres, conforme indicado abaixo:

Volte ao terminal do SO e valide se o TCPDUMP identificou que o psc-range-looker está se conectando à instância local do postgres-database.
Adicione uma observação informando que qualquer IP do intervalo de PSA vai aparecer no 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
Há algumas recomendações e práticas recomendadas de segurança relacionadas à proteção do Looker e do banco de dados Postgres. incluindo:
- Configurar as permissões de conta de banco de dados com privilégios mínimos para o Looker, mas que ainda permitem que ele execute as funções necessárias.
- Os dados em trânsito entre o cliente e a interface do Looker e do 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 o CMEK para instâncias do Looker ( https://cloud.google.com/looker/docs/looker-core-cmek) e do Postgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek).
- Controle de acesso do Looker: os administradores do Looker podem controlar o que um principal ou grupo de usuários pode ver e fazer no Looker concedendo acesso a conteúdo, acesso a dados e acesso a recursos. Com essas opções, o administrador do Looker pode definir papéis específicos que incluem modelo e conjunto de permissões, além de criar um controle de acesso refinado aos dados.
- O Looker é compatível com 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 a dados precisam ser ativados explicitamente.
- No momento, o VPC-SC é compatível com instâncias Enterprise e Embed configuradas apenas com IP privado.
22. Limpar
Exclua a instância do Looker Cloud Core. Navegue até:
LOOKER → looker-tutorial → DELETE

No Cloud Shell, exclua os componentes do tutorial.
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 a conectividade do Looker em redes híbridas, permitindo a comunicação de dados em ambientes locais e multicloud.
Você também conseguiu testar a conectividade do Looker Cloud Core com o banco de dados postgres usando a ferramenta "Testar" do Looker Connect e o TCPDUMP na instância do banco de dados postgres.
A Cosmopup acha que os tutoriais são incríveis!

Leituras e vídeos complementares
- Conheça a próxima evolução do Looker
- Migrando para o GCP? Antes de mais nada: VPCs
- Roteamento dinâmico com o Cloud Router
Documentos de referência
- Documentação do Looker (Google Cloud Core)
- Criar uma instância do Looker (Google Cloud Core)
- Criar uma conexão por IP particular para o Looker (Google Cloud Core)
- VPN de alta disponibilidade entre redes do Google Cloud
- Configurar e gerenciar a conversão de endereços de rede com o Cloud NAT
- Opções para troca de rotas dinâmicas