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:
- 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ê 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
- Crie uma VPC autônoma em us-central1
- Alocar uma sub-rede IP para o Acesso privado a serviços
- Implantar a instância do Looker na VPC independente
- Criar a rede híbrida e on-prem-vpc
- Divulgar e validar o intervalo de IP do Looker no 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 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.
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.
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.
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, acesse o Looker e selecione o URL da instância que vai abrir a interface do Looker.
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.
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.
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.
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.
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
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
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.
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:
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
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 → EXIBIÇÃO 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 → 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, 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:
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:
Depois:
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.
Depois do lançamento, você vai ver a página de destino, de acordo com a captura de tela abaixo.
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
A conexão foi estabelecida
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:
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
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!!
Leia mais e Vídeos
- Apresentamos a próxima evolução do Looker
- Está 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 NA
- Opções para trocar rotas dinâmicas