Looker PSC Southbound SSH Internet NEG

1. Введение

В этом практическом задании вы выполните SSH-соединение с GitHub, используя внутренний балансировщик нагрузки 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 в Looker.
  • Установите соединение с GitHub из Looker, используя функцию проверки соединения.

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

def88091b42bfe4d.png

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

Вам потребуется создать сеть Producer, looker-psc-demo, для развертывания внутреннего балансировщика нагрузки TCP-прокси и Internet NEG, опубликованных в качестве сервиса через Private Service Connect (PSC). После публикации вам необходимо выполнить следующие действия для проверки доступа к сервису Producer:

  • Создайте в Looker конечную точку PSC, связанную с подключением к службе производителя.
  • Используйте консоль Looker для создания нового проекта и проверки SSH-подключения к GitHub.com, следуя процедуре «Подключение к Git через SSH».

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

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

Сеть продюсеров

Компоненты

Описание

VPC (looker-psc-demo)

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

Подсеть NAT PSC

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

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

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

Подсеть PSC NEG

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

Подсеть только для прокси

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

Интернет НЕГ

Ресурс, используемый для определения внешней серверной части для балансировщика нагрузки. Доступ к этой конечной точке возможен только через Cloud VPN или Cloud Interconnect.

Бэкенд-сервис

Серверная служба выступает в качестве связующего звена между вашим балансировщиком нагрузки и вашими серверными ресурсами. В данном руководстве серверная служба связана с интернет-сетью NEG.

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

Облачная NAT использует облачные маршрутизаторы для обеспечения возможностей плоскости управления, но не для управления сессиями BGP.

Облачный NAT

Региональная интернет-сеть NEG использует Cloud NAT для исходящего интернет-трафика.

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

dfa4dd1d681a66da.png

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

Настройка среды для самостоятельного обучения

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

Запустить Cloud Shell

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

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

Включить API

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
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

Создайте публичный NAT-шлюз.

Шлюз NAT используется региональным внутренним балансировщиком нагрузки TCP-прокси для исходящего интернет-трафика с параметром конфигурации –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, поэтому тот же самый шлюз NAT не будет поддерживать исходящий интернет-трафик GCE/GKE. Разверните дополнительный шлюз NAT с параметром –endpoint-types=ENDPOINT_TYPE_VM для исходящего интернет-трафика GCE/GKE.

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

gcloud compute routers create looker-psc-demo-cloud-router --network looker-psc-demo --region $region

Внутри Cloud Shell создайте шлюз Cloud NAT, обеспечивающий исходящий интернет-трафик для балансировщика нагрузки TCP-прокси:

gcloud compute routers nats create looker-psc-demo-natgw \
  --router=looker-psc-demo-cloud-router \
  --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
  --nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
  --auto-allocate-nat-external-ips \
  --region=$region

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

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

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

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

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

Пример:

user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Настройте интернет-NEG

Создайте интернет-сервер NEG и установите параметр –network-endpoint-type в значение internet-fqdn-port (имя хоста и порт, через который доступен ваш внешний бэкэнд).

Внутри Cloud Shell создайте интернет-сервер NEG, используемый для github.com.

gcloud compute network-endpoint-groups create github-internet-neg-ssh \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=looker-psc-demo \
    --region=$region

Внутри Cloud Shell обновите параметр Internet NEG github-internet-neg-ssh, указав полное доменное имя github.com и порт 22.

gcloud compute network-endpoint-groups update github-internet-neg-ssh \
    --add-endpoint="fqdn=github.com,port=22" \
    --region=$region

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

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

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

Внутри 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  --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=github-internet-neg-ssh --network-endpoint-group-region=$region --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-github-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=internet-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=22

Создать вложение услуги

Внутри Cloud Shell создайте подключение к службе: github-svc-attachment-ssh:

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

Далее получите и запишите вложение службы, указанное в URI selfLink, начинающемся с projects, чтобы настроить конечную точку PSC в Looker.

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

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

gcloud compute service-attachments describe github-svc-attachment-ssh --region=$region

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

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-31T13:43:07.078-07:00'
description: ''
enableProxyProtocol: false
fingerprint: O5OtqHR33v4=
id: '7557641709467614900'
kind: compute#serviceAttachment
name: github-svc-attachment-ssh
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '7557641709467614900'
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/github-svc-attachment-ssh
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr

В консоли Cloud перейдите по следующему пути:

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

30b1a280966b1f06.png

4eafe698193f5f44.png

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

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

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

  • INSTANCE_NAME: Имя вашего экземпляра Looker (ядро Google Cloud).
  • DOMAIN_1: githubssh.com
  • SERVICE_ATTACHMENT_1: URI, полученный при описании подключения к сервису, github-svc-attachment-ssh.
  • РЕГИОН: Регион, в котором размещен ваш экземпляр 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=githubssh.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh \
--region=$region

Внутри Cloud Shell убедитесь, что connectionStatus службы serviceAttachments имеет значение "ACCEPTED". Обновите его, указав INSTANCE_NAME вашего 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": "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": "githubssh.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-08-31T20:53:04.824018122Z"
}

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

В консоли Cloud Console можно проверить подключение к PSC.

В консоли Cloud перейдите по следующему пути:

Looker → Looker Instance → Details

2d4684d722d31e4b.png

db670bb008ea3fc4.png

10. Проверьте подключение к GitHub.

На следующих шагах вы используете консоль Looker для создания проекта, который проверит SSH-подключение к GitHub.com, обновив домен github.com на githubssh.com в пользовательском интерфейсе Looker. Это действие требуется только для SSH-подключений к GitHub.

11. Создайте новый проект.

Включить режим разработки

В консоли Looker перейдите по следующему пути:

Включите режим разработки (в левом нижнем углу страницы). После выбора отобразится сообщение «Вы находитесь в режиме разработки».

70c9ded749decfbe.png

Создать новый проект

В консоли Cloud перейдите по следующему пути:

Разработка → Проекты

e8ae11e0392a776d.png

Выберите новый проект LookML

65a3c2573e97e1e9.png

Укажите название проекта, выберите «Пустой проект», затем «Создать проект».

dbb890960291aa84.png

Выберите «Настроить Git».

42f5e51ce70642ad.png

Настройка Git

3962a1fe7ac8da77.png

После нажатия кнопки «Продолжить» вам будет предложено подтвердить URL-адрес репозитория и сервис хостинга Git.

743e5d963cfe6f82.png

Добавьте ключ развертывания в свой репозиторий GitHub. Убедитесь, что разрешен доступ на запись. После обновления выберите «Тестировать» и «Завершить настройку».

4894e0af6421802e.png

Выберите действия Git

e87931dbf7e265f3.png

Выберите «Проверить соединение Git»

73d90adf267120af.png

Проверьте работоспособность теста подключения Git.

f69bc63b9c595aa1.png

12. Уборка

Из одного терминала Cloud Shell удалите компоненты лаборатории.

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

gcloud compute forwarding-rules delete producer-github-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 looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q

gcloud compute routers delete looker-psc-demo-cloud-router --region=$region -q

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

gcloud compute network-endpoint-groups delete github-internet-neg-ssh --region=$region -q

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

gcloud compute networks delete looker-psc-demo -q

13. Поздравляем!

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

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

Cosmopup считает, что Codelabs — это круто!!

c911c127bffdee57.jpeg

Что дальше?

Посмотрите некоторые из этих практических занятий по программированию...

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

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