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:
- As edições de instância precisam ser Enterprise ou Embed.
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.
- Criar uma VPC independente em us-central1
- Alocar uma sub-rede IP para o acesso a serviços privados
- Implantar a instância do Looker na VPC independente
- Criar a VPC local e a rede híbrida
- Divulgar e validar o intervalo de IP do Looker no BGP
- Integrar e validar a comunicação de dados do Looker e do Postgresql
Figura 1
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.
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.
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.
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 Cloud Console, navegue até o Looker e selecione o URL da instância que vai abrir a interface do Looker.
Depois de iniciar, você vai encontrar 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 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.
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".
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.
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
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
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.
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:
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.
A captura de tela abaixo detalha a analytics-vpc importando o psa-range-looker da rede VPC com peering gerenciada pelo Google, servicesnetworking.
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
13. Atualizar peering de VPC
Acesse Rede VPC → VPC NETWORK PEERING → servicenetworking-googleapis-com → EDITAR
Selecione EXPORTAR ROTAS PERSONALIZADAS → SALVAR
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.
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:
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:
Depois:
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.
Depois do lançamento, você vai ver a página de destino, de acordo com a captura de tela abaixo.
Navegue até ADMIN → DATABASE → CONNECTIONS → Selecione ADD CONNECTION.
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 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:
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
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!
Outras leituras e vídeos
- 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 de 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 trocar rotas dinâmicas