Подключите Looker Cloud через гибридную сеть

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-адреса для экземпляров, отвечающих следующим критериям:

Что вы построите

В этом руководстве вы создадите комплексную частную сеть Looker в автономной VPC с гибридным подключением к нескольким облакам и локальным средам.

Вам потребуется настроить сеть VPC под названием on-prem-vpc , представляющую собой локальную среду. В вашем случае сеть on-prem-vpc не будет существовать, вместо этого будет использоваться гибридная сеть, подключенная к вашему локальному центру обработки данных или облачному провайдеру.

Ниже описаны основные этапы данного руководства.

  1. Создайте автономную VPC в us-central1
  2. Выделить IP-подсеть для доступа к частным сервисам.
  3. Разверните экземпляр Looker в автономной VPC.
  4. Создайте локальную VPC-сеть и гибридную сеть.
  5. Размещайте рекламу и подтверждайте доступ к диапазону IP-адресов Looker через BGP.
  6. Интеграция и проверка обмена данными между Looker и PostgreSQL.

Рисунок 1

8436cc4802b670db.png

Что вы узнаете

  • Как создать 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 перенаправления не требуется.

103601bca0b6ebe8.png

В консоли Cloud Console создайте экземпляр, основываясь на предоставленных скриншотах.

Перейдите в меню LOOKER → СОЗДАТЬ ЭКЗЕМПЛЯР

Заполните ранее созданные поля «Идентификатор клиента OAuth» и «Секрет».

b780ed751824176c.png

3fe880e26a81a756.png

91acffd74c68a067.png

Выберите СОЗДАТЬ

В процессе создания экземпляра вы будете перенаправлены на страницу «Экземпляры» в консоли. Возможно, вам потребуется обновить страницу, чтобы увидеть статус вашего нового экземпляра. Вы также можете отслеживать процесс создания экземпляра, щелкнув значок уведомлений в меню консоли Google Cloud. Во время создания экземпляра значок уведомлений в меню консоли Google Cloud будет обведен значком загрузки.

После создания экземпляра Looker генерируется URL-адрес экземпляра. Запишите этот URL-адрес.

5ac8a1b8b438dce6.png

6. Обновите идентификатор клиента OAuth 2.0.

В следующем разделе вам потребуется обновить ранее созданный URI перенаправления авторизованного идентификатора клиента OAuth, добавив /oauth2callback к URL-адресу экземпляра.

После завершения вы можете использовать URL-адрес экземпляра для входа в пользовательский интерфейс Looker.

В консоли Cloud перейдите в раздел API и сервисы → учетные данные

Выберите свой идентификатор клиента OAuth 2.0 и обновите URL-адрес экземпляра (пример ниже):

793c5b82ec34fb1f.png

7. Подтвердите доступ к Looker.

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

9d132a67c532279e.png

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

b77055fd674f8a69.png

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.

a3973b2bbb832bae.png

Создайте облачный маршрутизатор для 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.

61c09b3d3102149d.png

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 .

ddd4a8f851d44fd6.png

Проверка маршрутов, полученных с помощью analytics-vpc, через HA VPN.

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

Обратите внимание, что analytics-vpc получил маршруты от локальной подсети базы данных VPC 172.16.10.0/27.

57c7898390db4bcb.png

Убедитесь, что локальная VPC не получила маршруты через VPN высокой доступности.

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

5b007e46a7c7026.png

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.

В разделе «Рекламируемые маршруты» выберите опцию «Создать пользовательские маршруты» , обновите поля в соответствии с приведенным ниже примером, выберите «ГОТОВО», а затем нажмите «СОХРАНИТЬ».

87f95ee3d1cd8521.png

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:

a987a76fd57ddedd.png

12. Проверьте текущее соединение VPC.

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

Проверьте текущие импортированные и экспортированные маршруты.

Перейдите в раздел VPC NETWORK → VPC NETWORK PEERING → servicenetworking-googleapis-com

f6d9395712934cd8.png

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

86a0e8c3534c6986.png

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

a52de427fa73fb22.png

13. Обновление пиринга VPC

Перейдите в раздел VPC NETWORK → VPC NETWORK PEERING → servicenetworking-googleapis-com → EDIT

Выберите ЭКСПОРТ ПОЛЬЗОВАТЕЛЬСКИХ МАРШРУТОВ → СОХРАНИТЬ

a2309e4c3a7cee80.png

14. Проверьте обновленные настройки пиринга VPC.

Проверьте экспортированные маршруты.

Перейдите в раздел VPC NETWORK → VPC NETWORK PEERING → servicenetworking-googleapis-com

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

47e953268d78a469.png

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, как показано на скриншоте ниже:

178364a8ee9b6233.png

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

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

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

До:

aad52092c0a9408.png

После:

7e80b916d29e097c.png

Внутри операционной системы перезапустите службу 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.

9d132a67c532279e.png

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

b77055fd674f8a69.png

Перейдите в раздел АДМИНИСТРИРОВАНИЕ → БАЗЫ ДАННЫХ → ПОДКЛЮЧЕНИЯ → Выберите ДОБАВИТЬ ПОДКЛЮЧЕНИЕ

Заполните данные для подключения в соответствии со скриншотом ниже, затем выберите ПОДКЛЮЧИТЬСЯ.

c8cca15252c2020d.png

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

3e51b7e2cc62fb45.png

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, как показано ниже:

ef25b837b6a41fe.png

Вернитесь в терминал операционной системы и убедитесь, что 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

e5a2e3af9e7ffd40.png

В 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 считает, что обучающие материалы — это здорово!!

e6d3675ca7c6911f.jpeg

Дополнительная литература и видеоматериалы

Справочная документация