1. Введение
Looker (ядро Google Cloud) обеспечивает упрощенное и оптимизированное выделение ресурсов, настройку и управление экземпляром Looker из консоли Google Cloud. Некоторые задачи администрирования экземпляра также могут выполняться из консоли.
Для экземпляров Looker (ядро Google Cloud) доступны три сетевые конфигурации:
- Общедоступное соединение: Сетевое соединение использует внешний IP-адрес, доступный через Интернет.
- Частное подключение: Сетевое соединение использует внутренний IP-адрес виртуальной частной сети (VPC) , размещенный компанией Google.
- Публичный и частный IP-адрес: В сетевом соединении используются как публичный, так и частный IP-адрес, при этом входящий трафик будет маршрутизироваться через публичный IP-адрес, а исходящий — через частный IP-адрес.
В этом руководстве вы развернете комплексную сквозную частную сеть для поддержки подключения Looker к локальной VPC через VPN высокой доступности, которую можно будет реплицировать в соответствии с вашими требованиями к подключению к нескольким облакам и локальным системам.
Looker (ядро Google Cloud) поддерживает частные IP-адреса для экземпляров, отвечающих следующим критериям:
- Для установки необходимо использовать версии Enterprise или Embed.
Что вы построите
В этом руководстве вы создадите комплексную частную сеть Looker в автономной VPC с гибридным подключением к нескольким облакам и локальным средам.
Вам потребуется настроить сеть VPC под названием on-prem-vpc , представляющую собой локальную среду. В вашем случае сеть on-prem-vpc не будет существовать, вместо этого будет использоваться гибридная сеть, подключенная к вашему локальному центру обработки данных или облачному провайдеру.
Ниже описаны основные этапы данного руководства.
- Создайте автономную VPC в us-central1
- Выделить IP-подсеть для доступа к частным сервисам.
- Разверните экземпляр Looker в автономной VPC.
- Создайте локальную VPC-сеть и гибридную сеть.
- Размещайте рекламу и подтверждайте доступ к диапазону IP-адресов Looker через BGP.
- Интеграция и проверка обмена данными между Looker и PostgreSQL.
Рисунок 1

Что вы узнаете
- Как создать VPC и связанную с ней гибридную сеть
- Как развернуть Looker в автономной VPC
- Как создать локальную VPC и связанную с ней гибридную сеть.
- Подключите локальную VPC к VPS для аналитики через VPN с высокой доступностью.
- Как рекламировать подсети Looker в гибридной сети
- Как осуществлять мониторинг гибридной сетевой инфраструктуры
- Как интегрировать базу данных PostgreSQL с Looker Cloud Core
Что вам понадобится
- Проект Google Cloud
Разрешения IAM
2. Прежде чем начать
Обновите проект, чтобы он соответствовал учебному пособию.
В этом руководстве переменные `$variables` используются для упрощения настройки gcloud в Cloud Shell.
Внутри Cloud Shell выполните следующие действия:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Настройка VPC
Создайте vpc для аналитики.
Внутри Cloud Shell выполните следующие действия:
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
Создайте локальную VPC.
Внутри Cloud Shell выполните следующие действия:
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
Создайте подсеть для базы данных PostgreSQL.
Внутри Cloud Shell выполните следующие действия:
gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1
Настройка облачного маршрутизатора и NAT.
В руководстве по установке программных пакетов используется Cloud NAT, поскольку экземпляр виртуальной машины базы данных не имеет внешнего IP-адреса.
Внутри Cloud Shell создайте Cloud Router.
gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1
Внутри Cloud Shell создайте 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
Создайте экземпляр для тестирования базы данных.
Создайте экземпляр базы данных postgres, который будет использоваться для тестирования и проверки подключения к Looker.
Внутри Cloud Shell создайте экземпляр.
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"
Создание правил брандмауэра
Чтобы разрешить IAP подключаться к вашим виртуальным машинам, создайте правило брандмауэра, которое:
- Применяется ко всем экземплярам виртуальных машин, к которым вы хотите обеспечить доступ с помощью IAP.
- Разрешает входящий трафик из диапазона IP-адресов 35.235.240.0/20. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP-трафика.
Из 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. Доступ к частным услугам
Доступ к частным сервисам — это частное соединение между вашей сетью VPC и сетью, принадлежащей Google или третьей стороне. Google или третья сторона, предоставляющие услуги, также известны как производители услуг. Looker Cloud Core является производителем услуг.
Частное соединение позволяет экземплярам виртуальных машин в вашей сети VPC и службам, к которым вы обращаетесь, взаимодействовать исключительно с использованием внутренних IP-адресов .
В общих чертах, для использования доступа к частным сервисам необходимо выделить диапазон IP-адресов (блок CIDR) в вашей сети VPC, а затем создать частное соединение с поставщиком услуг.
Выделить диапазон IP-адресов для служб
Перед созданием частного соединения необходимо выделить диапазон IPv4-адресов для использования в сети VPC поставщика услуг. Это гарантирует отсутствие конфликтов IP-адресов между вашей сетью VPC и сетью поставщика услуг.
При выделении диапазона в вашей сети VPC этот диапазон не может использоваться для подсетей (основных и дополнительных диапазонов) и адресов пользовательских статических маршрутов.
Использование диапазонов IPv6-адресов для доступа к частным сервисам не поддерживается.
Включите API сетевого взаимодействия сервисов для вашего проекта в консоли Google Cloud. После включения API может потребоваться обновить страницу консоли, чтобы подтвердить его работоспособность.
Создать выделение IP-адресов
Для указания диапазона адресов и длины префикса (маски подсети) используйте флаги addresses и prefix-length. Например, чтобы выделить блок CIDR 192.168.0.0/22, укажите 192.168.0.0 в качестве адреса и 22 в качестве длины префикса.
Внутри Cloud Shell создайте распределение IP-адресов для 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
Внутри Cloud Shell проверьте выделение IP-адресов.
gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
Пример:
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
Создать частное соединение
После создания выделенного диапазона вы можете установить частное соединение с поставщиком услуг, Looker Cloud Core. Частное соединение устанавливает пиринговое соединение VPC между вашей сетью VPC и сетью поставщика услуг после создания экземпляра Looker.
Частные соединения представляют собой однозначное соответствие между вашей сетью VPC и поставщиком услуг. Если один поставщик услуг предлагает несколько услуг, вам потребуется всего одно частное соединение для всех услуг этого поставщика.
Если вы подключаетесь к нескольким поставщикам услуг, используйте уникальное выделение ресурсов для каждого из них. Это поможет вам управлять сетевыми настройками, такими как маршруты и правила брандмауэра, для каждого поставщика услуг.
Внутри Cloud Shell создайте частное соединение и запишите название операции.
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Пример:
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.
Внутри Cloud Shell проверьте, была ли операция успешной, и замените OPERATION_NAME на имя, сгенерированное на предыдущем шаге.
gcloud services vpc-peerings operations describe \
--name=OPERATION_NAME
Пример:
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. Создайте экземпляр Looker (ядро Google Cloud).
Прежде чем начать
Включите API Looker для своего проекта в консоли Google Cloud. После включения API может потребоваться обновить страницу консоли, чтобы подтвердить его работоспособность.
Настройте OAuth-клиент для аутентификации и доступа к экземпляру.
В следующем разделе вам потребуется использовать идентификатор клиента OAuth и секретный ключ для создания экземпляра Looker.
Указание авторизованных источников JavaScript и URI перенаправления не требуется.

В консоли Cloud Console создайте экземпляр, основываясь на предоставленных скриншотах.
Перейдите в меню LOOKER → СОЗДАТЬ ЭКЗЕМПЛЯР
Заполните ранее созданные поля «Идентификатор клиента OAuth» и «Секрет».



Выберите СОЗДАТЬ
В процессе создания экземпляра вы будете перенаправлены на страницу «Экземпляры» в консоли. Возможно, вам потребуется обновить страницу, чтобы увидеть статус вашего нового экземпляра. Вы также можете отслеживать процесс создания экземпляра, щелкнув значок уведомлений в меню консоли Google Cloud. Во время создания экземпляра значок уведомлений в меню консоли Google Cloud будет обведен значком загрузки.
После создания экземпляра Looker генерируется URL-адрес экземпляра. Запишите этот URL-адрес.

6. Обновите идентификатор клиента OAuth 2.0.
В следующем разделе вам потребуется обновить ранее созданный URI перенаправления авторизованного идентификатора клиента OAuth, добавив /oauth2callback к URL-адресу экземпляра.
После завершения вы можете использовать URL-адрес экземпляра для входа в пользовательский интерфейс Looker.
В консоли Cloud перейдите в раздел API и сервисы → учетные данные
Выберите свой идентификатор клиента OAuth 2.0 и обновите URL-адрес экземпляра (пример ниже):

7. Подтвердите доступ к Looker.
В консоли Cloud Console перейдите в раздел Looker и выберите URL-адрес своего экземпляра, чтобы открыть пользовательский интерфейс Looker.

После запуска вы увидите целевую страницу, показанную на скриншоте ниже, подтверждающую ваш доступ к Looker Cloud Core.

8. Гибридная связь
В следующем разделе вы создадите облачный маршрутизатор, который позволит вам динамически обмениваться маршрутами между вашей виртуальной частной сетью (VPC) и соседней сетью с использованием протокола Border Gateway Protocol (BGP) .
Cloud Router может установить BGP-сессию через туннель Cloud VPN для соединения ваших сетей. Он автоматически изучает новые диапазоны IP-адресов подсетей и сообщает о них вашей партнерской сети.
В этом руководстве вы развернете высокодоступный VPN между vPC для аналитики и vPC локальной сети, чтобы продемонстрировать возможность частного подключения к Looker.
Создайте шлюз HA VPN для analytics-vpc.
При создании каждого шлюза автоматически выделяются два внешних IPv4-адреса, по одному для каждого интерфейса шлюза. Запишите эти IP-адреса для дальнейшего использования на этапах настройки.
Внутри Cloud Shell создайте шлюз HA VPN.
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
Создайте шлюз HA VPN для локальной VPC.
При создании каждого шлюза автоматически выделяются два внешних IPv4-адреса, по одному для каждого интерфейса шлюза. Запишите эти IP-адреса для дальнейшего использования на этапах настройки.
Внутри Cloud Shell создайте шлюз HA VPN.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
Проверка создания шлюза HA VPN
С помощью консоли перейдите в раздел HYBRID CONNECTIVITY → VPN → CLOUD VPN GATEWAYS.

Создайте облачный маршрутизатор для analytics-vpc.
Внутри Cloud Shell создайте Cloud Router, расположенный в каталоге us-central1.
gcloud compute routers create analytics-cr-us-central1 \
--region=us-central1 \
--network=analytics-vpc\
--asn=65001
Создайте облачный маршрутизатор для локальной VPC.
Внутри Cloud Shell создайте Cloud Router, расположенный в каталоге us-central1.
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
Создайте VPN-туннели для analytics-vpc
Вам потребуется создать два VPN-туннеля на каждом VPN-шлюзе высокой доступности.
Создать VPN-туннель0
Внутри Cloud Shell создайте туннель 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
Создать VPN-туннель1
Внутри Cloud Shell создайте туннель 1:
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
Создайте VPN-туннели для локальной VPC.
Вам потребуется создать два VPN-туннеля на каждом VPN-шлюзе высокой доступности.
Создать VPN-туннель0
Внутри Cloud Shell создайте туннель 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
Создать VPN-туннель1
Внутри Cloud Shell создайте туннель 1:
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
Проверка создания VPN-туннеля
В консоли перейдите в раздел HYBRID CONNECTIVITY → VPN → CLOUD VPN TUNNELS.

9. Установите BGP-соседей.
Создание сессий BGP
В этом разделе вы настраиваете интерфейсы Cloud Router и BGP-пиры.
Создайте интерфейс BGP и установите пиринговое соединение для analytics-vpc.
Внутри Cloud Shell создайте интерфейс 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
Внутри Cloud Shell создайте 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
Внутри Cloud Shell создайте интерфейс 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
Внутри Cloud Shell создайте 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
Создайте BGP-интерфейс и настройте пиринг для локальной VPC.
Внутри Cloud Shell создайте интерфейс 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
Внутри Cloud Shell создайте 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
Внутри Cloud Shell создайте интерфейс 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
Внутри Cloud Shell создайте 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
Для просмотра сведений о VPN-туннеле перейдите в раздел Hybrid CONNECTIVITY → VPN .

Проверка маршрутов, полученных с помощью analytics-vpc, через HA VPN.
Поскольку установлены туннели HA VPN и сессии BGP, маршруты из локальной VPC извлекаются из аналитической VPC. Используя консоль, перейдите в раздел Сеть VPC → Сети VPC → Аналитическая VPC → МАРШРУТЫ → РЕГИОН → us-central1 → ВИД
Обратите внимание, что analytics-vpc получил маршруты от локальной подсети базы данных VPC 172.16.10.0/27.

Убедитесь, что локальная VPC не получила маршруты через VPN высокой доступности.
VPC для аналитики не имеет подсети, поэтому Cloud Router не будет объявлять подсети локальной VPC. В консоли перейдите в раздел Сеть VPC → Сети VPC → Локальная VPC → МАРШРУТЫ → РЕГИОН → us-central1 → ВИД

10. Разместите объявление о подсети Looker для локальной сети.
Подсеть Looker Private Service Access (PSA) не объявляется автоматически облачным маршрутизатором analytics-cr-us-central1, поскольку подсеть назначается PSA, а не VPC.
Вам потребуется создать пользовательский маршрут для объявления из analytics-cr-central1 для подсети PSA 192.168.0.0/22 (psa-range-looker), который будет распространяться в локальной среде и использоваться рабочими нагрузками для доступа к Looker.
В консоли перейдите в раздел HYBRID CONNECTIVITY → CLOUD ROUTERS → analytics-cr-us-central1 , затем выберите EDIT.
В разделе «Рекламируемые маршруты» выберите опцию «Создать пользовательские маршруты» , обновите поля в соответствии с приведенным ниже примером, выберите «ГОТОВО», а затем нажмите «СОХРАНИТЬ».

11. Убедитесь, что локальная VPC получила доступ к подсети Looker.
Теперь локальная VPC сможет получить доступ к подсети Looker PSA, поскольку она была объявлена из analytics-cr-us-central1 в качестве пользовательского маршрута.
В консоли перейдите в раздел VPC NETWORK → VPC NETWORKS → on-prem-vpc → ROUTES → REGION → us-central1 → VIEW
Обратите внимание на маршруты Looker, которые передаются из analytics-vpc:

12. Проверьте текущее соединение VPC.
Соединение между Looker Cloud Core и analytics-vpc осуществляется посредством пиринга VPC, который позволяет обмениваться пользовательскими маршрутами, полученными через BGP. В этом руководстве analytics-vpc необходимо будет опубликовать маршруты, полученные on-prem-vpc, в Looker. Для включения этой функции требуется обновление механизма пиринга VPC, позволяющее экспортировать пользовательский маршрут.
Проверьте текущие импортированные и экспортированные маршруты.
Перейдите в раздел VPC NETWORK → VPC NETWORK PEERING → servicenetworking-googleapis-com

На скриншоте ниже подробно показано, как analytics-vpc импортирует psa-range-looker из управляемой Google пиринговой сети VPC, servicesnetworking.

Выбор параметра «Экспортированные маршруты» отменяет экспорт маршрутов в сеть Peered VPC, поскольку: 1) Подсети не настроены в analytics-vpc; 2) Параметр «Экспорт пользовательских маршрутов» не выбран.

13. Обновление пиринга VPC
Перейдите в раздел VPC NETWORK → VPC NETWORK PEERING → servicenetworking-googleapis-com → EDIT
Выберите ЭКСПОРТ ПОЛЬЗОВАТЕЛЬСКИХ МАРШРУТОВ → СОХРАНИТЬ

14. Проверьте обновленные настройки пиринга VPC.
Проверьте экспортированные маршруты.
Перейдите в раздел VPC NETWORK → VPC NETWORK PEERING → servicenetworking-googleapis-com
Выбор пункта «ЭКСПОРТИРОВАННЫЕ МАРШРУТЫ» показывает, что маршруты локальной VPC (подсеть базы данных 172.16.10.0/27) экспортируются в сеть Peered VPC, на которой размещен Looker, с помощью analytics-vpc.

15. Создание базы данных PostgreSQL с помощью Looker
В следующем разделе вы выполните подключение по SSH к виртуальной машине postgres-database с помощью Cloud Shell.
Внутри Cloud Shell выполните SSH-подключение к экземпляру базы данных postgres.
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
Внутри операционной системы определите и запишите IP-адрес (ens4) экземпляра базы данных postgres.
ip a
Пример:
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
Внутри операционной системы войдите в PostgreSQL.
sudo -u postgres psql postgres
Внутри операционной системы введите запрос на ввод пароля.
\password postgres
В операционной системе установите пароль postgres (введите один и тот же пароль дважды).
postgres
Пример:
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:
Внутри операционной системы завершите работу postgres.
\q
Пример:
postgres=# \q
user@postgres-database:~$
В следующем разделе вам нужно будет указать IP-адрес вашего экземпляра базы данных postgres и подсеть доступа Google к Looker Private (192.168.0.0/22) в файле pg_hba.conf в разделе локальных подключений IPv4, как показано на скриншоте ниже:

sudo nano /etc/postgresql/15/main/pg_hba.conf
В следующем разделе раскомментируйте файл postgresql.conf, чтобы он прослушивал все IP-адреса, обозначенные символом '*', как показано на скриншоте ниже:
sudo nano /etc/postgresql/15/main/postgresql.conf
До:

После:

Внутри операционной системы перезапустите службу postgresql.
sudo service postgresql restart
Внутри операционной системы проверьте, активен ли статус PostgreSQL.
sudo service postgresql status
Пример:
Внутри операционной системы проверьте, активен ли статус PostgreSQL.
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. Создайте базу данных PostgreSQL.
В следующем разделе вы создадите базу данных PostgreSQL с именем postgres_looker и схемой looker_schema, используемой для проверки подключения Looker к локальной сети.
Внутри операционной системы войдите в PostgreSQL.
sudo -u postgres psql postgres
Создайте базу данных внутри операционной системы.
create database postgres_looker;
Внутри операционной системы выведите список баз данных.
\l
Внутри операционной системы создайте средство поиска пользователей с помощью средства поиска паролей.
create user postgres_looker with password 'postgreslooker';
Внутри операционной системы подключитесь к базе данных.
\c postgres_looker;
Внутри операционной системы создайте схему looker-schema и выйдите в командную строку Cloud Shell.
create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
Пример:
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
Выход из операционной системы вернет вас в облачную оболочку.
\q
exit
17. Создайте брандмауэр в локальной VPC.
В следующем разделе создайте межсетевой экран Ingress с функцией логирования, который разрешит обмен данными между подсетью Looker и экземпляром базы данных postgres.
В Cloud Shell создайте межсетевой экран для локальной 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. Создайте частный DNS в analytics-vpc.
Хотя Looker развернут в управляемой Google VPC, доступ к частному DNS-серверу analytics-vpc поддерживается посредством пиринга с сетевым интерфейсом сервисов.
В следующем разделе вы создадите частную DNS-зону в analytics-vpc, состоящую из A-записи полного доменного имени экземпляра базы данных postgres ( postgres.analytics.com) и IP-адреса.
В Cloud Shell создайте частную зону 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"
В Cloud Shell определите IP-адрес экземпляра базы данных postgres.
gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
Пример:
user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
networkIP: 172.16.10.2
В Cloud Shell создайте запись типа A, обязательно добавив ранее указанный IP-адрес.
gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"
Пример:
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
Из Cloud Shell, подключите dns-suffix analytics.com к сетевым сервисам, что позволит Looker получить доступ к частной зоне analytics-vpc.
gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.
19. Интеграция Looker с базой данных Postgres postgres-database
В следующем разделе вы будете использовать Cloud Console для создания подключения к базе данных PostgreSQL, расположенной в локальной среде.
В консоли Cloud Console перейдите в раздел Looker и выберите URL-адрес своего экземпляра, чтобы открыть пользовательский интерфейс Looker.

После запуска вы увидите целевую страницу, как показано на скриншоте ниже.

Перейдите в раздел АДМИНИСТРИРОВАНИЕ → БАЗЫ ДАННЫХ → ПОДКЛЮЧЕНИЯ → Выберите ДОБАВИТЬ ПОДКЛЮЧЕНИЕ
Заполните данные для подключения в соответствии со скриншотом ниже, затем выберите ПОДКЛЮЧИТЬСЯ.

Соединение установлено успешно.

20. Проверьте подключение Looker.
В следующем разделе вы узнаете, как проверить подключение Looker к базе данных postgres в локальной VPC с помощью действия Looker 'test' и TCPDUMP.
Если время сеанса истекло, войдите в базу данных postgres через Cloud Shell.
Внутри Cloud Shell выполните следующие действия:
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"
В операционной системе создайте фильтр TCPDUMP с подсетью psa-range-looker 192.168.0.0/22.
sudo tcpdump -i any net 192.168.0.0/22 -nn
Перейдите в раздел «Подключения к данным» АДМИНИСТРИРОВАНИЕ → БАЗЫ ДАННЫХ → ПОДКЛЮЧЕНИЯ → Выбрать → Проверить
После выбора параметра «Тест» Looker успешно подключится к базе данных PostgreSQL, как показано ниже:

Вернитесь в терминал операционной системы и убедитесь, что TCPDUMP определил, что psc-range-looker подключается к локальному экземпляру базы данных postgres.
Добавьте примечание о том, что любой IP-адрес из диапазона PSA будет отображаться в 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. Рекомендации по безопасности
Существует несколько рекомендаций и передовых методов обеспечения безопасности, связанных с защитой Looker и базы данных Postgres. К ним относятся:
- Настройка минимально привилегированных прав доступа к учетной записи базы данных для Looker, позволяющая при этом выполнять необходимые функции.
- Данные, передаваемые между клиентом и пользовательским интерфейсом Looker, а также между Looker и базой данных, шифруются с использованием TLS 1.2+.
- Данные в состоянии покоя по умолчанию шифруются, однако клиент также может использовать CMEK для экземпляров Looker ( https://cloud.google.com/looker/docs/looker-core-cmek ) и для Postgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek ).
- Управление доступом в Looker — администраторы Looker могут контролировать, что может видеть и делать конкретный пользователь или группа пользователей в Looker, предоставляя доступ к контенту, данным и функциям. Эти параметры позволяют администратору Looker определять конкретные роли, включая модель и набор разрешений, а также создавать детальный контроль доступа к данным.
- Looker поддерживает как журналы аудита, так и журналы доступа к данным , которые фиксируют, кто, что, когда и где сделал. Журналы аудита включены по умолчанию, а журналы доступа к данным необходимо включить явно .
- В настоящее время VPC-SC поддерживает экземпляры Enterprise и Embed, настроенные только с использованием частного IP-адреса.
22. Уборка
Удалите экземпляр Looker Cloud Core, перейдите по следующему пути:
LOOKER → looker-tutorial → DELETE

В 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. Поздравляем!
Поздравляем, вы успешно настроили и проверили подключение Looker к гибридной сети, обеспечив передачу данных между локальными и многооблачными средами.
Вы также смогли успешно протестировать подключение Looker Cloud Core к базе данных postgres, используя инструмент Lookers Connect 'Test' и TCPDUMP в экземпляре базы данных postgres.
Cosmopup считает, что обучающие материалы — это здорово!!

Дополнительная литература и видеоматериалы
- Представляем следующий этап развития Looker.
- Переход на GCP? Первым делом: VPC.
- Динамическая маршрутизация с помощью Cloud Router
Справочная документация
- Документация Looker (ядро Google Cloud)
- Создайте экземпляр Looker (ядро Google Cloud).
- Создайте частное IP-соединение для Looker (ядро Google Cloud).
- Высокодоступное VPN-соединение между сетями Google Cloud
- Настройка и управление трансляцией сетевых адресов с помощью Cloud NA.
- Варианты обмена динамическими маршрутами