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

1. Введение

Looker (ядро Google Cloud) обеспечивает упрощенное и оптимизированное предоставление, настройку и управление экземпляром Looker из консоли Google Cloud. Некоторые задачи администрирования экземпляра также можно выполнять с консоли.

Для экземпляров Looker (ядро Google Cloud) доступны три конфигурации сети:

  • Общедоступный: сетевое соединение использует внешний IP-адрес, доступный из Интернета.
  • Частное: сетевое соединение использует внутренний IP-адрес виртуального частного облака (VPC), размещенный в Google.
  • Общедоступный и частный: сетевое соединение использует как общедоступный IP-адрес, так и частный IP-адрес, при этом входящий трафик будет маршрутизироваться через общедоступный IP-адрес, а исходящий трафик будет маршрутизироваться через частный IP-адрес.

В этом руководстве вы развернете комплексную сквозную частную сеть для поддержки подключения Looker к локальному виртуальному компьютеру через HA VPN, которую можно реплицировать в соответствии с вашими требованиями к многооблачному и локальному подключению.

Looker (ядро Google Cloud) поддерживает частный IP-адрес для экземпляров, соответствующих следующим критериям:

Что ты построишь

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

Вы настроите сеть 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 на автономном виртуальном компьютере
  • Как создать локальный виртуальный компьютер и связанную с ним гибридную сеть
  • Подключите локальный виртуальный компьютер к аналитическому VPN через HA VPN.
  • Как рекламировать подсети Looker в гибридной сети
  • Как контролировать гибридную сетевую инфраструктуру
  • Как интегрировать базу данных Postgresql с Looker Cloud Core

Что вам понадобится

  • Облачный проект Google

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

Создайте Analytics-VPC.

Внутри Cloud Shell выполните следующие действия:

gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom

Создайте on-prem-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 вам может потребоваться обновить страницу консоли, чтобы подтвердить, что API включен.

Создайте распределение IP-адресов

Чтобы указать диапазон адресов и длину префикса (маску подсети), используйте флаги адресов и длины префикса. Например, чтобы выделить блок 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).

Прежде чем начать

Включите Looker API для своего проекта в консоли Google Cloud. При включении API вам может потребоваться обновить страницу консоли, чтобы подтвердить, что 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 Console перейдите в раздел «API и УСЛУГИ» → «УЧЕТНЫЕ ДАННЫЕ».

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

793c5b82ec34fb1f.png

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

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

9d132a67c532279e.png

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

b77055fd674f8a69.png

8. Гибридное подключение

В следующем разделе вы создадите облачный маршрутизатор, который позволит вам динамически обмениваться маршрутами между вашим виртуальным частным облаком (VPC) и одноранговой сетью с помощью протокола пограничного шлюза (BGP) .

Cloud Router может настроить сеанс BGP через туннель Cloud VPN для соединения ваших сетей. Он автоматически изучает новые диапазоны IP-адресов подсети и объявляет их вашей одноранговой сети.

В этом руководстве вы развернете HA VPN между Analytics-VPC и on-Prem-VPC, чтобы проиллюстрировать частное подключение к Looker.

Создайте шлюз высокой доступности VPN для аналитики-vpc.

При создании каждого шлюза автоматически выделяются два внешних адреса IPv4 — по одному для каждого интерфейса шлюза. Запишите эти IP-адреса, чтобы использовать их позже на этапах настройки.

Внутри Cloud Shell создайте шлюз HA VPN GW.

gcloud compute vpn-gateways create analytics-vpn-gw \
   --network=analytics-vpc\
   --region=us-central1

Создайте шлюз HA VPN для локального виртуального ПК.

При создании каждого шлюза автоматически выделяются два внешних адреса IPv4 — по одному для каждого интерфейса шлюза. Запишите эти IP-адреса, чтобы использовать их позже на этапах настройки.

Внутри Cloud Shell создайте шлюз HA VPN GW.

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-vpc\
   --region=us-central1

Проверка создания шлюза HA VPN GW

С помощью консоли перейдите в раздел ГИБРИДНОЕ ПОДКЛЮЧЕНИЕ → VPN → ОБЛАЧНЫЕ VPN-ШЛЮЗЫ.

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

Создайте облачный маршрутизатор для on-prem-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 создайте туннель0:

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-туннели для on-prem-vpc.

Вы создадите два VPN-туннеля на каждом VPN-шлюзе высокой доступности.

Создать VPN-туннель0

Внутри Cloud Shell создайте туннель0:

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-туннеля

С помощью консоли перейдите в раздел ГИБРИДНОЕ ПОДКЛЮЧЕНИЕ → VPN → ОБЛАЧНЫЕ VPN-ТУННЕЛИ.

61c09b3d3102149d.png

9. Установите соседей BGP

Создание сеансов BGP

В этом разделе вы настраиваете интерфейсы Cloud Router и узлы BGP.

Создайте интерфейс BGP и пиринг для аналитики-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 и пиринг для on-prem-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» , чтобы просмотреть сведения о VPN-туннеле.

ddd4a8f851d44fd6.png

Проверка полученных маршрутов аналитики-vpc через HA VPN

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

Обратите внимание, что Analytics-vpc изучил маршруты из локальной базы данных vpc-subnet-us-central1 172.16.10.0/27.

57c7898390db4bcb.png

Убедитесь, что on-prem-vpc не изучил маршруты через HA VPN.

Analytics-vpc не имеет подсети, поэтому Cloud Router не будет объявлять какие-либо подсети для on-prem-vpc . С помощью консоли перейдите в сеть VPC → Сети VPC → on-prem-vpc → МАРШРУТЫ → РЕГИОН → us-central1 → ПРОСМОТР.

5b007e46a7c7026.png

10. Рекламируйте подсеть Looker локально

Подсеть Looker Private Service Access (PSA) не объявляется автоматически облачным маршрутизаторомanalytics-cr-us-central1, поскольку подсеть назначена PSA, а не VPC.

Вам потребуется создать настраиваемое объявление маршрута из аналитики-cr-central1 для подсети PSA 192.168.0.0/22 ​​(psa-range-looker), которое будет объявляться в локальной среде и использоваться рабочими нагрузками для доступа к Looker.

В консоли перейдите в раздел ГИБРИДНОЕ ПОДКЛЮЧЕНИЕ → ОБЛАЧНЫЕ МАРШРУТИЗАТОРЫ → Analytics-cr-us-central1 , затем выберите РЕДАКТИРОВАТЬ.

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

87f95ee3d1cd8521.png

11. Убедитесь, что локальный виртуальный компьютер узнал подсеть Looker.

Теперь локальный vpc сможет получить доступ к подсети Looker PSA, поскольку он был объявлен из аналитики-cr-us-central1 как объявление настраиваемого маршрута.

С помощью консоли перейдите в СЕТЬ VPC → СЕТИ VPC → on-prem-vpc → МАРШРУТЫ → РЕГИОН → us-central1 → ПРОСМОТР.

Наблюдайте за маршрутами Looker, объявленными из Analytics-VPC:

a987a76fd57ddedd.png

12. Проверка текущего пиринга VPC.

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

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

Перейдите в СЕТЬ VPC → ПИИРИНГ СЕТИ VPC → servicenetworking-googleapis-com.

f6d9395712934cd8.png

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

86a0e8c3534c6986.png

При выборе ЭКСПОРТИРОВАННЫХ МАРШРУТОВ маршруты не экспортируются в одноранговую сеть VPC, поскольку 1) Подсети не настроены в аналитике-vpc 2) Экспортировать пользовательские маршруты не выбран

a52de427fa73fb22.png

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

Перейдите в СЕТЬ VPC → ПИИРИНГ СЕТИ VPC → servicenetworking-googleapis-com → ИЗМЕНИТЬ.

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

a2309e4c3a7cee80.png

14. Проверка обновленного пиринга VPC.

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

Перейдите в СЕТЬ VPC → ПИИРИНГ СЕТИ VPC → servicenetworking-googleapis-com.

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

47e953268d78a469.png

15. Создание постгрес-базы данных Looker

В следующем разделе вы выполните SSH к виртуальной машине базы данных postgres с помощью 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 и подсеть Looker Private Google Access (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. Создайте базу данных Postgres.

В следующем разделе вы создадите базу данных postgres с именем postgres_looker и схему Looker_schema, используемую для проверки подключения средства просмотра к локальной среде.

Внутри ОС войдите в postgres.

sudo -u postgres psql postgres

Внутри ОС создайте базу данных.

create database postgres_looker;

Внутри ОС перечислите базу данных.

\l

Внутри ОС создайте средство просмотра пользователей со средством поиска паролей.

create user postgres_looker with password 'postgreslooker';

Внутри ОС подключитесь к базе данных.

\c postgres_looker;

Внутри ОС создайте схему просмотра схемы и выйдите в командную строку 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. Создайте брандмауэр в on-prem-vpc.

В следующем разделе создайте Ingress-брандмауэр с ведением журнала, который позволит подсети Looker обмениваться данными с экземпляром базы данных postgres.

В Cloud Shell создайте брандмауэр 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. Создайте частный DNS в аналитике-vpc.

Хотя Looker развертывается в VPC, управляемом Google, доступ к частному 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-суффикс 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.

В следующем разделе вы будете использовать Cloud Console для создания подключения базы данных к локальному экземпляру базы данных postgres.

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

9d132a67c532279e.png

После запуска вам будет представлена ​​целевая страница, как показано на скриншоте ниже.

b77055fd674f8a69.png

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

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

c8cca15252c2020d.png

Соединение теперь успешно

3e51b7e2cc62fb45.png

20. Проверка подключения Looker

В следующем разделе вы узнаете, как проверить подключение Looker к базе данных postgres в on-prem-vpc с помощью действия «test» Looker и TCPDUMP.

Из Cloud Shell войдите в базу данных postgres, если время сеанса истекло.

Внутри 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

Перейдите к соединению данных ADMIN → БАЗА ДАННЫХ → ПОДКЛЮЧЕНИЯ → Выбрать → Тест.

После выбора «Тест» Looker успешно подключится к базе данных postgres, как показано ниже:

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 → УДАЛИТЬ

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 с помощью инструмента «Test» Lookers Connect и TCPDUMP в экземпляре базы данных postgres.

Cosmopup считает, что уроки — это здорово!!

e6d3675ca7c6911f.jpeg

Дальнейшее чтение и видео

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