Looker PSA Southbound HTTPS Интернет NEG

1. Введение

Только экземпляры Looker (ядро Google Cloud), которые используют доступ к частным сервисам для своего частного подключения, поддерживают конфигурацию частного IP-адреса и общедоступного IP-адреса.

Экземпляр Looker (ядро Google Cloud), который имеет как соединение с частным IP-адресом (доступ к частным службам), так и соединение с общедоступным IP-адресом, имеет общедоступный URL-адрес, и весь входящий трафик будет проходить через соединение с общедоступным IP-адресом. Исходящий трафик маршрутизируется через ваш VPC, который можно настроить на разрешение только частного IP-трафика, как показано на рисунке 1.

Рисунок 1

9f587c14791dd92e.png

Связь с github.com разрешается по общедоступному IP-адресу, поэтому он недоступен из экземпляра Looker, развернутого как Private или Public+Private.

В этой лабораторной работе вы выполните HTTPS-подключение к GitHub в южном направлении, используя внутренний балансировщик нагрузки tcp-прокси и группу конечных точек интернет-сети (NEG), вызываемую из Looker PSA.

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

  • Требования к сети
  • Установите подключение к GitHub из Looker с помощью тестового соединения.

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

5348de53f0a78a50.png

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

Вы развернете внутренний балансировщик нагрузки TCP-прокси и Internet NEG, настроенный с разрешенным IP-адресом github.com, который использует Cloud NAT для выхода из Интернета в организации github.com, разрешенные Looker.

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

Ниже приводится разбивка сетевых требований:

Компоненты

Описание

VPC ($vpc_network)

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

подсеть правила переадресации

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

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

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

Интернет НЕГ

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

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

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

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

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

Облачный NAT

Региональная интернет-сеть NEG использует Cloud NAT для выхода в Интернет.

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

c5871e5418d37f13.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]
vpc_network=[VPC Name]
echo $project
echo $region
echo $vpc-network

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

gcloud services enable compute.googleapis.com

7. Компоненты сети VPC

Сеть VPC

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

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

gcloud compute networks subnets create psa-fr-subnet --network $vpc_network --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

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

gcloud compute networks subnets create $region-proxyonly-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=$vpc_network \
  --range=10.10.10.0/24

Создайте общедоступный шлюз NAT.

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

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

gcloud compute routers create $vpc_network-cloud-router --network $vpc_network --region $region

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

gcloud compute routers nats create $vpc_network-natgw \
  --router=$vpc_network-cloud-router \
  --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
  --nat-custom-subnet-ip-ranges=$region-proxyonly-subnet \
  --auto-allocate-nat-external-ips \
  --region=$region

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

Внутри Cloud Shell зарезервируйте внутренний IP-адрес для балансировщика нагрузки, который позже будет использоваться в качестве записи DNS A для github.com:

gcloud compute addresses create internet-neg-lb-ip \
  --region=$region \
  --subnet=psa-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

8. Интернет-НЕГ

Существует два способа настройки внешней конечной точки, на которую ссылается NEG Интернета: INTERNET_FQDN_PORT или INTERNET_IP_PORT. Если выбран формат INTERNET_IP_PORT (вариант 1), можно использовать только общедоступный IP-адрес, маршрутизируемый в Интернете; если выбран формат INTERNET_FQDN_PORT (вариант 2), полное доменное имя может быть разрешено либо в общедоступный IP-адрес, маршрутизируемый в Интернете, либо в частный IP-адрес, в зависимости от области конечной точки: региональной или глобальной.

Вариант 1. Настройка Интернет-СЕГ с использованием IP-адреса.

Internet NEG требует разрешенного IP-адреса Github.com, поэтому для достижения наилучшей производительности откройте локальный терминал, выполните поиск и получите IP-адрес github.com.

Пример с локального терминала генерирует разрешенный IP-адрес 140.82.113.4.

bash-3.2$ dig github.com
; <<>> DiG 9.10.6 <<>> github.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64801
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;github.com.                        IN        A
;; ANSWER SECTION:
github.com.                60        IN        A        140.82.113.4
;; Query time: 409 msec
;; SERVER: ::1#53(::1)
;; WHEN: Thu Sep 26 15:50:45 CDT 2024
;; MSG SIZE  rcvd: 65

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

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

gcloud compute network-endpoint-groups create github-internet-neg \
    --network-endpoint-type=INTERNET_IP_PORT \
    --network=$vpc_network \
    --region=$region

В Cloud Shell обновите Internet NEG github-internet-neg, указав разрешенный IP-адрес github.com и порт 443:

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="ip=[your-resolved-ip],port=443" \
    --region=$region

Пример:

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="ip=140.82.113.4,port=443" \
    --region=$region

Вариант 2. Настройте NEG в Интернете, используя полное доменное имя.

При желании вы можете создать Internet NEG и установить для параметра –network-endpoint-type значение Internet_FQDN_port.

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

gcloud compute network-endpoint-groups create github-internet-neg \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=$vpc_network \
    --region=$region

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

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

9. Создайте сервис Github.

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

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

gcloud compute backend-services create psa-backend-svc  --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED

gcloud compute backend-services add-backend psa-backend-svc --network-endpoint-group=github-internet-neg --network-endpoint-group-region=$region --region=$region

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

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

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

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

gcloud compute forwarding-rules create psa-github-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=$vpc_network \
     --subnet=psa-fr-subnet \
     --address=internet-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=443

10. DNS-зона GitHub

В следующем разделе вы создадите политику ответа DNS для GitHub.com с записью A, состоящей из IP-адреса внутреннего балансировщика нагрузки TCP-прокси.

После этого пиринг DNS будет использовать зону github.com совместно с Looker PSA, что позволит подключаться к github через внутренний балансировщик нагрузки в сочетании с Internet NEG и Cloud NAT.

В Cloud Shell создайте зону политики ответа:

gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"

В Cloud Shell создайте запись DNS A, состоящую из IP-адреса балансировщика нагрузки TCP-прокси, [вставьте свой IP-адрес]:

gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="[insert-your-ip-address]"

Пример:

gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="172.16.20.2"

7b41b2f44609e5ed.png

Обновить пиринг DNS

В этом разделе вы будете использовать синтаксис «gcloud Services Peed-DNS-Domains Create» , который создает одноранговый DNS-домен для соединения с частной службой, которое отправляет запросы на записи в заданном пространстве имен, происходящие из сети VPC поставщика услуг, в сеть VPC потребителя, подлежащую разрешению.

В Cloud Shell создайте одноранговый DNS-домен, к которому средство просмотра будет запрашивать github.com:

gcloud services peered-dns-domains create github-com --project=$project --network=$vpc_network --dns-suffix=github.com.

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

На следующих шагах вы будете использовать консоль Looker для создания проекта для проверки подключения HTTPS к github.com.

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

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

В консоли Looker перейдите к:

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

70c9ded749decfbe.png

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

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

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

e8ae11e0392a776d.png

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

65a3c2573e97e1e9.png

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

9185808e001fa540.png

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

42f5e51ce70642ad.png

Настроить Git

Обновите URL-адрес репозитория, указав данные HTTPS на GitHub, обязательно добавьте URL-адрес с расширением .git, затем нажмите «Продолжить».

f5c448f6659b8fc1.png

Пример:

4065ab1d196589f.png

Обновите выбор, указав свое имя пользователя GitHub и токен личного доступа (классический), затем выберите «Протестировать и завершить настройку».

1dc44d63c555a9ae.png

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

b5903668a50a99ca.png

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

51b722e84f2df38c.png

Проверка теста соединения с Git

8fb7386b739f60be.png

13. Очистка

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

gcloud compute forwarding-rules delete psa-github-fr --region=$region -q

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

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

gcloud compute routers nats delete $vpc_network-natgw --router=$vpc_network-cloud-router --router-region=$region -q

gcloud compute routers delete $vpc_network-cloud-router --region=$region -q

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

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

gcloud compute networks subnets delete psa-fr-subnet $region-proxyonly-subnet --region=$region -q

gcloud services peered-dns-domains delete github-com --network=$vpc_network -q

gcloud dns --project=$project response-policies rules delete github --response-policy="github-com" -q

gcloud dns response-policies update github-com --networks= -q

gcloud dns response-policies delete github-com

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

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

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

c911c127bffdee57.jpeg

Что дальше?

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

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