1. Введение
Private Service Connect позволяет производителям услуг предоставлять услуги в частном порядке из одной сети VPC в другую. Потребители могут получить доступ к сервисам производителя через конечные точки PSC или бэкэнды PSC.
В центре внимания этой лаборатории кода — серверные части PSC. Серверные части PSC используются вместе с балансировщиками нагрузки прокси-сервера Google Cloud (приложение или сеть). Использование PSC Backends обеспечивает более детальные элементы управления на стороне потребителя, такие как:
- Более глубокая наблюдаемость и протоколирование
- Интеграция облачной брони
- Пользовательские URL-адреса
- Расширенное управление трафиком
- Пользовательские сертификаты TLS
В этой лабораторной работе вы узнаете, как создать серверную часть Private Service Connect с глобальным балансировщиком нагрузки внешних приложений для частного доступа к службе производителя в другой сети.
Что вы узнаете
- Создайте и настройте серверную часть PSC, связанную с глобальным балансировщиком нагрузки внешних приложений.
- Настройте веб-службу, управляемую Apache, и представьте ее как службу PSC через вложение службы.
- Создайте сертификаты SSL для прекращения SSL на внутренних и внешних балансировщиках нагрузки приложений.
- Настройте общедоступную зону Cloud DNS для доступа к сервису PSC.
Что вам понадобится
- Проект Google Cloud с разрешениями владельца
2. Тестовая среда
Среда, которую вы создадите, будет состоять из Consumer VPC и Producer VPC. В VPC-источнике вы развернете управляемую группу экземпляров из шаблона экземпляра, который создает веб-службу Apache с открытым исходным кодом. Вы также развернете тестовую виртуальную машину, чтобы обеспечить правильную локальную функциональность службы. Вы предоставите службу Apache как службу PSC Producer через вложение службы.
В потребительском VPC вы развернете глобальный балансировщик нагрузки внешних приложений с внутренней службой PSC, указывающей на службу Apache. Затем вы настроите общедоступную зону DNS для доступа к службе PSC в общедоступном Интернете.
3. Настройка и требования
Самостоятельная настройка среды
- Войдите в 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, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории кода можно выполнять в браузере. Вам не нужно ничего устанавливать.
4. Прежде чем начать
Включить API
В Cloud Shell убедитесь, что идентификатор вашего проекта настроен.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export project=YOUR-PROJECT-NAME export region=us-central1 echo $project echo $region
Включите все необходимые сервисы
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
5. Настройка продюсера VPC
Создать сеть VPC
Из Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Создание подсетей
В Producer-VPC будут развернуты две подсети общего назначения. Подсеть службы будет использоваться для развертывания виртуальных машин веб-службы Apache, а также правила переадресации балансировщика нагрузки. Подсеть тестового клиента будет находиться в другом регионе и будет использоваться для развертывания виртуальной машины для тестирования службы Apache с включенным глобальным доступом.
Из Cloud Shell
gcloud compute networks subnets create service-subnet \ --network=producer-vpc \ --range=10.0.0.0/28 \ --region=$region
Из Cloud Shell
gcloud compute networks subnets create test-client-subnet \ --network=producer-vpc \ --range=10.0.1.0/28 \ --region=us-east4
Мы также должны развернуть подсеть, работающую только через прокси-сервер, для использования с региональным внутренним балансировщиком нагрузки приложений.
Из Cloud Shell
gcloud compute networks subnets create central-proxy-subnet \ --network=producer-vpc \ --range=10.100.101.0/24 \ --region=$region \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE
При развертывании службы PSC каждой уникальной службе требуется соответствующая подсеть PSC NAT, которая будет связана с дополнением службы. Размер этой подсети должен быть соответствующим образом зависит от количества ожидаемых подключенных конечных точек.
Из Cloud Shell
gcloud compute networks subnets create psc-nat-subnet \ --network=producer-vpc \ --region=$region \ --range=10.100.100.0/24 \ --purpose=PRIVATE_SERVICE_CONNECT
Создать облачный NAT
Облачный NAT необходим для установки соответствующих пакетов для наших сервисов производителя.
Из Cloud Shell
gcloud compute routers create central-cr \ --network=producer-vpc \ --region=$region
Из Cloud Shell
gcloud compute routers nats create central-nat \ --router=central-cr \ --region=$region \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Создание политики и правил сетевого брандмауэра
Из Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global gcloud compute network-firewall-policies associations create \ --firewall-policy producer-vpc-policy \ --network producer-vpc \ --name network-producer-vpc \ --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 producer-vpc-policy \ --description "SSH with IAP" \ --direction INGRESS \ --src-ip-ranges 35.235.240.0/20 \ --layer4-configs tcp:22 \ --global-firewall-policy
Потребуются два дополнительных правила межсетевого экрана, чтобы разрешить входящий трафик на серверные части балансировщика нагрузки, поступающий из подсети, работающей только с прокси-сервером балансировщика нагрузки (2000), а также правило, разрешающее проверки работоспособности балансировщика нагрузки на внутренних экземплярах (2001).
Из Cloud Shell
gcloud compute network-firewall-policies rules create 2000 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "allow traffic from load balancer proxy subnet" \ --direction INGRESS \ --src-ip-ranges 10.100.101.0/24 \ --layer4-configs tcp:443 \ --global-firewall-policy gcloud compute network-firewall-policies rules create 2001 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "allow load balancer health checks" \ --direction INGRESS \ --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \ --layer4-configs tcp:443 \ --global-firewall-policy
6. Создайте веб-службу Apache.
Мы создадим простую веб-службу Apache, которая отображает «Службу PSC».
Создать шаблон экземпляра
Из Cloud Shell
gcloud compute instance-templates create apache-service-template \ --network producer-vpc \ --subnet service-subnet \ --region $region \ --no-address \ --metadata startup-script='#! /bin/bash sudo apt-get update apt-get install apache2 -y a2enmod ssl sudo a2ensite default-ssl echo "PSC Service" | \ tee /var/www/html/index.html systemctl restart apache2'
Создать проверку работоспособности для MIG
Из Cloud Shell
gcloud compute health-checks create https service-mig-healthcheck \ --port=443 \ --global
Создать группу управляемых экземпляров
Из Cloud Shell
gcloud compute instance-groups managed create psc-service-mig \ --region $region \ --size=2 \ --template=apache-service-template \ --health-check=service-mig-healthcheck gcloud compute instance-groups managed set-named-ports psc-service-mig \ --named-ports=https:443 \ --region=$region
7. Создайте самозаверяющий сертификат.
Выполните шаг 1 из инструкций здесь, чтобы создать самозаверяющий сертификат. Вы можете выполнять все команды в Cloud Shell. Вернитесь в это место, когда шаг 1 будет завершен. ВАШЕ ОБЩЕЕ ИМЯ ДОЛЖНО БЫТЬ НАСТРОЕНО С ПОМОЩЬЮ EXAMPLE.COM.
Создайте ресурс сертификата для связи с балансировщиком нагрузки. Замените параметры сертификата и закрытого ключа конкретными именами файлов.
Из Cloud Shell
gcloud compute ssl-certificates create producer-service-cert \ --certificate=<your-producer-certfile.cert> \ --private-key=<your-producer-keyfile.pem> \ --region=$region
8. Создайте внутренний балансировщик нагрузки региональных приложений.
Далее мы создадим компоненты балансировщика нагрузки для службы. Мы используем внутренний региональный балансировщик нагрузки приложений, но у вас есть возможность использовать любой внутренний балансировщик нагрузки Google Cloud. Следуйте соответствующей документации по балансировщику нагрузки для обработки TLS.
Создайте внутренний IP-адрес, который будет использоваться для правила переадресации вашего балансировщика нагрузки, и запишите IP-адрес, который будет использоваться позже, когда вы сделаете тестовый вызов службы.
Из Cloud Shell
gcloud compute addresses create apache-service-ip \ --region=$region \ --subnet=service-subnet gcloud compute addresses describe apache-service-ip \ --format="get(address)" \ --region=$region
Создайте проверку работоспособности балансировщика нагрузки.
Из Cloud Shell
gcloud compute health-checks create https lb-apache-service-hc \ --region=$region \ --port-name=https
Создайте серверную службу.
Из Cloud Shell
gcloud compute backend-services create apache-bes\ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --port-name=https \ --health-checks=lb-apache-service-hc \ --health-checks-region=$region \ --region=$region gcloud compute backend-services add-backend apache-bes \ --balancing-mode=UTILIZATION \ --instance-group=psc-service-mig \ --region=$region
Создайте карту URL-адресов.
Из Cloud Shell
gcloud compute url-maps create producer-url-map \ --default-service=apache-bes \ --region=$region
Создайте целевые HTTPS-прокси.
Из Cloud Shell
gcloud compute target-https-proxies create https-proxy \ --url-map=producer-url-map \ --region=$region \ --ssl-certificates=producer-service-cert
Создайте правило переадресации.
Из Cloud Shell
gcloud compute forwarding-rules create apache-fr \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=producer-vpc \ --subnet=service-subnet \ --address=apache-service-ip \ --ports=443 \ --region=$region \ --target-https-proxy=https-proxy \ --target-https-proxy-region=$region \ --allow-global-access
9. Создайте тестовую виртуальную машину и протестируйте службу локально.
Прежде чем создавать вложение службы, мы создадим тестовую клиентскую виртуальную машину в другом регионе, чтобы проверить правильность настройки балансировщика нагрузки с помощью Global Access и TLS.
Из Cloud Shell
gcloud compute instances create vm-client \ --zone=us-east4-a \ --subnet=test-client-subnet \ --no-address
Подождите около минуты, пока подготовка завершится, а затем подключитесь к экземпляру по SSH.
Из Cloud Shell
gcloud compute ssh \ --zone "us-east4-a" "vm-client" \ --tunnel-through-iap \ --project $project
Протестируйте службу Apache, подключившись через 443 через балансировщик нагрузки. Внутренний IP-адрес — это тот, который вы зарезервировали и записали ранее.
curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
PSC Service
Выход из ВМ.
Из VM-клиента
exit
10. Создайте служебный вложение.
В этом примере мы настраиваем наше служебное приложение так, чтобы разрешать подключения PSC только из этого проекта. Его можно настроить для приема одного или нескольких конкретных проектов или сетей, но не обоих одновременно. Мы установили максимальное количество подключений до 5. Для каждого проекта или сети должен быть установлен лимит.
Из Cloud Shell
gcloud compute service-attachments create apache-service-attachment \ --region=$region \ --producer-forwarding-rule=apache-fr \ --connection-preference=ACCEPT_MANUAL \ --consumer-accept-list=$project=5 \ --nat-subnets=psc-nat-subnet
Вам следует записать URI вложения службы ( selfLink ), так как он понадобится вам на следующем этапе настройки серверной части PSC. Вы можете получить его, выполнив следующую команду в Cloud Shell.
Из Cloud Shell
gcloud compute service-attachments describe apache-service-attachment \ --region $region
Скопируйте URI, начиная с проектов.
Пример: проекты/$project/regions/$region/serviceAttachments/apache-service-attachment
11. Настройка потребительского VPC
Создать сеть VPC
Из Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Создать подсеть
На стороне потребителя необходима подсеть, где будет развернута группа конечных точек сети Private Service Connect (NEG).
Из Cloud Shell
gcloud compute networks subnets create consumer-subnet \ --network=consumer-vpc \ --region=$region \ --range=10.0.0.0/28
12. Зарезервируйте внешний IP-адрес и создайте самозаверяющий сертификат на стороне потребителя.
Внешний IP
Создайте внешний статический IP-адрес, который будет использоваться позже для нашего правила переадресации балансировщика нагрузки, и запишите IP-адрес в переменной Cloud Shell.
Из Cloud Shell
gcloud compute addresses create external-psc-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global export externalip=$(gcloud compute addresses describe external-psc-ip \ --format="get(address)" \ --global) echo $externalip
Самоподписанный сертификат потребителя
Во второй раз выполните шаг 1 из инструкций здесь , чтобы создать самозаверяющий сертификат. Вы можете выполнять все команды в Cloud Shell. Вернитесь в это место, когда шаг 1 будет завершен. Мы будем использовать общедоступную службу DNS с подстановочными знаками с открытым исходным кодом под названием nip.io вместо собственной общедоступной зоны DNS. Общедоступный URL-адрес вашей службы PSC будет использовать внешний IP-адрес, который вы только что настроили. ВАШЕ ОБЩЕЕ ИМЯ ДОЛЖНО БЫТЬ НАСТРОЕНО С ПОМОЩЬЮ <ВАШ-ВНЕШНИЙ-IP.nip.io>
Создайте ресурс сертификата для связи с внешним балансировщиком нагрузки. Замените параметры сертификата и закрытого ключа конкретными именами файлов.
Из Cloud Shell
gcloud compute ssl-certificates create consumer-service-cert \ --certificate=<your-consumer-certfile.cert> \ --private-key=<your-consumer-keyfile.pem> \ --global
13. Создайте компоненты балансировщика нагрузки.
Мы создадим глобальный балансировщик нагрузки внешних приложений с PSC NEG, указывающим на наше недавно созданное вложение службы в качестве внутренней службы.
Имейте под рукой URI вложения службы, который мы отметили на последнем шаге. Замените приведенный ниже psc-target-service своим URI.
Из Cloud Shell
gcloud compute network-endpoint-groups create apache-psc-neg \ --network-endpoint-type=private-service-connect \ --psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \ --region=$region \ --network=consumer-vpc \ --subnet=consumer-subnet
Создайте серверную службу.
Из Cloud Shell
gcloud compute backend-services create apache-pscneg-bes \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global gcloud compute backend-services add-backend apache-pscneg-bes \ --network-endpoint-group=apache-psc-neg \ --network-endpoint-group-region=$region \ --global
Создайте карту URL-адресов
Из Cloud Shell
gcloud compute url-maps create consumer-url-map \ --default-service=apache-pscneg-bes \ --global
Создайте целевые HTTPS-прокси.
Из Cloud Shell
gcloud compute target-https-proxies create psc-https-proxy \ --url-map=consumer-url-map \ --ssl-certificates=consumer-service-cert
Создайте правило переадресации
Из Cloud Shell
gcloud compute forwarding-rules create external-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=external-psc-ip \ --global \ --target-https-proxy=psc-https-proxy \ --ports=443
14. Создайте общедоступную зону DNS.
Из Cloud Shell
gcloud dns managed-zones create "psc-service" \ --dns-name=$externalip.nip.io. \ --description="public dns for psc service" \ --visibility=public
Из Cloud Shell
gcloud dns record-sets transaction start \ --zone="psc-service" gcloud dns record-sets transaction add $externalip \ --name=$externalip.nip.io \ --ttl=300 \ --type=A \ --zone="psc-service" gcloud dns record-sets transaction execute \ --zone="psc-service"
15. Проверьте подключение потребительского PSC.
Подождите 7–10 минут перед тестированием, чтобы дать возможность общедоступному DNS распространиться.
Из Cloud Shell
curl https://$externalip.nip.io -k
Вы также можете протестировать из своего браузера, введя https://<ВАШ-ВНЕШНИЙ-IP>.nip.io в свой браузер или настольный терминал.
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
PSC Service
16. Этапы очистки
Удаление компонентов лаборатории из одного терминала Cloud Shell
gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q gcloud dns managed-zones delete "psc-service" -q gcloud compute forwarding-rules delete external-fr --global -q gcloud compute target-https-proxies delete psc-https-proxy -q gcloud compute url-maps delete consumer-url-map --global -q gcloud compute backend-services delete apache-pscneg-bes --global -q gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q gcloud compute ssl-certificates delete consumer-service-cert --global -q gcloud compute addresses delete external-psc-ip --global -q gcloud compute networks subnets delete consumer-subnet --region $region -q gcloud compute networks delete consumer-vpc -q gcloud compute instances delete vm-client --zone=us-east4-a -q gcloud compute service-attachments delete apache-service-attachment --region $region -q gcloud compute forwarding-rules delete apache-fr --region $region -q gcloud compute target-https-proxies delete https-proxy --region $region -q gcloud compute url-maps delete producer-url-map --region $region -q gcloud compute backend-services delete apache-bes --region $region -q gcloud compute health-checks delete lb-apache-service-hc --region $region -q gcloud compute addresses delete apache-service-ip --region $region -q gcloud compute ssl-certificates delete producer-service-cert --region $region -q gcloud compute instance-groups managed delete psc-service-mig --region $region -q gcloud compute health-checks delete service-mig-healthcheck --global -q gcloud compute instance-templates delete apache-service-template -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute routers nats delete central-nat --router=central-cr --region $region -q gcloud compute routers delete central-cr --region $region -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete service-subnet --region $region -q gcloud compute networks subnets delete test-client-subnet --region us-east4 -q gcloud compute networks subnets delete central-proxy-subnet --region $region -q gcloud compute networks delete producer-vpc -q
17. Поздравляем!
Поздравляем с завершением работы над кодом.
Что мы рассмотрели
- Создайте настройку серверной части PSC, связанной с глобальным балансировщиком нагрузки внешних приложений.
- Настройте веб-службу, управляемую Apache, и представьте ее как службу PSC через вложение службы.
- Создайте сертификаты SSL для прекращения SSL на внутренних и внешних балансировщиках нагрузки приложений.
- Настройте общедоступную зону Cloud DNS для доступа к службе PSC.
1. Введение
Private Service Connect позволяет производителям услуг предоставлять услуги в частном порядке из одной сети VPC в другую. Потребители могут получить доступ к сервисам производителя через конечные точки PSC или бэкэнды PSC.
В центре внимания этой лаборатории кода — серверные части PSC. Серверные части PSC используются вместе с балансировщиками нагрузки прокси-сервера Google Cloud (приложение или сеть). Использование PSC Backends обеспечивает более детальные элементы управления на стороне потребителя, такие как:
- Более глубокая наблюдаемость и протоколирование
- Интеграция облачной брони
- Пользовательские URL-адреса
- Расширенное управление трафиком
- Пользовательские сертификаты TLS
В этой лабораторной работе вы узнаете, как создать серверную часть Private Service Connect с глобальным балансировщиком нагрузки внешних приложений для частного доступа к службе производителя в другой сети.
Что вы узнаете
- Создайте и настройте серверную часть PSC, связанную с глобальным балансировщиком нагрузки внешних приложений.
- Настройте веб-службу, управляемую Apache, и представьте ее как службу PSC через вложение службы.
- Создайте сертификаты SSL для прекращения SSL на внутренних и внешних балансировщиках нагрузки приложений.
- Настройте общедоступную зону Cloud DNS для доступа к сервису PSC.
Что вам понадобится
- Проект Google Cloud с разрешениями владельца
2. Тестовая среда
Среда, которую вы создадите, будет состоять из Consumer VPC и Producer VPC. В VPC-источнике вы развернете управляемую группу экземпляров из шаблона экземпляра, который создает веб-службу Apache с открытым исходным кодом. Вы также развернете тестовую виртуальную машину, чтобы обеспечить правильную локальную функциональность службы. Вы предоставите службу Apache как службу PSC Producer через вложение службы.
В потребительском VPC вы развернете глобальный балансировщик нагрузки внешних приложений с внутренней службой PSC, указывающей на службу Apache. Затем вы настроите общедоступную зону DNS для доступа к службе PSC в общедоступном Интернете.
3. Настройка и требования
Самостоятельная настройка среды
- Войдите в 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, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории кода можно выполнять в браузере. Вам не нужно ничего устанавливать.
4. Прежде чем начать
Включить API
В Cloud Shell убедитесь, что идентификатор вашего проекта настроен.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export project=YOUR-PROJECT-NAME export region=us-central1 echo $project echo $region
Включите все необходимые сервисы
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
5. Настройка продюсера VPC
Создать сеть VPC
Из Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Создание подсетей
В Producer-VPC будут развернуты две подсети общего назначения. Подсеть службы будет использоваться для развертывания виртуальных машин веб-службы Apache, а также правила переадресации балансировщика нагрузки. Подсеть тестового клиента будет находиться в другом регионе и будет использоваться для развертывания виртуальной машины для тестирования службы Apache с включенным глобальным доступом.
Из Cloud Shell
gcloud compute networks subnets create service-subnet \ --network=producer-vpc \ --range=10.0.0.0/28 \ --region=$region
Из Cloud Shell
gcloud compute networks subnets create test-client-subnet \ --network=producer-vpc \ --range=10.0.1.0/28 \ --region=us-east4
Мы также должны развернуть подсеть, работающую только через прокси-сервер, для использования с региональным внутренним балансировщиком нагрузки приложений.
Из Cloud Shell
gcloud compute networks subnets create central-proxy-subnet \ --network=producer-vpc \ --range=10.100.101.0/24 \ --region=$region \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE
При развертывании службы PSC каждой уникальной службе требуется соответствующая подсеть PSC NAT, которая будет связана с дополнением службы. Размер этой подсети должен быть соответствующим образом зависит от количества ожидаемых подключенных конечных точек.
Из Cloud Shell
gcloud compute networks subnets create psc-nat-subnet \ --network=producer-vpc \ --region=$region \ --range=10.100.100.0/24 \ --purpose=PRIVATE_SERVICE_CONNECT
Создать облачный NAT
Облачный NAT необходим для установки соответствующих пакетов для наших сервисов производителя.
Из Cloud Shell
gcloud compute routers create central-cr \ --network=producer-vpc \ --region=$region
Из Cloud Shell
gcloud compute routers nats create central-nat \ --router=central-cr \ --region=$region \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Создание политики и правил сетевого брандмауэра
Из Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global gcloud compute network-firewall-policies associations create \ --firewall-policy producer-vpc-policy \ --network producer-vpc \ --name network-producer-vpc \ --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 producer-vpc-policy \ --description "SSH with IAP" \ --direction INGRESS \ --src-ip-ranges 35.235.240.0/20 \ --layer4-configs tcp:22 \ --global-firewall-policy
Потребуются два дополнительных правила межсетевого экрана, чтобы разрешить входящий трафик на серверные части балансировщика нагрузки, поступающий из подсети, работающей только с прокси-сервером балансировщика нагрузки (2000), а также правило, разрешающее проверки работоспособности балансировщика нагрузки на внутренних экземплярах (2001).
Из Cloud Shell
gcloud compute network-firewall-policies rules create 2000 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "allow traffic from load balancer proxy subnet" \ --direction INGRESS \ --src-ip-ranges 10.100.101.0/24 \ --layer4-configs tcp:443 \ --global-firewall-policy gcloud compute network-firewall-policies rules create 2001 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "allow load balancer health checks" \ --direction INGRESS \ --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \ --layer4-configs tcp:443 \ --global-firewall-policy
6. Создайте веб-службу Apache.
Мы создадим простую веб-службу Apache, которая отображает «Службу PSC».
Создать шаблон экземпляра
Из Cloud Shell
gcloud compute instance-templates create apache-service-template \ --network producer-vpc \ --subnet service-subnet \ --region $region \ --no-address \ --metadata startup-script='#! /bin/bash sudo apt-get update apt-get install apache2 -y a2enmod ssl sudo a2ensite default-ssl echo "PSC Service" | \ tee /var/www/html/index.html systemctl restart apache2'
Создать проверку работоспособности для MIG
Из Cloud Shell
gcloud compute health-checks create https service-mig-healthcheck \ --port=443 \ --global
Создать группу управляемых экземпляров
Из Cloud Shell
gcloud compute instance-groups managed create psc-service-mig \ --region $region \ --size=2 \ --template=apache-service-template \ --health-check=service-mig-healthcheck gcloud compute instance-groups managed set-named-ports psc-service-mig \ --named-ports=https:443 \ --region=$region
7. Создайте самозаверяющий сертификат.
Выполните шаг 1 из инструкций здесь, чтобы создать самозаверяющий сертификат. Вы можете выполнять все команды в Cloud Shell. Вернитесь в это место, когда шаг 1 будет завершен. ВАШЕ ОБЩЕЕ ИМЯ ДОЛЖНО БЫТЬ НАСТРОЕНО С ПОМОЩЬЮ EXAMPLE.COM.
Создайте ресурс сертификата для связи с балансировщиком нагрузки. Замените параметры сертификата и закрытого ключа конкретными именами файлов.
Из Cloud Shell
gcloud compute ssl-certificates create producer-service-cert \ --certificate=<your-producer-certfile.cert> \ --private-key=<your-producer-keyfile.pem> \ --region=$region
8. Создайте внутренний балансировщик нагрузки региональных приложений.
Далее мы создадим компоненты балансировщика нагрузки для службы. Мы используем внутренний региональный балансировщик нагрузки приложений, но у вас есть возможность использовать любой внутренний балансировщик нагрузки Google Cloud. Следуйте соответствующей документации по балансировщику нагрузки для обработки TLS.
Создайте внутренний IP-адрес, который будет использоваться для правила переадресации вашего балансировщика нагрузки, и запишите IP-адрес, который будет использоваться позже, когда вы сделаете тестовый вызов службы.
Из Cloud Shell
gcloud compute addresses create apache-service-ip \ --region=$region \ --subnet=service-subnet gcloud compute addresses describe apache-service-ip \ --format="get(address)" \ --region=$region
Создайте проверку работоспособности балансировщика нагрузки.
Из Cloud Shell
gcloud compute health-checks create https lb-apache-service-hc \ --region=$region \ --port-name=https
Создайте серверную службу.
Из Cloud Shell
gcloud compute backend-services create apache-bes\ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --port-name=https \ --health-checks=lb-apache-service-hc \ --health-checks-region=$region \ --region=$region gcloud compute backend-services add-backend apache-bes \ --balancing-mode=UTILIZATION \ --instance-group=psc-service-mig \ --region=$region
Создайте карту URL-адресов.
Из Cloud Shell
gcloud compute url-maps create producer-url-map \ --default-service=apache-bes \ --region=$region
Создайте целевые HTTPS-прокси.
Из Cloud Shell
gcloud compute target-https-proxies create https-proxy \ --url-map=producer-url-map \ --region=$region \ --ssl-certificates=producer-service-cert
Создайте правило переадресации.
Из Cloud Shell
gcloud compute forwarding-rules create apache-fr \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=producer-vpc \ --subnet=service-subnet \ --address=apache-service-ip \ --ports=443 \ --region=$region \ --target-https-proxy=https-proxy \ --target-https-proxy-region=$region \ --allow-global-access
9. Создайте тестовую виртуальную машину и протестируйте службу локально.
Прежде чем создавать вложение службы, мы создадим тестовую клиентскую виртуальную машину в другом регионе, чтобы проверить правильность настройки балансировщика нагрузки с помощью Global Access и TLS.
Из Cloud Shell
gcloud compute instances create vm-client \ --zone=us-east4-a \ --subnet=test-client-subnet \ --no-address
Подождите около минуты, пока подготовка завершится, а затем подключитесь к экземпляру по SSH.
Из Cloud Shell
gcloud compute ssh \ --zone "us-east4-a" "vm-client" \ --tunnel-through-iap \ --project $project
Протестируйте службу Apache, подключившись через 443 через балансировщик нагрузки. Внутренний IP-адрес — это тот, который вы зарезервировали и записали ранее.
curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
PSC Service
Выход из ВМ.
Из VM-клиента
exit
10. Создайте служебный вложение.
В этом примере мы настраиваем наше служебное приложение так, чтобы разрешать подключения PSC только из этого проекта. Его можно настроить для приема одного или нескольких конкретных проектов или сетей, но не обоих одновременно. Мы установили максимальное количество подключений до 5. Для каждого проекта или сети должен быть установлен лимит.
Из Cloud Shell
gcloud compute service-attachments create apache-service-attachment \ --region=$region \ --producer-forwarding-rule=apache-fr \ --connection-preference=ACCEPT_MANUAL \ --consumer-accept-list=$project=5 \ --nat-subnets=psc-nat-subnet
Вам следует записать URI вложения службы ( selfLink ), так как он понадобится вам на следующем этапе настройки серверной части PSC. Вы можете получить его, выполнив следующую команду в Cloud Shell.
Из Cloud Shell
gcloud compute service-attachments describe apache-service-attachment \ --region $region
Скопируйте URI, начиная с проектов.
Пример: проекты/$project/regions/$region/serviceAttachments/apache-service-attachment
11. Настройка потребительского VPC
Создать сеть VPC
Из Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Создать подсеть
На стороне потребителя необходима подсеть, где будет развернута группа конечных точек сети Private Service Connect (NEG).
Из Cloud Shell
gcloud compute networks subnets create consumer-subnet \ --network=consumer-vpc \ --region=$region \ --range=10.0.0.0/28
12. Зарезервируйте внешний IP-адрес и создайте самозаверяющий сертификат на стороне потребителя.
Внешний IP
Создайте внешний статический IP-адрес, который будет использоваться позже для нашего правила переадресации балансировщика нагрузки, и запишите IP-адрес в переменной Cloud Shell.
Из Cloud Shell
gcloud compute addresses create external-psc-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global export externalip=$(gcloud compute addresses describe external-psc-ip \ --format="get(address)" \ --global) echo $externalip
Самоподписанный сертификат потребителя
Во второй раз выполните шаг 1 из инструкций здесь , чтобы создать самозаверяющий сертификат. Вы можете выполнять все команды в Cloud Shell. Вернитесь в это место, когда шаг 1 будет завершен. Мы будем использовать общедоступную службу DNS с подстановочными знаками с открытым исходным кодом под названием nip.io вместо собственной общедоступной зоны DNS. Общедоступный URL-адрес вашей службы PSC будет использовать внешний IP-адрес, который вы только что настроили. ВАШЕ ОБЩЕЕ ИМЯ ДОЛЖНО БЫТЬ НАСТРОЕНО С ПОМОЩЬЮ <ВАШ-ВНЕШНИЙ-IP.nip.io>
Создайте ресурс сертификата для связи с внешним балансировщиком нагрузки. Замените параметры сертификата и закрытого ключа конкретными именами файлов.
Из Cloud Shell
gcloud compute ssl-certificates create consumer-service-cert \ --certificate=<your-consumer-certfile.cert> \ --private-key=<your-consumer-keyfile.pem> \ --global
13. Создайте компоненты балансировщика нагрузки.
Мы создадим глобальный балансировщик нагрузки внешних приложений с PSC NEG, указывающим на наше недавно созданное вложение службы в качестве внутренней службы.
Имейте под рукой URI вложения службы, который мы отметили на последнем шаге. Замените приведенный ниже psc-target-service своим URI.
Из Cloud Shell
gcloud compute network-endpoint-groups create apache-psc-neg \ --network-endpoint-type=private-service-connect \ --psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \ --region=$region \ --network=consumer-vpc \ --subnet=consumer-subnet
Создайте серверную службу.
Из Cloud Shell
gcloud compute backend-services create apache-pscneg-bes \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global gcloud compute backend-services add-backend apache-pscneg-bes \ --network-endpoint-group=apache-psc-neg \ --network-endpoint-group-region=$region \ --global
Создайте карту URL-адресов
Из Cloud Shell
gcloud compute url-maps create consumer-url-map \ --default-service=apache-pscneg-bes \ --global
Создайте целевые HTTPS-прокси.
Из Cloud Shell
gcloud compute target-https-proxies create psc-https-proxy \ --url-map=consumer-url-map \ --ssl-certificates=consumer-service-cert
Создайте правило переадресации
Из Cloud Shell
gcloud compute forwarding-rules create external-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=external-psc-ip \ --global \ --target-https-proxy=psc-https-proxy \ --ports=443
14. Создайте общедоступную зону DNS.
Из Cloud Shell
gcloud dns managed-zones create "psc-service" \ --dns-name=$externalip.nip.io. \ --description="public dns for psc service" \ --visibility=public
Из Cloud Shell
gcloud dns record-sets transaction start \ --zone="psc-service" gcloud dns record-sets transaction add $externalip \ --name=$externalip.nip.io \ --ttl=300 \ --type=A \ --zone="psc-service" gcloud dns record-sets transaction execute \ --zone="psc-service"
15. Проверьте подключение потребительского PSC.
Подождите 7–10 минут перед тестированием, чтобы дать возможность общедоступному DNS распространиться.
Из Cloud Shell
curl https://$externalip.nip.io -k
Вы также можете протестировать из своего браузера, введя https://<ВАШ-ВНЕШНИЙ-IP>.nip.io в свой браузер или настольный терминал.
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
PSC Service
16. Этапы очистки
Удаление компонентов лаборатории из одного терминала Cloud Shell
gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q gcloud dns managed-zones delete "psc-service" -q gcloud compute forwarding-rules delete external-fr --global -q gcloud compute target-https-proxies delete psc-https-proxy -q gcloud compute url-maps delete consumer-url-map --global -q gcloud compute backend-services delete apache-pscneg-bes --global -q gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q gcloud compute ssl-certificates delete consumer-service-cert --global -q gcloud compute addresses delete external-psc-ip --global -q gcloud compute networks subnets delete consumer-subnet --region $region -q gcloud compute networks delete consumer-vpc -q gcloud compute instances delete vm-client --zone=us-east4-a -q gcloud compute service-attachments delete apache-service-attachment --region $region -q gcloud compute forwarding-rules delete apache-fr --region $region -q gcloud compute target-https-proxies delete https-proxy --region $region -q gcloud compute url-maps delete producer-url-map --region $region -q gcloud compute backend-services delete apache-bes --region $region -q gcloud compute health-checks delete lb-apache-service-hc --region $region -q gcloud compute addresses delete apache-service-ip --region $region -q gcloud compute ssl-certificates delete producer-service-cert --region $region -q gcloud compute instance-groups managed delete psc-service-mig --region $region -q gcloud compute health-checks delete service-mig-healthcheck --global -q gcloud compute instance-templates delete apache-service-template -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute routers nats delete central-nat --router=central-cr --region $region -q gcloud compute routers delete central-cr --region $region -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete service-subnet --region $region -q gcloud compute networks subnets delete test-client-subnet --region us-east4 -q gcloud compute networks subnets delete central-proxy-subnet --region $region -q gcloud compute networks delete producer-vpc -q
17. Поздравляем!
Поздравляем с завершением работы над кодом.
Что мы рассмотрели
- Создайте настройку серверной части PSC, связанной с глобальным балансировщиком нагрузки внешних приложений.
- Настройте веб-службу, управляемую Apache, и представьте ее как службу PSC через вложение службы.
- Создайте сертификаты SSL для прекращения SSL на внутренних и внешних балансировщиках нагрузки приложений.
- Настройте общедоступную зону Cloud DNS для доступа к службе PSC.
1. Введение
Private Service Connect позволяет производителям услуг предоставлять услуги в частном порядке из одной сети VPC в другую. Потребители могут получить доступ к сервисам производителя через конечные точки PSC или бэкэнды PSC.
В центре внимания этой лаборатории кода — серверные части PSC. Серверные части PSC используются вместе с балансировщиками нагрузки прокси-сервера Google Cloud (приложение или сеть). Использование PSC Backends обеспечивает более детальные элементы управления на стороне потребителя, такие как:
- Более глубокая наблюдаемость и протоколирование
- Интеграция облачной брони
- Пользовательские URL-адреса
- Расширенное управление трафиком
- Пользовательские сертификаты TLS
В этой лабораторной работе вы узнаете, как создать серверную часть Private Service Connect с глобальным балансировщиком нагрузки внешних приложений для частного доступа к службе производителя в другой сети.
Что вы узнаете
- Создайте и настройте серверную часть PSC, связанную с глобальным балансировщиком нагрузки внешних приложений.
- Настройте веб-службу, управляемую Apache, и представьте ее как службу PSC через вложение службы.
- Создайте сертификаты SSL для прекращения SSL на внутренних и внешних балансировщиках нагрузки приложений.
- Настройте общедоступную зону Cloud DNS для доступа к сервису PSC.
Что вам понадобится
- Проект Google Cloud с разрешениями владельца
2. Тестовая среда
Среда, которую вы создадите, будет состоять из Consumer VPC и Producer VPC. В VPC-источнике вы развернете управляемую группу экземпляров из шаблона экземпляра, который создает веб-службу Apache с открытым исходным кодом. Вы также развернете тестовую виртуальную машину, чтобы обеспечить правильную локальную функциональность службы. Вы предоставите службу Apache как службу PSC Producer через вложение службы.
В потребительском VPC вы развернете глобальный балансировщик нагрузки внешних приложений с внутренней службой PSC, указывающей на службу Apache. Затем вы настроите общедоступную зону DNS для доступа к службе PSC в общедоступном Интернете.
3. Настройка и требования
Самостоятельная настройка среды
- Войдите в 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, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории кода можно выполнять в браузере. Вам не нужно ничего устанавливать.
4. Прежде чем начать
Включить API
В Cloud Shell убедитесь, что идентификатор вашего проекта настроен.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export project=YOUR-PROJECT-NAME export region=us-central1 echo $project echo $region
Включите все необходимые сервисы
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
5. Настройка продюсера VPC
Создать сеть VPC
Из Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Создание подсетей
В Producer-VPC будут развернуты две подсети общего назначения. Подсеть службы будет использоваться для развертывания виртуальных машин веб-службы Apache, а также правила переадресации балансировщика нагрузки. Подсеть тестового клиента будет находиться в другом регионе и будет использоваться для развертывания виртуальной машины для тестирования службы Apache с включенным глобальным доступом.
Из Cloud Shell
gcloud compute networks subnets create service-subnet \ --network=producer-vpc \ --range=10.0.0.0/28 \ --region=$region
Из Cloud Shell
gcloud compute networks subnets create test-client-subnet \ --network=producer-vpc \ --range=10.0.1.0/28 \ --region=us-east4
Мы также должны развернуть подсеть, работающую только через прокси-сервер, для использования с региональным внутренним балансировщиком нагрузки приложений.
Из Cloud Shell
gcloud compute networks subnets create central-proxy-subnet \ --network=producer-vpc \ --range=10.100.101.0/24 \ --region=$region \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE
При развертывании службы PSC каждой уникальной службе требуется соответствующая подсеть PSC NAT, которая будет связана с дополнением службы. Размер этой подсети должен быть соответствующим образом зависит от количества ожидаемых подключенных конечных точек.
Из Cloud Shell
gcloud compute networks subnets create psc-nat-subnet \ --network=producer-vpc \ --region=$region \ --range=10.100.100.0/24 \ --purpose=PRIVATE_SERVICE_CONNECT
Создать облачный NAT
Облачный NAT необходим для установки соответствующих пакетов для наших сервисов производителя.
Из Cloud Shell
gcloud compute routers create central-cr \ --network=producer-vpc \ --region=$region
Из Cloud Shell
gcloud compute routers nats create central-nat \ --router=central-cr \ --region=$region \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Создание политики и правил сетевого брандмауэра
Из Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global gcloud compute network-firewall-policies associations create \ --firewall-policy producer-vpc-policy \ --network producer-vpc \ --name network-producer-vpc \ --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 producer-vpc-policy \ --description "SSH with IAP" \ --direction INGRESS \ --src-ip-ranges 35.235.240.0/20 \ --layer4-configs tcp:22 \ --global-firewall-policy
Потребуются два дополнительных правила межсетевого экрана, чтобы разрешить входящий трафик на серверные части балансировщика нагрузки, поступающий из подсети, работающей только с прокси-сервером балансировщика нагрузки (2000), а также правило, разрешающее проверки работоспособности балансировщика нагрузки на внутренних экземплярах (2001).
Из Cloud Shell
gcloud compute network-firewall-policies rules create 2000 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "allow traffic from load balancer proxy subnet" \ --direction INGRESS \ --src-ip-ranges 10.100.101.0/24 \ --layer4-configs tcp:443 \ --global-firewall-policy gcloud compute network-firewall-policies rules create 2001 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "allow load balancer health checks" \ --direction INGRESS \ --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \ --layer4-configs tcp:443 \ --global-firewall-policy
6. Создайте веб-службу Apache.
Мы создадим простую веб-службу Apache, которая отображает «Службу PSC».
Создать шаблон экземпляра
Из Cloud Shell
gcloud compute instance-templates create apache-service-template \ --network producer-vpc \ --subnet service-subnet \ --region $region \ --no-address \ --metadata startup-script='#! /bin/bash sudo apt-get update apt-get install apache2 -y a2enmod ssl sudo a2ensite default-ssl echo "PSC Service" | \ tee /var/www/html/index.html systemctl restart apache2'
Создать проверку работоспособности для MIG
Из Cloud Shell
gcloud compute health-checks create https service-mig-healthcheck \ --port=443 \ --global
Создать группу управляемых экземпляров
Из Cloud Shell
gcloud compute instance-groups managed create psc-service-mig \ --region $region \ --size=2 \ --template=apache-service-template \ --health-check=service-mig-healthcheck gcloud compute instance-groups managed set-named-ports psc-service-mig \ --named-ports=https:443 \ --region=$region
7. Создайте самозаверяющий сертификат.
Выполните шаг 1 из инструкций здесь, чтобы создать самозаверяющий сертификат. Вы можете выполнять все команды в Cloud Shell. Вернитесь в это место, когда шаг 1 будет завершен. ВАШЕ ОБЩЕЕ ИМЯ ДОЛЖНО БЫТЬ НАСТРОЕНО С ПОМОЩЬЮ EXAMPLE.COM.
Создайте ресурс сертификата для связи с балансировщиком нагрузки. Замените параметры сертификата и закрытого ключа конкретными именами файлов.
Из Cloud Shell
gcloud compute ssl-certificates create producer-service-cert \ --certificate=<your-producer-certfile.cert> \ --private-key=<your-producer-keyfile.pem> \ --region=$region
8. Создайте внутренний балансировщик нагрузки региональных приложений.
Далее мы создадим компоненты балансировщика нагрузки для службы. Мы используем внутренний региональный балансировщик нагрузки приложений, но у вас есть возможность использовать любой внутренний балансировщик нагрузки Google Cloud. Следуйте соответствующей документации по балансировщику нагрузки для обработки TLS.
Создайте внутренний IP-адрес, который будет использоваться для правила переадресации вашего балансировщика нагрузки, и запишите IP-адрес, который будет использоваться позже, когда вы сделаете тестовый вызов службы.
Из Cloud Shell
gcloud compute addresses create apache-service-ip \ --region=$region \ --subnet=service-subnet gcloud compute addresses describe apache-service-ip \ --format="get(address)" \ --region=$region
Создайте проверку работоспособности балансировщика нагрузки.
Из Cloud Shell
gcloud compute health-checks create https lb-apache-service-hc \ --region=$region \ --port-name=https
Создайте серверную службу.
Из Cloud Shell
gcloud compute backend-services create apache-bes\ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --port-name=https \ --health-checks=lb-apache-service-hc \ --health-checks-region=$region \ --region=$region gcloud compute backend-services add-backend apache-bes \ --balancing-mode=UTILIZATION \ --instance-group=psc-service-mig \ --region=$region
Создайте карту URL-адресов.
Из Cloud Shell
gcloud compute url-maps create producer-url-map \ --default-service=apache-bes \ --region=$region
Создайте целевые HTTPS-прокси.
Из Cloud Shell
gcloud compute target-https-proxies create https-proxy \ --url-map=producer-url-map \ --region=$region \ --ssl-certificates=producer-service-cert
Создайте правило переадресации.
Из Cloud Shell
gcloud compute forwarding-rules create apache-fr \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=producer-vpc \ --subnet=service-subnet \ --address=apache-service-ip \ --ports=443 \ --region=$region \ --target-https-proxy=https-proxy \ --target-https-proxy-region=$region \ --allow-global-access
9. Создайте тестовую виртуальную машину и протестируйте службу локально.
Прежде чем создавать вложение службы, мы создадим тестовую клиентскую виртуальную машину в другом регионе, чтобы проверить правильность настройки балансировщика нагрузки с помощью Global Access и TLS.
Из Cloud Shell
gcloud compute instances create vm-client \ --zone=us-east4-a \ --subnet=test-client-subnet \ --no-address
Подождите около минуты, пока подготовка завершится, а затем подключитесь к экземпляру по SSH.
Из Cloud Shell
gcloud compute ssh \ --zone "us-east4-a" "vm-client" \ --tunnel-through-iap \ --project $project
Протестируйте службу Apache, подключившись через 443 через балансировщик нагрузки. Внутренний IP-адрес — это тот, который вы зарезервировали и записали ранее.
curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
PSC Service
Выход из ВМ.
Из VM-клиента
exit
10. Создайте служебный вложение.
В этом примере мы настраиваем наше служебное приложение так, чтобы разрешать подключения PSC только из этого проекта. Его можно настроить для приема одного или нескольких конкретных проектов или сетей, но не обоих одновременно. Мы установили максимальное количество подключений до 5. Для каждого проекта или сети должен быть установлен лимит.
Из Cloud Shell
gcloud compute service-attachments create apache-service-attachment \ --region=$region \ --producer-forwarding-rule=apache-fr \ --connection-preference=ACCEPT_MANUAL \ --consumer-accept-list=$project=5 \ --nat-subnets=psc-nat-subnet
Вам следует записать URI вложения службы ( selfLink ), так как он понадобится вам на следующем этапе настройки серверной части PSC. Вы можете получить его, выполнив следующую команду в Cloud Shell.
Из Cloud Shell
gcloud compute service-attachments describe apache-service-attachment \ --region $region
Скопируйте URI, начиная с проектов.
Пример: проекты/$project/regions/$region/serviceAttachments/apache-service-attachment
11. Настройка потребительского VPC
Создать сеть VPC
Из Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Создать подсеть
На стороне потребителя необходима подсеть, где будет развернута группа конечных точек сети Private Service Connect (NEG).
Из Cloud Shell
gcloud compute networks subnets create consumer-subnet \ --network=consumer-vpc \ --region=$region \ --range=10.0.0.0/28
12. Зарезервируйте внешний IP-адрес и создайте самозаверяющий сертификат на стороне потребителя.
Внешний IP
Создайте внешний статический IP-адрес, который будет использоваться позже для нашего правила переадресации балансировщика нагрузки, и запишите IP-адрес в переменной Cloud Shell.
Из Cloud Shell
gcloud compute addresses create external-psc-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global export externalip=$(gcloud compute addresses describe external-psc-ip \ --format="get(address)" \ --global) echo $externalip
Самоподписанный сертификат потребителя
Во второй раз выполните шаг 1 из инструкций здесь , чтобы создать самозаверяющий сертификат. Вы можете выполнять все команды в Cloud Shell. Вернитесь в это место, когда шаг 1 будет завершен. Мы будем использовать общедоступную службу DNS с подстановочными знаками с открытым исходным кодом под названием nip.io вместо собственной общедоступной зоны DNS. Общедоступный URL-адрес вашей службы PSC будет использовать внешний IP-адрес, который вы только что настроили. ВАШЕ ОБЩЕЕ ИМЯ ДОЛЖНО БЫТЬ НАСТРОЕНО С ПОМОЩЬЮ <ВАШ-ВНЕШНИЙ-IP.nip.io>
Создайте ресурс сертификата для связи с внешним балансировщиком нагрузки. Замените параметры сертификата и закрытого ключа конкретными именами файлов.
Из Cloud Shell
gcloud compute ssl-certificates create consumer-service-cert \ --certificate=<your-consumer-certfile.cert> \ --private-key=<your-consumer-keyfile.pem> \ --global
13. Создайте компоненты балансировщика нагрузки.
Мы создадим глобальный балансировщик нагрузки внешних приложений с PSC NEG, указывающим на наше недавно созданное вложение службы в качестве внутренней службы.
Имейте под рукой URI вложения службы, который мы отметили на последнем шаге. Замените приведенный ниже psc-target-service своим URI.
Из Cloud Shell
gcloud compute network-endpoint-groups create apache-psc-neg \ --network-endpoint-type=private-service-connect \ --psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \ --region=$region \ --network=consumer-vpc \ --subnet=consumer-subnet
Создайте серверную службу.
Из Cloud Shell
gcloud compute backend-services create apache-pscneg-bes \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global gcloud compute backend-services add-backend apache-pscneg-bes \ --network-endpoint-group=apache-psc-neg \ --network-endpoint-group-region=$region \ --global
Создайте карту URL-адресов
Из Cloud Shell
gcloud compute url-maps create consumer-url-map \ --default-service=apache-pscneg-bes \ --global
Создайте целевые HTTPS-прокси.
Из Cloud Shell
gcloud compute target-https-proxies create psc-https-proxy \ --url-map=consumer-url-map \ --ssl-certificates=consumer-service-cert
Создайте правило переадресации
Из Cloud Shell
gcloud compute forwarding-rules create external-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=external-psc-ip \ --global \ --target-https-proxy=psc-https-proxy \ --ports=443
14. Создайте общедоступную зону DNS.
Из Cloud Shell
gcloud dns managed-zones create "psc-service" \ --dns-name=$externalip.nip.io. \ --description="public dns for psc service" \ --visibility=public
Из Cloud Shell
gcloud dns record-sets transaction start \ --zone="psc-service" gcloud dns record-sets transaction add $externalip \ --name=$externalip.nip.io \ --ttl=300 \ --type=A \ --zone="psc-service" gcloud dns record-sets transaction execute \ --zone="psc-service"
15. Проверьте подключение потребительского PSC.
Подождите 7–10 минут перед тестированием, чтобы дать возможность общедоступному DNS распространиться.
Из Cloud Shell
curl https://$externalip.nip.io -k
Вы также можете протестировать из своего браузера, введя https://<ВАШ-ВНЕШНИЙ-IP>.nip.io в свой браузер или настольный терминал.
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
PSC Service
16. Этапы очистки
Удаление компонентов лаборатории из одного терминала Cloud Shell
gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q gcloud dns managed-zones delete "psc-service" -q gcloud compute forwarding-rules delete external-fr --global -q gcloud compute target-https-proxies delete psc-https-proxy -q gcloud compute url-maps delete consumer-url-map --global -q gcloud compute backend-services delete apache-pscneg-bes --global -q gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q gcloud compute ssl-certificates delete consumer-service-cert --global -q gcloud compute addresses delete external-psc-ip --global -q gcloud compute networks subnets delete consumer-subnet --region $region -q gcloud compute networks delete consumer-vpc -q gcloud compute instances delete vm-client --zone=us-east4-a -q gcloud compute service-attachments delete apache-service-attachment --region $region -q gcloud compute forwarding-rules delete apache-fr --region $region -q gcloud compute target-https-proxies delete https-proxy --region $region -q gcloud compute url-maps delete producer-url-map --region $region -q gcloud compute backend-services delete apache-bes --region $region -q gcloud compute health-checks delete lb-apache-service-hc --region $region -q gcloud compute addresses delete apache-service-ip --region $region -q gcloud compute ssl-certificates delete producer-service-cert --region $region -q gcloud compute instance-groups managed delete psc-service-mig --region $region -q gcloud compute health-checks delete service-mig-healthcheck --global -q gcloud compute instance-templates delete apache-service-template -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute routers nats delete central-nat --router=central-cr --region $region -q gcloud compute routers delete central-cr --region $region -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete service-subnet --region $region -q gcloud compute networks subnets delete test-client-subnet --region us-east4 -q gcloud compute networks subnets delete central-proxy-subnet --region $region -q gcloud compute networks delete producer-vpc -q
17. Поздравляем!
Поздравляем с завершением работы над кодом.
Что мы рассмотрели
- Создайте настройку серверной части PSC, связанной с глобальным балансировщиком нагрузки внешних приложений.
- Настройте веб-службу, управляемую Apache, и представьте ее как службу PSC через вложение службы.
- Создайте сертификаты SSL для прекращения SSL на внутренних и внешних балансировщиках нагрузки приложений.
- Настройте общедоступную зону Cloud DNS для доступа к службе PSC.
1. Введение
Private Service Connect позволяет производителям услуг предоставлять услуги в частном порядке из одной сети VPC в другую. Потребители могут получить доступ к сервисам производителя через конечные точки PSC или бэкэнды PSC.
В центре внимания этой лаборатории кода — серверные части PSC. Серверные части PSC используются вместе с балансировщиками нагрузки прокси-сервера Google Cloud (приложение или сеть). Использование PSC Backends обеспечивает более детальные элементы управления на стороне потребителя, такие как:
- Более глубокая наблюдаемость и протоколирование
- Интеграция облачной брони
- Пользовательские URL-адреса
- Расширенное управление трафиком
- Пользовательские сертификаты TLS
В этой лабораторной работе вы узнаете, как создать серверную часть Private Service Connect с глобальным балансировщиком нагрузки внешних приложений для частного доступа к службе производителя в другой сети.
Что вы узнаете
- Создайте и настройте серверную часть PSC, связанную с глобальным балансировщиком нагрузки внешних приложений.
- Настройте веб-службу, управляемую Apache, и представьте ее как службу PSC через вложение службы.
- Создайте сертификаты SSL для прекращения SSL на внутренних и внешних балансировщиках нагрузки приложений.
- Настройте общедоступную зону Cloud DNS для доступа к сервису PSC.
Что вам понадобится
- Проект Google Cloud с разрешениями владельца
2. Тестовая среда
Среда, которую вы создадите, будет состоять из Consumer VPC и Producer VPC. В VPC-источнике вы развернете управляемую группу экземпляров из шаблона экземпляра, который создает веб-службу Apache с открытым исходным кодом. Вы также развернете тестовую виртуальную машину, чтобы обеспечить правильную локальную функциональность службы. Вы предоставите службу Apache как службу PSC Producer через вложение службы.
В потребительском VPC вы развернете глобальный балансировщик нагрузки внешних приложений с внутренней службой PSC, указывающей на службу Apache. Затем вы настроите общедоступную зону DNS для доступа к службе PSC в общедоступном Интернете.
3. Настройка и требования
Самостоятельная настройка среды
- Войдите в 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, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории кода можно выполнять в браузере. Вам не нужно ничего устанавливать.
4. Прежде чем начать
Включить API
В Cloud Shell убедитесь, что идентификатор вашего проекта настроен.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export project=YOUR-PROJECT-NAME export region=us-central1 echo $project echo $region
Включите все необходимые сервисы
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
5. Настройка продюсера VPC
Создать сеть VPC
Из Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Создание подсетей
В Producer-VPC будут развернуты две подсети общего назначения. Подсеть службы будет использоваться для развертывания виртуальных машин веб-службы Apache, а также правила переадресации балансировщика нагрузки. Подсеть тестового клиента будет находиться в другом регионе и будет использоваться для развертывания виртуальной машины для тестирования службы Apache с включенным глобальным доступом.
Из Cloud Shell
gcloud compute networks subnets create service-subnet \ --network=producer-vpc \ --range=10.0.0.0/28 \ --region=$region
Из Cloud Shell
gcloud compute networks subnets create test-client-subnet \ --network=producer-vpc \ --range=10.0.1.0/28 \ --region=us-east4
Мы также должны развернуть подсеть, работающую только через прокси-сервер, для использования с региональным внутренним балансировщиком нагрузки приложений.
Из Cloud Shell
gcloud compute networks subnets create central-proxy-subnet \ --network=producer-vpc \ --range=10.100.101.0/24 \ --region=$region \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE
При развертывании службы PSC каждой уникальной службе требуется соответствующая подсеть PSC NAT, которая будет связана с дополнением службы. Размер этой подсети должен быть соответствующим образом зависит от количества ожидаемых подключенных конечных точек.
Из Cloud Shell
gcloud compute networks subnets create psc-nat-subnet \ --network=producer-vpc \ --region=$region \ --range=10.100.100.0/24 \ --purpose=PRIVATE_SERVICE_CONNECT
Создать облачный NAT
Облачный NAT необходим для установки соответствующих пакетов для наших сервисов производителя.
Из Cloud Shell
gcloud compute routers create central-cr \ --network=producer-vpc \ --region=$region
Из Cloud Shell
gcloud compute routers nats create central-nat \ --router=central-cr \ --region=$region \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Создание политики и правил сетевого брандмауэра
Из Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global gcloud compute network-firewall-policies associations create \ --firewall-policy producer-vpc-policy \ --network producer-vpc \ --name network-producer-vpc \ --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 producer-vpc-policy \ --description "SSH with IAP" \ --direction INGRESS \ --src-ip-ranges 35.235.240.0/20 \ --layer4-configs tcp:22 \ --global-firewall-policy
Потребуются два дополнительных правила межсетевого экрана, чтобы разрешить входящий трафик на серверные части балансировщика нагрузки, поступающий из подсети, работающей только с прокси-сервером балансировщика нагрузки (2000), а также правило, разрешающее проверки работоспособности балансировщика нагрузки на внутренних экземплярах (2001).
Из Cloud Shell
gcloud compute network-firewall-policies rules create 2000 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "allow traffic from load balancer proxy subnet" \ --direction INGRESS \ --src-ip-ranges 10.100.101.0/24 \ --layer4-configs tcp:443 \ --global-firewall-policy gcloud compute network-firewall-policies rules create 2001 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "allow load balancer health checks" \ --direction INGRESS \ --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \ --layer4-configs tcp:443 \ --global-firewall-policy
6. Создайте веб-службу Apache.
Мы создадим простую веб-службу Apache, которая отображает «Службу PSC».
Создать шаблон экземпляра
Из Cloud Shell
gcloud compute instance-templates create apache-service-template \ --network producer-vpc \ --subnet service-subnet \ --region $region \ --no-address \ --metadata startup-script='#! /bin/bash sudo apt-get update apt-get install apache2 -y a2enmod ssl sudo a2ensite default-ssl echo "PSC Service" | \ tee /var/www/html/index.html systemctl restart apache2'
Создать проверку работоспособности для MIG
Из Cloud Shell
gcloud compute health-checks create https service-mig-healthcheck \ --port=443 \ --global
Создать группу управляемых экземпляров
Из Cloud Shell
gcloud compute instance-groups managed create psc-service-mig \ --region $region \ --size=2 \ --template=apache-service-template \ --health-check=service-mig-healthcheck gcloud compute instance-groups managed set-named-ports psc-service-mig \ --named-ports=https:443 \ --region=$region
7. Создайте самозаверяющий сертификат.
Выполните шаг 1 из инструкций здесь, чтобы создать самозаверяющий сертификат. Вы можете выполнять все команды в Cloud Shell. Вернитесь в это место, когда шаг 1 будет завершен. ВАШЕ ОБЩЕЕ ИМЯ ДОЛЖНО БЫТЬ НАСТРОЕНО С ПОМОЩЬЮ EXAMPLE.COM.
Создайте ресурс сертификата для связи с балансировщиком нагрузки. Замените параметры сертификата и закрытого ключа конкретными именами файлов.
Из Cloud Shell
gcloud compute ssl-certificates create producer-service-cert \ --certificate=<your-producer-certfile.cert> \ --private-key=<your-producer-keyfile.pem> \ --region=$region
8. Создайте внутренний балансировщик нагрузки региональных приложений.
Далее мы создадим компоненты балансировщика нагрузки для службы. Мы используем внутренний региональный балансировщик нагрузки приложений, но у вас есть возможность использовать любой внутренний балансировщик нагрузки Google Cloud. Следуйте соответствующей документации по балансировщику нагрузки для обработки TLS.
Создайте внутренний IP-адрес, который будет использоваться для правила переадресации вашего балансировщика нагрузки, и запишите IP-адрес, который будет использоваться позже, когда вы сделаете тестовый вызов службы.
Из Cloud Shell
gcloud compute addresses create apache-service-ip \ --region=$region \ --subnet=service-subnet gcloud compute addresses describe apache-service-ip \ --format="get(address)" \ --region=$region
Создайте проверку работоспособности балансировщика нагрузки.
Из Cloud Shell
gcloud compute health-checks create https lb-apache-service-hc \ --region=$region \ --port-name=https
Создайте серверную службу.
Из Cloud Shell
gcloud compute backend-services create apache-bes\ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --port-name=https \ --health-checks=lb-apache-service-hc \ --health-checks-region=$region \ --region=$region gcloud compute backend-services add-backend apache-bes \ --balancing-mode=UTILIZATION \ --instance-group=psc-service-mig \ --region=$region
Создайте карту URL-адресов.
Из Cloud Shell
gcloud compute url-maps create producer-url-map \ --default-service=apache-bes \ --region=$region
Создайте целевые HTTPS-прокси.
Из Cloud Shell
gcloud compute target-https-proxies create https-proxy \ --url-map=producer-url-map \ --region=$region \ --ssl-certificates=producer-service-cert
Создайте правило переадресации.
Из Cloud Shell
gcloud compute forwarding-rules create apache-fr \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=producer-vpc \ --subnet=service-subnet \ --address=apache-service-ip \ --ports=443 \ --region=$region \ --target-https-proxy=https-proxy \ --target-https-proxy-region=$region \ --allow-global-access
9. Создайте тестовую виртуальную машину и протестируйте службу локально.
Прежде чем создавать вложение службы, мы создадим тестовую клиентскую виртуальную машину в другом регионе, чтобы проверить правильность настройки балансировщика нагрузки с помощью Global Access и TLS.
Из Cloud Shell
gcloud compute instances create vm-client \ --zone=us-east4-a \ --subnet=test-client-subnet \ --no-address
Подождите около минуты, пока подготовка завершится, а затем подключитесь к экземпляру по SSH.
Из Cloud Shell
gcloud compute ssh \ --zone "us-east4-a" "vm-client" \ --tunnel-through-iap \ --project $project
Протестируйте службу Apache, подключившись через 443 через балансировщик нагрузки. Внутренний IP-адрес — это тот, который вы зарезервировали и записали ранее.
curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
PSC Service
Выход из ВМ.
Из VM-клиента
exit
10. Создайте служебный вложение.
В этом примере мы настраиваем наше служебное приложение так, чтобы разрешать подключения PSC только из этого проекта. Его можно настроить для приема одного или нескольких конкретных проектов или сетей, но не обоих одновременно. Мы установили максимальное количество подключений до 5. Для каждого проекта или сети должен быть установлен лимит.
Из Cloud Shell
gcloud compute service-attachments create apache-service-attachment \ --region=$region \ --producer-forwarding-rule=apache-fr \ --connection-preference=ACCEPT_MANUAL \ --consumer-accept-list=$project=5 \ --nat-subnets=psc-nat-subnet
Вам следует записать URI вложения службы ( selfLink ), так как он понадобится вам на следующем этапе настройки серверной части PSC. Вы можете получить его, выполнив следующую команду в Cloud Shell.
Из Cloud Shell
gcloud compute service-attachments describe apache-service-attachment \ --region $region
Скопируйте URI, начиная с проектов.
Пример: проекты/$project/regions/$region/serviceAttachments/apache-service-attachment
11. Настройка потребительского VPC
Создать сеть VPC
Из Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Создать подсеть
На стороне потребителя необходима подсеть, где будет развернута группа конечных точек сети Private Service Connect (NEG).
Из Cloud Shell
gcloud compute networks subnets create consumer-subnet \ --network=consumer-vpc \ --region=$region \ --range=10.0.0.0/28
12. Зарезервируйте внешний IP-адрес и создайте самозаверяющий сертификат на стороне потребителя.
Внешний IP
Создайте внешний статический IP-адрес, который будет использоваться позже для нашего правила переадресации балансировщика нагрузки, и запишите IP-адрес в переменной Cloud Shell.
Из Cloud Shell
gcloud compute addresses create external-psc-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global export externalip=$(gcloud compute addresses describe external-psc-ip \ --format="get(address)" \ --global) echo $externalip
Самоподписанный сертификат потребителя
Во второй раз выполните шаг 1 из инструкций здесь , чтобы создать самозаверяющий сертификат. Вы можете выполнять все команды в Cloud Shell. Вернитесь в это место, когда шаг 1 будет завершен. Мы будем использовать общедоступную службу DNS с подстановочными знаками с открытым исходным кодом под названием nip.io вместо собственной общедоступной зоны DNS. Общедоступный URL-адрес вашей службы PSC будет использовать внешний IP-адрес, который вы только что настроили. ВАШЕ ОБЩЕЕ ИМЯ ДОЛЖНО БЫТЬ НАСТРОЕНО С ПОМОЩЬЮ <ВАШ-ВНЕШНИЙ-IP.nip.io>
Создайте ресурс сертификата для связи с внешним балансировщиком нагрузки. Замените параметры сертификата и закрытого ключа конкретными именами файлов.
Из Cloud Shell
gcloud compute ssl-certificates create consumer-service-cert \ --certificate=<your-consumer-certfile.cert> \ --private-key=<your-consumer-keyfile.pem> \ --global
13. Создайте компоненты балансировщика нагрузки.
Мы создадим глобальный балансировщик нагрузки внешних приложений с PSC NEG, указывающим на наше недавно созданное вложение службы в качестве внутренней службы.
Имейте под рукой URI вложения службы, который мы отметили на последнем шаге. Замените приведенный ниже psc-target-service своим URI.
Из Cloud Shell
gcloud compute network-endpoint-groups create apache-psc-neg \ --network-endpoint-type=private-service-connect \ --psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \ --region=$region \ --network=consumer-vpc \ --subnet=consumer-subnet
Создайте серверную службу.
Из Cloud Shell
gcloud compute backend-services create apache-pscneg-bes \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global gcloud compute backend-services add-backend apache-pscneg-bes \ --network-endpoint-group=apache-psc-neg \ --network-endpoint-group-region=$region \ --global
Создайте карту URL-адресов
Из Cloud Shell
gcloud compute url-maps create consumer-url-map \ --default-service=apache-pscneg-bes \ --global
Создайте целевые HTTPS-прокси.
Из Cloud Shell
gcloud compute target-https-proxies create psc-https-proxy \ --url-map=consumer-url-map \ --ssl-certificates=consumer-service-cert
Создайте правило переадресации
Из Cloud Shell
gcloud compute forwarding-rules create external-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=external-psc-ip \ --global \ --target-https-proxy=psc-https-proxy \ --ports=443
14. Создайте общедоступную зону DNS.
Из Cloud Shell
gcloud dns managed-zones create "psc-service" \ --dns-name=$externalip.nip.io. \ --description="public dns for psc service" \ --visibility=public
Из Cloud Shell
gcloud dns record-sets transaction start \ --zone="psc-service" gcloud dns record-sets transaction add $externalip \ --name=$externalip.nip.io \ --ttl=300 \ --type=A \ --zone="psc-service" gcloud dns record-sets transaction execute \ --zone="psc-service"
15. Проверьте подключение потребительского PSC.
Подождите 7–10 минут перед тестированием, чтобы дать возможность общедоступному DNS распространиться.
Из Cloud Shell
curl https://$externalip.nip.io -k
Вы также можете протестировать из своего браузера, введя https://<ВАШ-ВНЕШНИЙ-IP>.nip.io в свой браузер или настольный терминал.
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
PSC Service
16. Этапы очистки
Удаление компонентов лаборатории из одного терминала Cloud Shell
gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q gcloud dns managed-zones delete "psc-service" -q gcloud compute forwarding-rules delete external-fr --global -q gcloud compute target-https-proxies delete psc-https-proxy -q gcloud compute url-maps delete consumer-url-map --global -q gcloud compute backend-services delete apache-pscneg-bes --global -q gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q gcloud compute ssl-certificates delete consumer-service-cert --global -q gcloud compute addresses delete external-psc-ip --global -q gcloud compute networks subnets delete consumer-subnet --region $region -q gcloud compute networks delete consumer-vpc -q gcloud compute instances delete vm-client --zone=us-east4-a -q gcloud compute service-attachments delete apache-service-attachment --region $region -q gcloud compute forwarding-rules delete apache-fr --region $region -q gcloud compute target-https-proxies delete https-proxy --region $region -q gcloud compute url-maps delete producer-url-map --region $region -q gcloud compute backend-services delete apache-bes --region $region -q gcloud compute health-checks delete lb-apache-service-hc --region $region -q gcloud compute addresses delete apache-service-ip --region $region -q gcloud compute ssl-certificates delete producer-service-cert --region $region -q gcloud compute instance-groups managed delete psc-service-mig --region $region -q gcloud compute health-checks delete service-mig-healthcheck --global -q gcloud compute instance-templates delete apache-service-template -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute routers nats delete central-nat --router=central-cr --region $region -q gcloud compute routers delete central-cr --region $region -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete service-subnet --region $region -q gcloud compute networks subnets delete test-client-subnet --region us-east4 -q gcloud compute networks subnets delete central-proxy-subnet --region $region -q gcloud compute networks delete producer-vpc -q
17. Поздравляем!
Поздравляем с завершением работы над кодом.
Что мы рассмотрели
- Создайте настройку серверной части PSC, связанной с глобальным балансировщиком нагрузки внешних приложений.
- Настройте веб-службу, управляемую Apache, и представьте ее как службу PSC через вложение службы.
- Создайте сертификаты SSL для прекращения SSL на внутренних и внешних балансировщиках нагрузки приложений.
- Настройте общедоступную зону Cloud DNS для доступа к службе PSC.