Looker PSC Southbound Hybrid NEG в локальную среду, Looker PSC Southbound Hybrid NEG в локальную среду, Looker PSC Southbound Hybrid NEG в локальную среду, Looker PSC Southbound Hybrid NEG в локальную среду

1. Введение

В этой лабораторной работе вы выполните южное подключение к локальной базе данных Postgres через H-VPN с использованием внутреннего балансировщика нагрузки TCP-прокси и группы конечных точек гибридной сети, вызываемой из Looker PSC в качестве потребителя службы.

Private Service Connect — это возможность сети Google Cloud, которая позволяет потребителям получать частный доступ к управляемым сервисам изнутри своей сети VPC. Аналогичным образом, это позволяет производителям управляемых услуг размещать эти услуги в своих собственных отдельных сетях VPC и предлагать своим потребителям частное соединение. Например, когда вы используете Private Service Connect для доступа к Looker, вы являетесь потребителем услуги, а Google — производителем услуги, как показано на рисунке 1.

Рисунок 1.

145ea4672c3a3b14.png

Южный доступ, также известный как обратный PSC, позволяет потребителю создать опубликованную службу в качестве производителя, чтобы обеспечить доступ Looker к локальным конечным точкам, в VPC, к управляемым службам и гибридным службам. Южные соединения могут быть развернуты в любом регионе, независимо от того, где развернут Looker PSC, как показано на рисунке 2.

Рисунок 2.

259493afd914f68b.png

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

  • Требования к сети
  • Создание службы-производителя Private Service Connect
  • Создайте конечную точку Private Service Connect в Looker
  • Установите подключение к локальной базе данных Postgres из Looker с помощью тестового соединения.

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

def88091b42bfe4d.png

2. Что вы будете строить

Вы создадите сеть-производитель, Looker-PSC-Demo, для развертывания внутреннего балансировщика нагрузки TCP-прокси и гибридного NEG, опубликованного как услуга через Private Service Connect (PSC). Чтобы продемонстрировать локальную базу данных, вы развернете локальный демонстрационный VPC, подключенный к VPC Looker-psc-demo с помощью HA-VPN.

Вы выполните следующие действия для проверки доступа к службе Producer:

  • Создайте конечную точку PSC в Looker, связанную с вложением службы производителя.
  • Используйте консоль Looker для проверки подключения к локальной базе данных Postgres.

3. Требования к сети

Ниже приводится разбивка сетевых требований для сети Producer, потребителем в этой кодовой лаборатории является экземпляр Looker PSC.

Компоненты

Описание

VPC (просмотрщик-psc-демо)

Пользовательский режим VPC

VPC (локальная демо-версия)

Пользовательский режим VPC

Подсеть PSC NAT

Пакеты из потребительской сети VPC преобразуются с использованием исходного NAT (SNAT), так что их исходные IP-адреса источника преобразуются в исходные IP-адреса из подсети NAT в сети VPC производителя.

Подсеть правила пересылки PSC

Используется для выделения IP-адреса региональному внутреннему балансировщику нагрузки TCP-прокси.

Подсеть PSC NEG

Используется для выделения IP-адреса для группы конечных точек сети.

Только прокси-подсеть

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

Гибридный НЕГ

Локальные и другие облачные службы рассматриваются как любой другой сервер балансировки нагрузки в облаке. Ключевое отличие состоит в том, что вы используете NEG гибридного подключения для настройки конечных точек этих серверных частей. Конечные точки должны иметь допустимую комбинацию IP:порт, к которой ваш балансировщик нагрузки может подключиться с помощью продуктов гибридного подключения, таких как Cloud VPN или Cloud Interconnect.

Серверная служба

Серверная служба действует как мост между балансировщиком нагрузки и серверными ресурсами. В руководстве серверная служба связана с гибридным NEG.

Облачный маршрутизатор

  • Cloud NAT использует облачные маршрутизаторы для обеспечения возможностей плоскости управления, но не для управления сеансами BGP.
  • Облачный маршрутизатор используется для BGP, установленного для установления HA-VPN между VPC psc-looker-demo и on-prem-demo.

НА-ВПН

HA VPN между сетями Google Cloud VPC . В этой топологии вы можете соединить две сети Google Cloud VPC, используя шлюз HA VPN в каждой сети. Сети VPC могут находиться в одном или нескольких регионах.

Облачный NAT

Используется локальным демо-VPC для выхода в Интернет.

4. Топология Codelab

79aeb28b38f237da.png

5. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как PROJECT_ID ). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта.
  • К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.

В Google Cloud Console щелкните значок Cloud Shell на верхней правой панели инструментов:

55efc1aaa7a4d3ad.png

Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:

7ffe5cbb04455448.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории кода можно выполнять в браузере. Вам не нужно ничего устанавливать.

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

Включить API

В Cloud Shell убедитесь, что идентификатор вашего проекта настроен:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region

Включите все необходимые службы:

gcloud services enable compute.googleapis.com

7. Создайте сеть VPC производителя.

Сеть VPC

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

gcloud compute networks create looker-psc-demo --subnet-mode custom

Создание подсетей

Подсеть PSC будет связана с приложением службы PSC для целей трансляции сетевых адресов.

Внутри Cloud Shell создайте подсеть PSC NAT:

gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

В Cloud Shell создайте подсеть правила переадресации производителя:

gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

Внутри Cloud Shell создайте подсеть только для регионального прокси-сервера производителя:

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=looker-psc-demo \
  --range=10.10.10.0/24

Зарезервируйте IP-адрес балансировщика нагрузки.

Внутри Cloud Shell зарезервируйте внутренний IP-адрес для балансировщика нагрузки:

gcloud compute addresses create hybrid-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

В Cloud Shell просмотрите зарезервированный IP-адрес.

gcloud compute addresses describe hybrid-neg-lb-ip \
  --region=$region | grep -i address:

Пример вывода:

gcloud compute addresses describe hybrid-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Настройка гибридного NEG

Создайте гибридный NEG и установите для параметра –network-endpoint-type значение NON_GCP_PRIVATE_IP_PORT.

Внутри Cloud Shell создайте гибридный NEG, используемый для доступа к локальной базе данных:

gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
    --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
    --network=looker-psc-demo \
    --zone=$zone

В Cloud Shell обновите гибридный NEG, указав IP:порт локальной базы данных, 192.168.10.4 и порт 5432, созданные на следующем этапе руководства:

gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
    --add-endpoint=ip=192.168.10.4,port=5432 \
    --zone=$zone

Создайте региональную проверку работоспособности

Внутри Cloud Shell создайте проверку работоспособности, которая проверяет порт локальной базы данных, 5432:

gcloud compute health-checks create tcp on-prem-5432-healthcheck \
    --region=$region \
    --port=5432

Создайте политику сетевого брандмауэра и правила брандмауэра.

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

gcloud compute network-firewall-policies create looker-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy

Следующее правило брандмауэра разрешает передачу трафика из диапазона подсети PSC NAT во все экземпляры сети.

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

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

8. Создать службу продюсера

Создание компонентов балансировщика нагрузки

Внутри Cloud Shell создайте серверную службу:

gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region

Внутри Cloud Shell добавьте серверную часть Hybrid NEG к внутренней службе:

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --region=$region

В Cloud Shell создайте целевой TCP-прокси для маршрутизации запросов к внутренней службе:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

В следующем синтаксисе создайте правило переадресации (внутренний балансировщик нагрузки TCP-прокси).

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

gcloud compute forwarding-rules create producer-hybrid-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=hybrid-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=5432

Создать служебное приложение

Внутри Cloud Shell создайте вложение службы onpremdatabase1-svc-attachment:

gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

Затем получите и запишите вложение службы, указанное в URI selfLink, начиная с проектов, для настройки конечной точки PSC в Looker.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment

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

gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region

Пример ожидаемого результата:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '2549689544315850024'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr

В Cloud Console перейдите к:

Сетевые службы → Подключение частных служб → Опубликованные службы

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. Установите соединение с конечной точкой PSC в Looker.

В следующем разделе вы свяжете вложение службы Producers с Looker Core PSC с помощью флагов –psc-service-attachment в Cloud Shell для одного домена.

В Cloud Shell создайте ассоциацию psc, обновив следующие параметры в соответствии с вашей средой:

  • INSTANCE_NAME: имя вашего экземпляра Looker (ядро Google Cloud).
  • ДОМЕН_1: onprem.database1.com
  • SERVICE_ATTACHMENT_1: URI, полученный при создании вложения службы, onpremdatabase1-svc-attachment.
  • РЕГИОН: регион, в котором размещен ваш экземпляр Looker (ядро Google Cloud).

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

gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

Пример:

gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region

В Cloud Shell убедитесь, что статус подключения serviceAttachments имеет значение «ACCEPTED», обновите имя экземпляра Looker PSC:

gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json

Пример:

gcloud looker instances describe looker-psc-instance --region=$region --format=json

Пример:

{
  "adminSettings": {},
  "createTime": "2024-08-23T00:00:45.339063195Z",
  "customDomain": {
    "domain": "looker.cosmopup.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/$project/locations/$region/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/$project/global/networks/looker-psc-demo",
      "projects/$project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "onprem.database1.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-09-01T23:15:07.426372901Z"
}

Проверьте конечную точку PSC в Cloud Console.

В Cloud Console вы можете проверить соединение PSC.

В Cloud Console перейдите к:

Looker → Экземпляр Looker → Подробности

2d4684d722d31e4b.png

993cdaf748f4c030.png

Создайте локальную сеть VPC.

Сеть VPC

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

gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom

Создайте подсеть базы данных Postgresql.

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

gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region

Внутри Cloud Shell зарезервируйте внутренний адрес IPv4, используемый для onprem.database1.com, 192.168.10.4:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

Создайте облачный маршрутизатор для локального демонстрационного VPC.

Cloud NAT используется в руководстве для установки пакета программного обеспечения, поскольку экземпляр виртуальной машины не имеет внешнего IP-адреса.

В Cloud Shell создайте Cloud Router, используемый с Cloud NAT и HA-VPN:

gcloud compute routers create on-prem-cr \
   --region=$region \
   --network=on-prem-demo \
   --asn=65002

Внутри Cloud Shell создайте шлюз NAT:

gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region

Создайте тестовый экземпляр базы данных

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

Внутри Cloud Shell создайте экземпляр:

gcloud compute instances create postgres-database \
    --project=$project \
    --zone=$zone \
    --machine-type=e2-medium \
    --subnet=database-subnet \
    --no-address \
    --private-network-ip 192.168.10.4 \
    --image-family debian-12 \
    --image-project debian-cloud  \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

Создайте политику сетевого брандмауэра и правила брандмауэра.

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

gcloud compute network-firewall-policies create on-prem-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy

Чтобы разрешить IAP подключаться к вашим экземплярам виртуальных машин, создайте правило брандмауэра, которое:

  • Применяется ко всем экземплярам виртуальных машин, доступ к которым вы хотите сделать с помощью IAP.
  • Разрешает входящий трафик из диапазона IP 35.235.240.0/20. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP.

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

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

Следующее правило брандмауэра разрешает трафик из диапазона подсети только для прокси-сервера ко всем экземплярам в сети.

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

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp

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

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

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

На следующих шагах вы развернете HA VPN между VPC Looker-psc-demo и VPC on-prem-demo, чтобы продемонстрировать гибридное подключение NEG к onprem.database1.com.

Создайте шлюз HA VPN для Looker-psc-demo.

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

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

gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region

Создайте шлюз высокой доступности VPN для локальной демонстрации.

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

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

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region

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

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

7f1b504616504866.png

Создайте облачный маршрутизатор для Looker-psc-demo.

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

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

Создайте VPN-туннели для Looker-psc-demo.

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

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

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

gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 0

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

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

gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 1

Создайте VPN-туннели для локальной демо-версии.

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

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

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

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
   --interface 0

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

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

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

Проверка создания VPN-туннеля

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

c2fcb340a7614070.png

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

Создайте интерфейс BGP и пиринг для Looker-psc-demo.

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel0 \
    --region $region

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

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region $region

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel1 \
    --region $region

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

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region $region

Создайте интерфейс BGP и пиринг для локальной демонстрационной версии.

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel0-to-looker-psc-demo \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region $region

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

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel0 \
    --interface if-tunnel1-to-looker-psc-demo \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region $region

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel1-to-looker-psc-demo \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region $region

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

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel1\
    --interface if-tunnel2-to-looker-psc-demo \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region $region

Перейдите в раздел «Гибридное подключение» → VPN, чтобы просмотреть сведения о VPN-туннеле.

78ab590317919bf5.png

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

Теперь, когда туннели HA VPN и сеансы BGP установлены, поведением Cloud Router по умолчанию является объявление маршрутов подсети. Просмотрите изученные маршруты Looker-psc-demo.

С помощью консоли перейдите в сеть VPC → Сети VPC → Looker-psc-demo → МАРШРУТЫ → РЕГИОН → ПРОСМОТР.

Обратите внимание, что Looker-psc-demo узнал подсеть базы данных 192.168.10.0/28 из VPC on-prem-demo.

c11a11ed8b0491c8.png

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

Поскольку по умолчанию облачный маршрутизатор объявляет все подсети, подсеть только прокси-сервера объявляется через BGP. Гибридный NEG будет использовать подсеть только прокси-сервера в качестве исходного адреса при обмене данными с сервером onprem.database1.com.

Обратите внимание, что on-prem-demo узнал подсеть только для прокси-сервера 10.10.10.0/24 от Looker-psc-demo.

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

b0073faed026931f.png

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

В следующем разделе вы выполните SSH к виртуальной машине базы данных postgres с помощью Cloud Shell.

Внутри Cloud Shell выполните подключение по протоколу SSH к экземпляру базы данных postgres**:**

 gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

Внутри ОС определите и запишите IP-адрес (ens4) экземпляра базы данных postgres:

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 noprefixroute 
       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:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 192.168.10.4/32 metric 100 scope global dynamic ens4
       valid_lft 66779sec preferred_lft 66779sec
    inet6 fe80::4001:c0ff:fea8:a04/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 (192.168.10.4) и подсеть только для прокси-сервера (10.10.10.0/24) в файл pg_hba.conf в разделе локальных подключений IPv4.

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

На скриншоте ниже показано завершенное обновление: eaff2ed6d27fa7cc.png

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

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

До:

65e0b1074dc48644.png

После:

14a0d1fa5455e23e.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 Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
    Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 20486 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

13. Создайте базу данных Postgres.

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

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

sudo -u postgres psql postgres

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

create database postgres_looker;

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

\l

Внутри ОС создайте пользователя postgres_looker с паролем postgreslooker:

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

Exit from the OS, returning you to cloud shell:

\q

Пример:

user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
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 table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q

14. Интегрируйте Looker с базой данных Postgres Postgres.

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

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

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

5900fdf0b698cbfc.png

Теперь соединение настроено

4817157fd3b1277e.png

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

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

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

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

В ОС создайте фильтр TCPDUMP с подсетью только для прокси 10.10.10.0/24.

sudo tcpdump -i any net 10.10.10.0/24 -nn

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

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

774f9313ece41034.png

Очистить

Удаление компонентов лаборатории из одного терминала Cloud Shell

gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-hybrid-neg-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete producer-backend-svc --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy  --name=looker-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q

gcloud compute routers nats delete on-prem-nat --router=on-prem-cr --router-region=$region -q

gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q

gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q

gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q

gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q

gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q

gcloud compute instances delete postgres-database --zone=$zone -q

gcloud compute addresses delete on-prem-database1-ip --region=$region -q

gcloud compute networks subnets delete database-subnet --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy  --name=on-prem-demo --global-firewall-policy -q

gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks delete on-prem-demo -q

gcloud compute networks delete looker-psc-demo -q

16. Поздравления

Поздравляем, вы успешно настроили и проверили подключение к локальной базе данных через HA-VPN с помощью консоли Looker на базе Private Service Connect.

Вы создали инфраструктуру производителя, узнали, как создать гибридную NEG, службу производителя и конечную точку Looker PSC, которая позволяла бы подключаться к службе источника.

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

c911c127bffdee57.jpeg

Что дальше?

Посмотрите некоторые из этих кодовых лабораторий...

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

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

,

1. Введение

В этой лабораторной работе вы выполните южное подключение к локальной базе данных Postgres через H-VPN с использованием внутреннего балансировщика нагрузки TCP-прокси и группы конечных точек гибридной сети, вызываемой из Looker PSC в качестве потребителя службы.

Private Service Connect — это возможность сети Google Cloud, которая позволяет потребителям получать частный доступ к управляемым сервисам изнутри своей сети VPC. Аналогичным образом, это позволяет производителям управляемых услуг размещать эти услуги в своих собственных отдельных сетях VPC и предлагать своим потребителям частное соединение. Например, когда вы используете Private Service Connect для доступа к Looker, вы являетесь потребителем услуги, а Google — производителем услуги, как показано на рисунке 1.

Рисунок 1.

145ea4672c3a3b14.png

Южный доступ, также известный как обратный PSC, позволяет потребителю создать опубликованную службу в качестве производителя, чтобы обеспечить доступ Looker к локальным конечным точкам, в VPC, к управляемым службам и гибридным службам. Южные соединения могут быть развернуты в любом регионе, независимо от того, где развернут Looker PSC, как показано на рисунке 2.

Рисунок 2.

259493afd914f68b.png

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

  • Требования к сети
  • Создание службы-производителя Private Service Connect
  • Создайте конечную точку Private Service Connect в Looker
  • Установите подключение к локальной базе данных Postgres из Looker с помощью тестового соединения.

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

def88091b42bfe4d.png

2. Что вы будете строить

Вы создадите сеть-производитель, Looker-PSC-Demo, для развертывания внутреннего балансировщика нагрузки TCP-прокси и гибридного NEG, опубликованного как услуга через Private Service Connect (PSC). Чтобы продемонстрировать локальную базу данных, вы развернете локальный демонстрационный VPC, подключенный к VPC Looker-psc-demo с помощью HA-VPN.

Вы выполните следующие действия для проверки доступа к службе Producer:

  • Создайте конечную точку PSC в Looker, связанную с вложением службы производителя.
  • Используйте консоль Looker для проверки подключения к локальной базе данных Postgres.

3. Требования к сети

Ниже приводится разбивка сетевых требований для сети Producer, потребителем в этой кодовой лаборатории является экземпляр Looker PSC.

Компоненты

Описание

VPC (просмотрщик-psc-демо)

Пользовательский режим VPC

VPC (локальная демо-версия)

Пользовательский режим VPC

Подсеть PSC NAT

Пакеты из потребительской сети VPC преобразуются с использованием исходного NAT (SNAT), так что их исходные IP-адреса источника преобразуются в исходные IP-адреса из подсети NAT в сети VPC производителя.

Подсеть правила пересылки PSC

Используется для выделения IP-адреса региональному внутреннему балансировщику нагрузки TCP-прокси.

Подсеть PSC NEG

Используется для выделения IP-адреса для группы конечных точек сети.

Только прокси-подсеть

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

Гибридный НЕГ

Локальные и другие облачные службы рассматриваются как любой другой сервер балансировки нагрузки в облаке. Ключевое отличие состоит в том, что вы используете NEG гибридного подключения для настройки конечных точек этих серверных частей. Конечные точки должны иметь допустимую комбинацию IP:порт, к которой ваш балансировщик нагрузки может подключиться с помощью продуктов гибридного подключения, таких как Cloud VPN или Cloud Interconnect.

Серверная служба

Серверная служба действует как мост между балансировщиком нагрузки и серверными ресурсами. В руководстве серверная служба связана с гибридным NEG.

Облачный маршрутизатор

  • Cloud NAT использует облачные маршрутизаторы для обеспечения возможностей плоскости управления, но не для управления сеансами BGP.
  • Облачный маршрутизатор используется для BGP, установленного для установления HA-VPN между VPC psc-looker-demo и on-prem-demo.

НА-ВПН

HA VPN между сетями Google Cloud VPC . В этой топологии вы можете соединить две сети Google Cloud VPC, используя шлюз HA VPN в каждой сети. Сети VPC могут находиться в одном или нескольких регионах.

Облачный NAT

Используется локальным демо-VPC для выхода в Интернет.

4. Топология Codelab

79aeb28b38f237da.png

5. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как PROJECT_ID ). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта.
  • К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.

В Google Cloud Console щелкните значок Cloud Shell на верхней правой панели инструментов:

55efc1aaa7a4d3ad.png

Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:

7ffe5cbb04455448.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории кода можно выполнять в браузере. Вам не нужно ничего устанавливать.

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

Включить API

В Cloud Shell убедитесь, что идентификатор вашего проекта настроен:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region

Включите все необходимые службы:

gcloud services enable compute.googleapis.com

7. Создайте сеть VPC производителя.

Сеть VPC

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

gcloud compute networks create looker-psc-demo --subnet-mode custom

Создание подсетей

Подсеть PSC будет связана с приложением службы PSC для целей трансляции сетевых адресов.

Внутри Cloud Shell создайте подсеть PSC NAT:

gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

В Cloud Shell создайте подсеть правила переадресации производителя:

gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

Внутри Cloud Shell создайте подсеть только для регионального прокси-сервера производителя:

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=looker-psc-demo \
  --range=10.10.10.0/24

Зарезервируйте IP-адрес балансировщика нагрузки.

Внутри Cloud Shell зарезервируйте внутренний IP-адрес для балансировщика нагрузки:

gcloud compute addresses create hybrid-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

В Cloud Shell просмотрите зарезервированный IP-адрес.

gcloud compute addresses describe hybrid-neg-lb-ip \
  --region=$region | grep -i address:

Пример вывода:

gcloud compute addresses describe hybrid-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Настройка гибридного NEG

Создайте гибридный NEG и установите для параметра –network-endpoint-type значение NON_GCP_PRIVATE_IP_PORT.

Внутри Cloud Shell создайте гибридный NEG, используемый для доступа к локальной базе данных:

gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
    --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
    --network=looker-psc-demo \
    --zone=$zone

В Cloud Shell обновите гибридный NEG, указав IP:порт локальной базы данных, 192.168.10.4 и порт 5432, созданные на следующем этапе руководства:

gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
    --add-endpoint=ip=192.168.10.4,port=5432 \
    --zone=$zone

Создайте региональную проверку работоспособности

Внутри Cloud Shell создайте проверку работоспособности, которая проверяет порт локальной базы данных, 5432:

gcloud compute health-checks create tcp on-prem-5432-healthcheck \
    --region=$region \
    --port=5432

Создайте политику сетевого брандмауэра и правила брандмауэра.

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

gcloud compute network-firewall-policies create looker-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy

Следующее правило брандмауэра разрешает передачу трафика из диапазона подсети PSC NAT во все экземпляры сети.

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

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

8. Создать службу продюсера

Создание компонентов балансировщика нагрузки

Внутри Cloud Shell создайте серверную службу:

gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region

Внутри Cloud Shell добавьте серверную часть Hybrid NEG к внутренней службе:

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --region=$region

В Cloud Shell создайте целевой TCP-прокси для маршрутизации запросов к внутренней службе:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

В следующем синтаксисе создайте правило переадресации (внутренний балансировщик нагрузки TCP-прокси).

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

gcloud compute forwarding-rules create producer-hybrid-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=hybrid-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=5432

Создать служебное приложение

Внутри Cloud Shell создайте вложение службы onpremdatabase1-svc-attachment:

gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

Затем получите и запишите вложение службы, указанное в URI selfLink, начиная с проектов, для настройки конечной точки PSC в Looker.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment

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

gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region

Пример ожидаемого результата:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '2549689544315850024'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr

В Cloud Console перейдите к:

Сетевые службы → Подключение частных служб → Опубликованные службы

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. Установите соединение с конечной точкой PSC в Looker.

В следующем разделе вы свяжете вложение службы Producers с Looker Core PSC с помощью флагов –psc-service-attachment в Cloud Shell для одного домена.

В Cloud Shell создайте ассоциацию psc, обновив следующие параметры в соответствии с вашей средой:

  • INSTANCE_NAME: имя вашего экземпляра Looker (ядро Google Cloud).
  • ДОМЕН_1: onprem.database1.com
  • SERVICE_ATTACHMENT_1: URI, полученный при создании вложения службы, onpremdatabase1-svc-attachment.
  • РЕГИОН: регион, в котором размещен ваш экземпляр Looker (ядро Google Cloud).

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

gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

Пример:

gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region

В Cloud Shell убедитесь, что статус подключения serviceAttachments имеет значение «ACCEPTED», обновите имя экземпляра Looker PSC:

gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json

Пример:

gcloud looker instances describe looker-psc-instance --region=$region --format=json

Пример:

{
  "adminSettings": {},
  "createTime": "2024-08-23T00:00:45.339063195Z",
  "customDomain": {
    "domain": "looker.cosmopup.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/$project/locations/$region/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/$project/global/networks/looker-psc-demo",
      "projects/$project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "onprem.database1.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-09-01T23:15:07.426372901Z"
}

Проверьте конечную точку PSC в Cloud Console.

В Cloud Console вы можете проверить соединение PSC.

В Cloud Console перейдите к:

Looker → Экземпляр Looker → Подробности

2d4684d722d31e4b.png

993cdaf748f4c030.png

Создайте локальную сеть VPC.

Сеть VPC

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

gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom

Создайте подсеть базы данных Postgresql.

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

gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region

Внутри Cloud Shell зарезервируйте внутренний адрес IPv4, используемый для onprem.database1.com, 192.168.10.4:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

Создайте облачный маршрутизатор для локального демонстрационного VPC.

Cloud NAT используется в руководстве для установки пакета программного обеспечения, поскольку экземпляр виртуальной машины не имеет внешнего IP-адреса.

В Cloud Shell создайте Cloud Router, используемый с Cloud NAT и HA-VPN:

gcloud compute routers create on-prem-cr \
   --region=$region \
   --network=on-prem-demo \
   --asn=65002

Внутри Cloud Shell создайте шлюз NAT:

gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region

Создайте тестовый экземпляр базы данных

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

Внутри Cloud Shell создайте экземпляр:

gcloud compute instances create postgres-database \
    --project=$project \
    --zone=$zone \
    --machine-type=e2-medium \
    --subnet=database-subnet \
    --no-address \
    --private-network-ip 192.168.10.4 \
    --image-family debian-12 \
    --image-project debian-cloud  \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

Создайте политику сетевого брандмауэра и правила брандмауэра.

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

gcloud compute network-firewall-policies create on-prem-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy

Чтобы разрешить IAP подключаться к вашим экземплярам виртуальных машин, создайте правило брандмауэра, которое:

  • Применяется ко всем экземплярам виртуальных машин, доступ к которым вы хотите сделать с помощью IAP.
  • Разрешает входящий трафик из диапазона IP 35.235.240.0/20. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP.

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

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

Следующее правило брандмауэра разрешает трафик из диапазона подсети только для прокси-сервера ко всем экземплярам в сети.

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

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp

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

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

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

На следующих шагах вы развернете HA VPN между VPC Looker-psc-demo и VPC on-prem-demo, чтобы продемонстрировать гибридное подключение NEG к onprem.database1.com.

Создайте шлюз HA VPN для Looker-psc-demo.

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

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

gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region

Создайте шлюз высокой доступности VPN для локальной демонстрации.

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

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

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region

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

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

7f1b504616504866.png

Создайте облачный маршрутизатор для Looker-psc-demo.

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

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

Создайте VPN-туннели для Looker-psc-demo.

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

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

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

gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 0

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

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

gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 1

Создайте VPN-туннели для локальной демо-версии.

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

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

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

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
   --interface 0

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

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

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

Проверка создания VPN-туннеля

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

c2fcb340a7614070.png

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

Создайте интерфейс BGP и пиринг для Looker-psc-demo.

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel0 \
    --region $region

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

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region $region

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel1 \
    --region $region

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

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region $region

Создайте интерфейс BGP и пиринг для локальной демонстрационной версии.

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel0-to-looker-psc-demo \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region $region

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

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel0 \
    --interface if-tunnel1-to-looker-psc-demo \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region $region

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel1-to-looker-psc-demo \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region $region

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

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel1\
    --interface if-tunnel2-to-looker-psc-demo \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region $region

Перейдите в раздел «Гибридное подключение» → VPN, чтобы просмотреть сведения о VPN-туннеле.

78ab590317919bf5.png

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

Теперь, когда туннели HA VPN и сеансы BGP установлены, поведением Cloud Router по умолчанию является объявление маршрутов подсети. Просмотрите изученные маршруты Looker-psc-demo.

С помощью консоли перейдите в сеть VPC → Сети VPC → Looker-psc-demo → МАРШРУТЫ → РЕГИОН → ПРОСМОТР.

Обратите внимание, что Looker-psc-demo узнал подсеть базы данных 192.168.10.0/28 из VPC on-prem-demo.

c11a11ed8b0491c8.png

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

Поскольку по умолчанию облачный маршрутизатор объявляет все подсети, подсеть только прокси-сервера объявляется через BGP. Гибридный NEG будет использовать подсеть только прокси-сервера в качестве исходного адреса при обмене данными с сервером onprem.database1.com.

Обратите внимание, что on-prem-demo узнал подсеть только для прокси-сервера 10.10.10.0/24 от Looker-psc-demo.

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

b0073faed026931f.png

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

В следующем разделе вы выполните SSH к виртуальной машине базы данных postgres с помощью Cloud Shell.

Внутри Cloud Shell выполните подключение по протоколу SSH к экземпляру базы данных postgres**:**

 gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

Внутри ОС определите и запишите IP-адрес (ens4) экземпляра базы данных postgres:

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 noprefixroute 
       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:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 192.168.10.4/32 metric 100 scope global dynamic ens4
       valid_lft 66779sec preferred_lft 66779sec
    inet6 fe80::4001:c0ff:fea8:a04/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 (192.168.10.4) и подсеть только для прокси-сервера (10.10.10.0/24) в файл pg_hba.conf в разделе локальных подключений IPv4.

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

На скриншоте ниже показано завершенное обновление: eaff2ed6d27fa7cc.png

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

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

До:

65e0b1074dc48644.png

После:

14a0d1fa5455e23e.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 Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
    Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 20486 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

13. Создайте базу данных Postgres.

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

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

sudo -u postgres psql postgres

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

create database postgres_looker;

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

\l

Внутри ОС создайте пользователя postgres_looker с паролем postgreslooker:

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

Exit from the OS, returning you to cloud shell:

\q

Пример:

user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
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 table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q

14. Интегрируйте Looker с базой данных Postgres Postgres.

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

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

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

5900fdf0b698cbfc.png

Теперь соединение настроено

4817157fd3b1277e.png

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

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

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

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

В ОС создайте фильтр TCPDUMP с подсетью только для прокси 10.10.10.0/24.

sudo tcpdump -i any net 10.10.10.0/24 -nn

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

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

774f9313ece41034.png

Очистить

Удаление компонентов лаборатории из одного терминала Cloud Shell

gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-hybrid-neg-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete producer-backend-svc --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy  --name=looker-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q

gcloud compute routers nats delete on-prem-nat --router=on-prem-cr --router-region=$region -q

gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q

gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q

gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q

gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q

gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q

gcloud compute instances delete postgres-database --zone=$zone -q

gcloud compute addresses delete on-prem-database1-ip --region=$region -q

gcloud compute networks subnets delete database-subnet --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy  --name=on-prem-demo --global-firewall-policy -q

gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks delete on-prem-demo -q

gcloud compute networks delete looker-psc-demo -q

16. Поздравления

Поздравляем, вы успешно настроили и проверили подключение к локальной базе данных через HA-VPN с помощью консоли Looker на базе Private Service Connect.

Вы создали инфраструктуру производителя, узнали, как создать гибридную NEG, службу производителя и конечную точку Looker PSC, которая позволяла бы подключаться к службе источника.

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

c911c127bffdee57.jpeg

Что дальше?

Посмотрите некоторые из этих кодовых лабораторий...

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

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

,

1. Введение

В этой лабораторной работе вы выполните южное подключение к локальной базе данных Postgres через H-VPN с использованием внутреннего балансировщика нагрузки TCP-прокси и группы конечных точек гибридной сети, вызываемой из Looker PSC в качестве потребителя службы.

Private Service Connect — это возможность сети Google Cloud, которая позволяет потребителям получать частный доступ к управляемым сервисам изнутри своей сети VPC. Аналогичным образом, это позволяет производителям управляемых услуг размещать эти услуги в своих собственных отдельных сетях VPC и предлагать своим потребителям частное соединение. Например, когда вы используете Private Service Connect для доступа к Looker, вы являетесь потребителем услуги, а Google — производителем услуги, как показано на рисунке 1.

Рисунок 1.

145ea4672c3a3b14.png

Южный доступ, также известный как обратный PSC, позволяет потребителю создать опубликованную службу в качестве производителя, чтобы обеспечить доступ Looker к локальным конечным точкам, в VPC, к управляемым службам и гибридным службам. Южные соединения могут быть развернуты в любом регионе, независимо от того, где развернут Looker PSC, как показано на рисунке 2.

Рисунок 2.

259493afd914f68b.png

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

  • Требования к сети
  • Создание службы-производителя Private Service Connect
  • Создайте конечную точку Private Service Connect в Looker
  • Установите подключение к локальной базе данных Postgres из Looker с помощью тестового соединения.

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

def88091b42bfe4d.png

2. Что вы будете строить

Вы создадите сеть-производитель, Looker-PSC-Demo, для развертывания внутреннего балансировщика нагрузки TCP-прокси и гибридного NEG, опубликованного как услуга через Private Service Connect (PSC). Чтобы продемонстрировать локальную базу данных, вы развернете локальный демонстрационный VPC, подключенный к VPC Looker-psc-demo с помощью HA-VPN.

Вы выполните следующие действия для проверки доступа к службе Producer:

  • Создайте конечную точку PSC в Looker, связанную с вложением службы производителя.
  • Используйте консоль Looker для проверки подключения к локальной базе данных Postgres.

3. Требования к сети

Ниже приводится разбивка сетевых требований для сети Producer, потребителем в этой кодовой лаборатории является экземпляр Looker PSC.

Компоненты

Описание

VPC (просмотрщик-psc-демо)

Пользовательский режим VPC

VPC (локальная демо-версия)

Пользовательский режим VPC

Подсеть PSC NAT

Пакеты из потребительской сети VPC преобразуются с использованием исходного NAT (SNAT), так что их исходные IP-адреса источника преобразуются в исходные IP-адреса из подсети NAT в сети VPC производителя.

Подсеть правила пересылки PSC

Используется для выделения IP-адреса региональному внутреннему балансировщику нагрузки TCP-прокси.

Подсеть PSC NEG

Используется для выделения IP-адреса для группы конечных точек сети.

Только прокси-подсеть

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

Гибридный НЕГ

Локальные и другие облачные службы рассматриваются как любой другой сервер балансировки нагрузки в облаке. Ключевое отличие состоит в том, что вы используете NEG гибридного подключения для настройки конечных точек этих серверных частей. Конечные точки должны иметь допустимую комбинацию IP:порт, к которой ваш балансировщик нагрузки может подключиться с помощью продуктов гибридного подключения, таких как Cloud VPN или Cloud Interconnect.

Серверная служба

Серверная служба действует как мост между балансировщиком нагрузки и серверными ресурсами. В руководстве серверная служба связана с гибридным NEG.

Облачный маршрутизатор

  • Cloud NAT использует облачные маршрутизаторы для обеспечения возможностей плоскости управления, но не для управления сеансами BGP.
  • Облачный маршрутизатор используется для BGP, установленного для установления HA-VPN между VPC psc-looker-demo и on-prem-demo.

НА-ВПН

HA VPN между сетями Google Cloud VPC . В этой топологии вы можете соединить две сети Google Cloud VPC, используя шлюз HA VPN в каждой сети. Сети VPC могут находиться в одном или нескольких регионах.

Облачный NAT

Используется локальным демо-VPC для выхода в Интернет.

4. Топология Codelab

79aeb28b38f237da.png

5. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как PROJECT_ID ). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта.
  • К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.

В Google Cloud Console щелкните значок Cloud Shell на верхней правой панели инструментов:

55efc1aaa7a4d3ad.png

Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:

7ffe5cbb04455448.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории кода можно выполнять в браузере. Вам не нужно ничего устанавливать.

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

Включить API

В Cloud Shell убедитесь, что идентификатор вашего проекта настроен:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region

Включите все необходимые службы:

gcloud services enable compute.googleapis.com

7. Создайте сеть VPC производителя.

Сеть VPC

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

gcloud compute networks create looker-psc-demo --subnet-mode custom

Создание подсетей

Подсеть PSC будет связана с приложением службы PSC для целей трансляции сетевых адресов.

Внутри Cloud Shell создайте подсеть PSC NAT:

gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

В Cloud Shell создайте подсеть правила переадресации производителя:

gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

Внутри Cloud Shell создайте подсеть только для регионального прокси-сервера производителя:

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=looker-psc-demo \
  --range=10.10.10.0/24

Зарезервируйте IP-адрес балансировщика нагрузки.

Внутри Cloud Shell зарезервируйте внутренний IP-адрес для балансировщика нагрузки:

gcloud compute addresses create hybrid-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

В Cloud Shell просмотрите зарезервированный IP-адрес.

gcloud compute addresses describe hybrid-neg-lb-ip \
  --region=$region | grep -i address:

Пример вывода:

gcloud compute addresses describe hybrid-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Настройка гибридного NEG

Создайте гибридный NEG и установите для параметра –network-endpoint-type значение NON_GCP_PRIVATE_IP_PORT.

Внутри Cloud Shell создайте гибридный NEG, используемый для доступа к локальной базе данных:

gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
    --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
    --network=looker-psc-demo \
    --zone=$zone

В Cloud Shell обновите гибридный NEG, указав IP:порт локальной базы данных, 192.168.10.4 и порт 5432, созданные на следующем этапе руководства:

gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
    --add-endpoint=ip=192.168.10.4,port=5432 \
    --zone=$zone

Создайте региональную проверку работоспособности

Внутри Cloud Shell создайте проверку работоспособности, которая проверяет порт локальной базы данных, 5432:

gcloud compute health-checks create tcp on-prem-5432-healthcheck \
    --region=$region \
    --port=5432

Создайте политику сетевого брандмауэра и правила брандмауэра.

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

gcloud compute network-firewall-policies create looker-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy

Следующее правило брандмауэра разрешает передачу трафика из диапазона подсети PSC NAT во все экземпляры сети.

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

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

8. Создать службу продюсера

Создание компонентов балансировщика нагрузки

Внутри Cloud Shell создайте серверную службу:

gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region

Внутри Cloud Shell добавьте серверную часть Hybrid NEG к внутренней службе:

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --region=$region

В Cloud Shell создайте целевой TCP-прокси для маршрутизации запросов к внутренней службе:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

В следующем синтаксисе создайте правило переадресации (внутренний балансировщик нагрузки TCP-прокси).

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

gcloud compute forwarding-rules create producer-hybrid-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=hybrid-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=5432

Создать служебное приложение

Внутри Cloud Shell создайте вложение службы onpremdatabase1-svc-attachment:

gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

Затем получите и запишите вложение службы, указанное в URI selfLink, начиная с проектов, для настройки конечной точки PSC в Looker.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment

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

gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region

Пример ожидаемого результата:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '2549689544315850024'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr

В Cloud Console перейдите к:

Сетевые службы → Подключение частных служб → Опубликованные службы

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. Установите соединение с конечной точкой PSC в Looker.

В следующем разделе вы свяжете вложение службы Producers с Looker Core PSC с помощью флагов –psc-service-attachment в Cloud Shell для одного домена.

В Cloud Shell создайте ассоциацию psc, обновив следующие параметры в соответствии с вашей средой:

  • INSTANCE_NAME: имя вашего экземпляра Looker (ядро Google Cloud).
  • ДОМЕН_1: onprem.database1.com
  • SERVICE_ATTACHMENT_1: URI, полученный при создании вложения службы, onpremdatabase1-svc-attachment.
  • РЕГИОН: регион, в котором размещен ваш экземпляр Looker (ядро Google Cloud).

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

gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

Пример:

gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region

В Cloud Shell убедитесь, что статус подключения serviceAttachments имеет значение «ACCEPTED», обновите имя экземпляра Looker PSC:

gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json

Пример:

gcloud looker instances describe looker-psc-instance --region=$region --format=json

Пример:

{
  "adminSettings": {},
  "createTime": "2024-08-23T00:00:45.339063195Z",
  "customDomain": {
    "domain": "looker.cosmopup.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/$project/locations/$region/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/$project/global/networks/looker-psc-demo",
      "projects/$project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "onprem.database1.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-09-01T23:15:07.426372901Z"
}

Проверьте конечную точку PSC в Cloud Console.

В Cloud Console вы можете проверить соединение PSC.

В Cloud Console перейдите к:

Looker → Экземпляр Looker → Подробности

2d4684d722d31e4b.png

993cdaf748f4c030.png

Создайте локальную сеть VPC.

Сеть VPC

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

gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom

Создайте подсеть базы данных Postgresql.

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

gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region

Внутри Cloud Shell зарезервируйте внутренний адрес IPv4, используемый для onprem.database1.com, 192.168.10.4:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

Создайте облачный маршрутизатор для локального демонстрационного VPC.

Cloud NAT используется в руководстве для установки пакета программного обеспечения, поскольку экземпляр виртуальной машины не имеет внешнего IP-адреса.

В Cloud Shell создайте Cloud Router, используемый с Cloud NAT и HA-VPN:

gcloud compute routers create on-prem-cr \
   --region=$region \
   --network=on-prem-demo \
   --asn=65002

Внутри Cloud Shell создайте шлюз NAT:

gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region

Создайте тестовый экземпляр базы данных

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

Внутри Cloud Shell создайте экземпляр:

gcloud compute instances create postgres-database \
    --project=$project \
    --zone=$zone \
    --machine-type=e2-medium \
    --subnet=database-subnet \
    --no-address \
    --private-network-ip 192.168.10.4 \
    --image-family debian-12 \
    --image-project debian-cloud  \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

Создайте политику сетевого брандмауэра и правила брандмауэра.

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

gcloud compute network-firewall-policies create on-prem-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy

Чтобы разрешить IAP подключаться к вашим экземплярам виртуальных машин, создайте правило брандмауэра, которое:

  • Применяется ко всем экземплярам виртуальных машин, доступ к которым вы хотите сделать с помощью IAP.
  • Разрешает входящий трафик из диапазона IP 35.235.240.0/20. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP.

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

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

Следующее правило брандмауэра разрешает трафик из диапазона подсети только для прокси-сервера ко всем экземплярам в сети.

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

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp

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

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

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

На следующих шагах вы развернете HA VPN между VPC Looker-psc-demo и VPC on-prem-demo, чтобы продемонстрировать гибридное подключение NEG к onprem.database1.com.

Создайте шлюз HA VPN для Looker-psc-demo.

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

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

gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region

Создайте шлюз высокой доступности VPN для локальной демонстрации.

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

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

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region

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

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

7f1b504616504866.png

Создайте облачный маршрутизатор для Looker-psc-demo.

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

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

Создайте VPN-туннели для Looker-psc-demo.

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

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

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

gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 0

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

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

gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 1

Создайте VPN-туннели для локальной демо-версии.

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

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

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

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
   --interface 0

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

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

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

Проверка создания VPN-туннеля

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

c2fcb340a7614070.png

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

Создайте интерфейс BGP и пиринг для Looker-psc-demo.

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel0 \
    --region $region

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

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region $region

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel1 \
    --region $region

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

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region $region

Создайте интерфейс BGP и пиринг для локальной демонстрационной версии.

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel0-to-looker-psc-demo \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region $region

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

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel0 \
    --interface if-tunnel1-to-looker-psc-demo \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region $region

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel1-to-looker-psc-demo \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region $region

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

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel1\
    --interface if-tunnel2-to-looker-psc-demo \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region $region

Перейдите в раздел «Гибридное подключение» → VPN, чтобы просмотреть сведения о VPN-туннеле.

78ab590317919bf5.png

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

Теперь, когда туннели HA VPN и сеансы BGP установлены, поведением Cloud Router по умолчанию является объявление маршрутов подсети. Просмотрите изученные маршруты Looker-psc-demo.

С помощью консоли перейдите в сеть VPC → Сети VPC → Looker-psc-demo → МАРШРУТЫ → РЕГИОН → ПРОСМОТР.

Обратите внимание, что Looker-psc-demo узнал подсеть базы данных 192.168.10.0/28 из VPC on-prem-demo.

c11a11ed8b0491c8.png

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

Поскольку по умолчанию облачный маршрутизатор объявляет все подсети, подсеть только прокси-сервера объявляется через BGP. Гибридный NEG будет использовать подсеть только прокси-сервера в качестве исходного адреса при обмене данными с сервером onprem.database1.com.

Обратите внимание, что on-prem-demo узнал подсеть только для прокси-сервера 10.10.10.0/24 от Looker-psc-demo.

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

b0073faed026931f.png

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

В следующем разделе вы выполните SSH к виртуальной машине базы данных postgres с помощью Cloud Shell.

Внутри Cloud Shell выполните подключение по протоколу SSH к экземпляру базы данных postgres**:**

 gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

Внутри ОС определите и запишите IP-адрес (ens4) экземпляра базы данных postgres:

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 noprefixroute 
       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:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 192.168.10.4/32 metric 100 scope global dynamic ens4
       valid_lft 66779sec preferred_lft 66779sec
    inet6 fe80::4001:c0ff:fea8:a04/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 (192.168.10.4) и подсеть только для прокси-сервера (10.10.10.0/24) в файл pg_hba.conf в разделе локальных подключений IPv4.

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

На скриншоте ниже показано завершенное обновление: eaff2ed6d27fa7cc.png

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

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

До:

65e0b1074dc48644.png

После:

14a0d1fa5455e23e.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 Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
    Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 20486 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

13. Создайте базу данных Postgres.

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

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

sudo -u postgres psql postgres

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

create database postgres_looker;

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

\l

Внутри ОС создайте пользователя postgres_looker с паролем postgreslooker:

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

Exit from the OS, returning you to cloud shell:

\q

Пример:

user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
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 table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q

14. Интегрируйте Looker с базой данных Postgres Postgres.

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

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

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

5900fdf0b698cbfc.png

Теперь соединение настроено

4817157fd3b1277e.png

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

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

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

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

В ОС создайте фильтр TCPDUMP с подсетью только для прокси 10.10.10.0/24.

sudo tcpdump -i any net 10.10.10.0/24 -nn

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

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

774f9313ece41034.png

Очистить

Удаление компонентов лаборатории из одного терминала Cloud Shell

gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-hybrid-neg-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete producer-backend-svc --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy  --name=looker-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q

gcloud compute routers nats delete on-prem-nat --router=on-prem-cr --router-region=$region -q

gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q

gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q

gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q

gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q

gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q

gcloud compute instances delete postgres-database --zone=$zone -q

gcloud compute addresses delete on-prem-database1-ip --region=$region -q

gcloud compute networks subnets delete database-subnet --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy  --name=on-prem-demo --global-firewall-policy -q

gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks delete on-prem-demo -q

gcloud compute networks delete looker-psc-demo -q

16. Поздравления

Поздравляем, вы успешно настроили и проверили подключение к локальной базе данных через HA-VPN с помощью консоли Looker на базе Private Service Connect.

Вы создали инфраструктуру производителя, узнали, как создать гибридную NEG, службу производителя и конечную точку Looker PSC, которая позволяла бы подключаться к службе источника.

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

c911c127bffdee57.jpeg

Что дальше?

Посмотрите некоторые из этих кодовых лабораторий...

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

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

,

1. Введение

В этой лабораторной работе вы выполните южное подключение к локальной базе данных Postgres через H-VPN с использованием внутреннего балансировщика нагрузки TCP-прокси и группы конечных точек гибридной сети, вызываемой из Looker PSC в качестве потребителя службы.

Private Service Connect — это возможность сети Google Cloud, которая позволяет потребителям получать частный доступ к управляемым сервисам изнутри своей сети VPC. Аналогичным образом, это позволяет производителям управляемых услуг размещать эти услуги в своих собственных отдельных сетях VPC и предлагать своим потребителям частное соединение. Например, когда вы используете Private Service Connect для доступа к Looker, вы являетесь потребителем услуги, а Google — производителем услуги, как показано на рисунке 1.

Рисунок 1.

145ea4672c3a3b14.png

Южный доступ, также известный как обратный PSC, позволяет потребителю создать опубликованную службу в качестве производителя, чтобы обеспечить доступ Looker к локальным конечным точкам, в VPC, к управляемым службам и гибридным службам. Южные соединения могут быть развернуты в любом регионе, независимо от того, где развернут Looker PSC, как показано на рисунке 2.

Рисунок 2.

259493afd914f68b.png

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

  • Требования к сети
  • Создание службы-производителя Private Service Connect
  • Создайте конечную точку Private Service Connect в Looker
  • Установите подключение к локальной базе данных Postgres из Looker с помощью тестового соединения.

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

def88091b42bfe4d.png

2. Что вы будете строить

Вы создадите сеть-производитель, Looker-PSC-Demo, для развертывания внутреннего балансировщика нагрузки TCP-прокси и гибридного NEG, опубликованного как услуга через Private Service Connect (PSC). Чтобы продемонстрировать локальную базу данных, вы развернете локальный демонстрационный VPC, подключенный к VPC Looker-psc-demo с помощью HA-VPN.

Вы выполните следующие действия для проверки доступа к службе Producer:

  • Создайте конечную точку PSC в Looker, связанную с вложением службы производителя.
  • Используйте консоль Looker для проверки подключения к локальной базе данных Postgres.

3. Требования к сети

Ниже приводится разбивка сетевых требований для сети Producer, потребителем в этой кодовой лаборатории является экземпляр Looker PSC.

Компоненты

Описание

VPC (просмотрщик-psc-демо)

Пользовательский режим VPC

VPC (локальная демо-версия)

Пользовательский режим VPC

Подсеть PSC NAT

Пакеты из потребительской сети VPC преобразуются с использованием исходного NAT (SNAT), так что их исходные IP-адреса источника преобразуются в исходные IP-адреса из подсети NAT в сети VPC производителя.

Подсеть правила пересылки PSC

Используется для выделения IP-адреса региональному внутреннему балансировщику нагрузки TCP-прокси.

Подсеть PSC NEG

Используется для выделения IP-адреса для группы конечных точек сети.

Только прокси-подсеть

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

Гибридный НЕГ

Локальные и другие облачные службы рассматриваются как любой другой сервер балансировки нагрузки в облаке. Ключевое отличие состоит в том, что вы используете NEG гибридного подключения для настройки конечных точек этих серверных частей. Конечные точки должны иметь допустимую комбинацию IP:порт, к которой ваш балансировщик нагрузки может подключиться с помощью продуктов гибридного подключения, таких как Cloud VPN или Cloud Interconnect.

Серверная служба

Серверная служба действует как мост между балансировщиком нагрузки и серверными ресурсами. В руководстве серверная служба связана с гибридным NEG.

Облачный маршрутизатор

  • Cloud NAT использует облачные маршрутизаторы для обеспечения возможностей плоскости управления, но не для управления сеансами BGP.
  • Облачный маршрутизатор используется для BGP, установленного для установления HA-VPN между VPC psc-looker-demo и on-prem-demo.

НА-ВПН

HA VPN между сетями Google Cloud VPC . В этой топологии вы можете соединить две сети Google Cloud VPC, используя шлюз HA VPN в каждой сети. Сети VPC могут находиться в одном или нескольких регионах.

Облачный NAT

Используется локальным демо-VPC для выхода в Интернет.

4. Топология Codelab

79aeb28b38f237da.png

5. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как PROJECT_ID ). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта.
  • К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.

В Google Cloud Console щелкните значок Cloud Shell на верхней правой панели инструментов:

55efc1aaa7a4d3ad.png

Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:

7ffe5cbb04455448.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории кода можно выполнять в браузере. Вам не нужно ничего устанавливать.

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

Включить API

В Cloud Shell убедитесь, что идентификатор вашего проекта настроен:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region

Включите все необходимые службы:

gcloud services enable compute.googleapis.com

7. Создайте сеть VPC производителя.

Сеть VPC

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

gcloud compute networks create looker-psc-demo --subnet-mode custom

Создание подсетей

Подсеть PSC будет связана с приложением службы PSC для целей трансляции сетевых адресов.

Внутри Cloud Shell создайте подсеть PSC NAT:

gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

В Cloud Shell создайте подсеть правила переадресации производителя:

gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

Внутри Cloud Shell создайте подсеть только для регионального прокси-сервера производителя:

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=looker-psc-demo \
  --range=10.10.10.0/24

Зарезервируйте IP-адрес балансировщика нагрузки.

Внутри Cloud Shell зарезервируйте внутренний IP-адрес для балансировщика нагрузки:

gcloud compute addresses create hybrid-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

В Cloud Shell просмотрите зарезервированный IP-адрес.

gcloud compute addresses describe hybrid-neg-lb-ip \
  --region=$region | grep -i address:

Пример вывода:

gcloud compute addresses describe hybrid-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Настройка гибридного NEG

Создайте гибридный NEG и установите для параметра –network-endpoint-type значение NON_GCP_PRIVATE_IP_PORT.

Внутри Cloud Shell создайте гибридный NEG, используемый для доступа к локальной базе данных:

gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
    --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
    --network=looker-psc-demo \
    --zone=$zone

В Cloud Shell обновите гибридный NEG, указав IP:порт локальной базы данных, 192.168.10.4 и порт 5432, созданные на следующем этапе руководства:

gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
    --add-endpoint=ip=192.168.10.4,port=5432 \
    --zone=$zone

Создайте региональную проверку работоспособности

Внутри Cloud Shell создайте проверку работоспособности, которая проверяет порт локальной базы данных, 5432:

gcloud compute health-checks create tcp on-prem-5432-healthcheck \
    --region=$region \
    --port=5432

Создайте политику сетевого брандмауэра и правила брандмауэра.

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

gcloud compute network-firewall-policies create looker-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy

Следующее правило брандмауэра разрешает передачу трафика из диапазона подсети PSC NAT во все экземпляры сети.

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

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

8. Создать службу продюсера

Создание компонентов балансировщика нагрузки

Внутри Cloud Shell создайте серверную службу:

gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region

Внутри Cloud Shell добавьте серверную часть Hybrid NEG к внутренней службе:

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --region=$region

В Cloud Shell создайте целевой TCP-прокси для маршрутизации запросов к внутренней службе:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

В следующем синтаксисе создайте правило переадресации (внутренний балансировщик нагрузки TCP-прокси).

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

gcloud compute forwarding-rules create producer-hybrid-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=hybrid-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=5432

Создать служебное приложение

Внутри Cloud Shell создайте вложение службы onpremdatabase1-svc-attachment:

gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

Затем получите и запишите вложение службы, указанное в URI selfLink, начиная с проектов, для настройки конечной точки PSC в Looker.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment

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

gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region

Пример ожидаемого результата:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '2549689544315850024'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr

В Cloud Console перейдите к:

Сетевые службы → Подключение частных служб → Опубликованные службы

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. Установите соединение с конечной точкой PSC в Looker.

В следующем разделе вы свяжете вложение службы Producers с Looker Core PSC с помощью флагов –psc-service-attachment в Cloud Shell для одного домена.

В Cloud Shell создайте ассоциацию psc, обновив следующие параметры в соответствии с вашей средой:

  • INSTANCE_NAME: имя вашего экземпляра Looker (ядро Google Cloud).
  • ДОМЕН_1: onprem.database1.com
  • SERVICE_ATTACHMENT_1: URI, полученный при создании вложения службы, onpremdatabase1-svc-attachment.
  • РЕГИОН: регион, в котором размещен ваш экземпляр Looker (ядро Google Cloud).

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

gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

Пример:

gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region

В Cloud Shell убедитесь, что статус подключения serviceAttachments имеет значение «ACCEPTED», обновите имя экземпляра Looker PSC:

gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json

Пример:

gcloud looker instances describe looker-psc-instance --region=$region --format=json

Пример:

{
  "adminSettings": {},
  "createTime": "2024-08-23T00:00:45.339063195Z",
  "customDomain": {
    "domain": "looker.cosmopup.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/$project/locations/$region/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/$project/global/networks/looker-psc-demo",
      "projects/$project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "onprem.database1.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-09-01T23:15:07.426372901Z"
}

Проверьте конечную точку PSC в Cloud Console.

В Cloud Console вы можете проверить соединение PSC.

В Cloud Console перейдите к:

Looker → Экземпляр Looker → Подробности

2d4684d722d31e4b.png

993cdaf748f4c030.png

Создайте локальную сеть VPC.

Сеть VPC

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

gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom

Создайте подсеть базы данных Postgresql.

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

gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region

Внутри Cloud Shell зарезервируйте внутренний адрес IPv4, используемый для onprem.database1.com, 192.168.10.4:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

Создайте облачный маршрутизатор для локального демонстрационного VPC.

Cloud NAT используется в руководстве для установки пакета программного обеспечения, поскольку экземпляр виртуальной машины не имеет внешнего IP-адреса.

В Cloud Shell создайте Cloud Router, используемый с Cloud NAT и HA-VPN:

gcloud compute routers create on-prem-cr \
   --region=$region \
   --network=on-prem-demo \
   --asn=65002

Внутри Cloud Shell создайте шлюз NAT:

gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region

Создайте тестовый экземпляр базы данных

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

Внутри Cloud Shell создайте экземпляр:

gcloud compute instances create postgres-database \
    --project=$project \
    --zone=$zone \
    --machine-type=e2-medium \
    --subnet=database-subnet \
    --no-address \
    --private-network-ip 192.168.10.4 \
    --image-family debian-12 \
    --image-project debian-cloud  \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

Создайте политику сетевого брандмауэра и правила брандмауэра.

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

gcloud compute network-firewall-policies create on-prem-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy

Чтобы разрешить IAP подключаться к вашим экземплярам виртуальных машин, создайте правило брандмауэра, которое:

  • Применяется ко всем экземплярам виртуальных машин, доступ к которым вы хотите сделать с помощью IAP.
  • Разрешает входящий трафик из диапазона IP 35.235.240.0/20. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP.

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

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

Следующее правило брандмауэра разрешает трафик из диапазона подсети только для прокси-сервера ко всем экземплярам в сети.

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

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp

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

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

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

На следующих шагах вы развернете HA VPN между VPC Looker-psc-demo и VPC on-prem-demo, чтобы продемонстрировать гибридное подключение NEG к onprem.database1.com.

Создайте шлюз HA VPN для Looker-psc-demo.

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

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

gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region

Создайте шлюз высокой доступности VPN для локальной демонстрации.

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

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

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region

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

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

7f1b504616504866.png

Создайте облачный маршрутизатор для Looker-psc-demo.

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

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

Создайте VPN-туннели для Looker-psc-demo.

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

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

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

gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 0

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

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

gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 1

Создайте VPN-туннели для локальной демо-версии.

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

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

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

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
   --interface 0

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

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

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

Проверка создания VPN-туннеля

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

c2fcb340a7614070.png

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

Создайте интерфейс BGP и пиринг для Looker-psc-demo.

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel0 \
    --region $region

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

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region $region

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel1 \
    --region $region

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

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region $region

Создайте интерфейс BGP и пиринг для локальной демонстрационной версии.

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel0-to-looker-psc-demo \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region $region

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

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel0 \
    --interface if-tunnel1-to-looker-psc-demo \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region $region

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel1-to-looker-psc-demo \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region $region

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

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel1\
    --interface if-tunnel2-to-looker-psc-demo \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region $region

Перейдите в раздел «Гибридное подключение» → VPN, чтобы просмотреть сведения о VPN-туннеле.

78ab590317919bf5.png

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

Теперь, когда туннели HA VPN и сеансы BGP установлены, поведением Cloud Router по умолчанию является объявление маршрутов подсети. Просмотрите изученные маршруты Looker-psc-demo.

С помощью консоли перейдите в сеть VPC → Сети VPC → Looker-psc-demo → МАРШРУТЫ → РЕГИОН → ПРОСМОТР.

Обратите внимание, что Looker-psc-demo узнал подсеть базы данных 192.168.10.0/28 из VPC on-prem-demo.

c11a11ed8b0491c8.png

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

Поскольку по умолчанию облачный маршрутизатор объявляет все подсети, подсеть только прокси-сервера объявляется через BGP. Гибридный NEG будет использовать подсеть только прокси-сервера в качестве исходного адреса при обмене данными с сервером onprem.database1.com.

Обратите внимание, что on-prem-demo узнал подсеть только для прокси-сервера 10.10.10.0/24 от Looker-psc-demo.

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

b0073faed026931f.png

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

В следующем разделе вы выполните SSH к виртуальной машине базы данных postgres с помощью Cloud Shell.

Внутри Cloud Shell выполните подключение по протоколу SSH к экземпляру базы данных postgres**:**

 gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

Внутри ОС определите и запишите IP-адрес (ens4) экземпляра базы данных postgres:

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 noprefixroute 
       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:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 192.168.10.4/32 metric 100 scope global dynamic ens4
       valid_lft 66779sec preferred_lft 66779sec
    inet6 fe80::4001:c0ff:fea8:a04/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 (192.168.10.4) и подсеть только для прокси-сервера (10.10.10.0/24) в файл pg_hba.conf в разделе локальных подключений IPv4.

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

На скриншоте ниже показано завершенное обновление: eaff2ed6d27fa7cc.png

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

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

До:

65e0b1074dc48644.png

После:

14a0d1fa5455e23e.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 Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
    Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 20486 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

13. Создайте базу данных Postgres.

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

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

sudo -u postgres psql postgres

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

create database postgres_looker;

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

\l

Внутри ОС создайте пользователя postgres_looker с паролем postgreslooker:

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

Exit from the OS, returning you to cloud shell:

\q

Пример:

user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
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 table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q

14. Интегрируйте Looker с базой данных Postgres Postgres.

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

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

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

5900fdf0b698cbfc.png

Теперь соединение настроено

4817157fd3b1277e.png

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

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

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

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

В ОС создайте фильтр TCPDUMP с подсетью только для прокси 10.10.10.0/24.

sudo tcpdump -i any net 10.10.10.0/24 -nn

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

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

774f9313ece41034.png

Очистить

Удаление компонентов лаборатории из одного терминала Cloud Shell

gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-hybrid-neg-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete producer-backend-svc --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy  --name=looker-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q

gcloud compute routers nats delete on-prem-nat --router=on-prem-cr --router-region=$region -q

gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q

gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q

gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q

gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q

gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q

gcloud compute instances delete postgres-database --zone=$zone -q

gcloud compute addresses delete on-prem-database1-ip --region=$region -q

gcloud compute networks subnets delete database-subnet --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy  --name=on-prem-demo --global-firewall-policy -q

gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks delete on-prem-demo -q

gcloud compute networks delete looker-psc-demo -q

16. Поздравления

Поздравляем, вы успешно настроили и проверили подключение к локальной базе данных через HA-VPN с помощью консоли Looker на базе Private Service Connect.

Вы создали инфраструктуру производителя, узнали, как создать гибридную NEG, службу производителя и конечную точку Looker PSC, которая позволяла бы подключаться к службе источника.

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

c911c127bffdee57.jpeg

Что дальше?

Посмотрите некоторые из этих кодовых лабораторий...

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

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