1. Введение
Только экземпляры Looker (ядро Google Cloud), которые используют доступ к частным сервисам для своего частного подключения, поддерживают конфигурацию частного IP-адреса и общедоступного IP-адреса.
Экземпляр Looker (ядро Google Cloud), который имеет как соединение с частным IP-адресом (доступ к частным службам), так и соединение с общедоступным IP-адресом, имеет общедоступный URL-адрес, и весь входящий трафик будет проходить через соединение с общедоступным IP-адресом. Исходящий трафик маршрутизируется через ваш VPC, который можно настроить на разрешение только частного IP-трафика, как показано на рисунке 1.
Рисунок 1
Связь с github.com разрешается по общедоступному IP-адресу, поэтому он недоступен из экземпляра Looker, развернутого как Private или Public+Private.
В этой лабораторной работе вы выполните HTTPS-подключение к GitHub в южном направлении, используя внутренний балансировщик нагрузки tcp-прокси и группу конечных точек интернет-сети (NEG), вызываемую из Looker PSA.
Что вы узнаете
- Требования к сети
- Установите подключение к GitHub из Looker с помощью тестового соединения.
Что вам понадобится
- Проект Google Cloud с разрешениями владельца
- Учетная запись и репозиторий GitHub
- Токен личного доступа GitHub (классический)
- Существующий экземпляр Looker PSA с включенным режимом Public + Private или Private.
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
5. Настройка и требования
Самостоятельная настройка среды
- Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
- Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
- Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (невозможно изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как
PROJECT_ID
). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта. - К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
- Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Запустить Cloud Shell
Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.
В Google Cloud Console щелкните значок Cloud Shell на верхней правой панели инструментов:
Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 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"
Обновить пиринг 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 перейдите к:
Включите режим разработки (внизу левой страницы), после выбора отобразится баннер «Вы находитесь в режиме разработки».
Создать новый проект
В Cloud Console перейдите к:
Разработка → Проекты
Выберите новый проект LookML
Укажите имя проекта, выберите «Пустой проект», затем «Создать проект».
Выберите «Настроить Git».
Настроить Git
Обновите URL-адрес репозитория, указав данные HTTPS на GitHub, обязательно добавьте URL-адрес с расширением .git, затем нажмите «Продолжить».
Пример:
Обновите выбор, указав свое имя пользователя GitHub и токен личного доступа (классический), затем выберите «Протестировать и завершить настройку».
Выберите действия Git
Выберите «Проверить соединение с Git».
Проверка теста соединения с Git
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 считает, что кодлабы — это здорово!!