Private Service Connect для API Google

1. Введение

С помощью Private Service Connect вы можете создавать частные конечные точки, используя глобальные внутренние IP-адреса в вашей сети VPC, для доступа к API Google. Вы можете назначать этим внутренним IP-адресам DNS-имена с осмысленными именами, такими как storage-pscendpoint.p.googleapis.com и bigtable-adsteam.p.googleapis.com. Вместо отправки запросов API на общедоступные конечные точки сервиса, такие как storage.googleapis.com, вы можете отправлять запросы на конечную точку Private Service Connect, которая является частной и внутренней для вашей сети VPC.

Эти имена и IP-адреса являются внутренними для вашей сети VPC и любых локальных сетей, подключенных к ней с помощью туннелей Cloud VPN или подключений Cloud Interconnect (VLAN).

Вы можете контролировать, какой трафик направляется к какой конечной точке, и демонстрировать, что трафик остается внутри Google Cloud.

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

  • Примеры использования подключения частных сервисов
  • Требования к сети
  • Поддерживаемые API
  • Создайте конечную точку Private Service Connect.
  • Создайте хранилище в облаке.
  • Создание и обновление частных зон Cloud DNS
  • Создайте NAT-шлюз для доступа к общедоступным API Google.
  • Создайте и обновите конфигурационный файл BOTO.
  • Выполните команду gsutil list на виртуальной машине VM1, разрешенной относительно конечной точки вашей службы PSC.
  • Выполните команду gsutil list на виртуальной машине VM2, разрешенной в соответствии с общедоступным репозиторием googleapis.com.
  • Используйте Tcpdump для проверки разрешения DNS-запросов.

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

  • Знание DNS, редакторов nano или vi.

2. Варианты использования подключения частных сервисов

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

При наличии нескольких конечных точек вы можете указать различные сетевые пути, используя правила Cloud Router и брандмауэра.

  • Вы можете создать правила брандмауэра, чтобы запретить некоторым виртуальным машинам доступ к API Google через конечную точку Private Service Connect, разрешив при этом доступ другим виртуальным машинам.
  • На виртуальной машине можно настроить правило брандмауэра, запрещающее весь трафик в интернет; однако трафик, отправляемый на конечные точки Private Service Connect, всё равно достигнет Google.
  • Если у вас есть локальные хосты, подключенные к VPC через туннель Cloud VPN или соединение Cloud Interconnect (VLAN), вы можете отправлять некоторые запросы через туннель или VLAN, а другие — через общедоступный интернет. Такая конфигурация позволяет обходить туннель или VLAN для таких сервисов, как Google Books, которые не поддерживаются Private Google Access. Для создания такой конфигурации создайте конечную точку Private Service Connect, объявите IP-адреса конечной точки Private Service Connect с помощью пользовательских объявлений маршрутов Cloud Router и включите политику переадресации входящих запросов Cloud DNS . Приложение может отправлять некоторые запросы через туннель Cloud VPN или соединение Cloud Interconnect (VLAN), используя имя конечной точки Private Service Connect, а другие — через интернет, используя имя DNS по умолчанию.
  • Если вы подключаете свою локальную сеть к сети VPC с помощью нескольких подключений Cloud Interconnect (VLAN), вы можете отправлять часть трафика из локальной сети через одну VLAN, а остальную — через другие, как показано на рисунке 2. Это позволяет использовать собственную глобальную сеть вместо сети Google и контролировать перемещение данных в соответствии с географическими требованиями. Для создания такой конфигурации создайте две конечные точки Private Service Connect. Создайте пользовательское объявление маршрута для первой конечной точки в сессии BGP облачного маршрутизатора, управляющего первой VLAN, и создайте другое пользовательское объявление маршрута для второй конечной точки в сессии BGP облачного маршрутизатора, управляющего второй VLAN. Локальные хосты, настроенные на использование имени конечной точки Private Service Connect, отправляют трафик через соответствующее подключение Cloud Interconnect (VLAN).
  • Также можно использовать несколько подключений Cloud Interconnect (VLAN) в топологии актив/актив. Если вы объявляете один и тот же IP-адрес конечной точки Private Service Connect с помощью пользовательских объявлений маршрутов для сессий BGP на облачных маршрутизаторах, управляющих VLAN, пакеты, отправляемые с локальных систем на конечные точки, маршрутизируются между VLAN с использованием ECMP.

5e142c2fbf6f010e.png

Рисунок 1. Настраивая Private Service Connect, Cloud Router и локальные хосты, вы можете контролировать, какой канал Cloud Interconnect (VLAN) используется для отправки трафика к API Google.

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

Для использования Private Service Connect экземпляры виртуальных машин (ВМ) без внешних IP-адресов должны иметь свой основной интерфейс в подсети с включенным Private Google Access.

Виртуальная машина с внешним IP-адресом может получить доступ к API и сервисам Google через конечные точки Private Service Connect независимо от того, включен ли для ее подсети доступ к частной сети Google. Подключение к конечной точке Private Service Connect осуществляется внутри сети Google.

Доступ к конечным точкам Private Service Connect из пиринговых сетей VPC невозможен.

Поддерживаемые API

При создании конечной точки Private Service Connect вы выбираете, к какому набору API вам нужен доступ: all-apis или vpc-sc.

Пакеты API предоставляют доступ к тем же API, что и VIP-клиенты с приватным доступом Google .

  • Пакет all-apis предоставляет доступ к тем же API, что и private.googleapis.com.
  • Пакет vpc-sc предоставляет доступ к тем же API, что и restricted.googleapis.com.

4. Топология Codelab и пример использования.

2ac275eb86f26338.png

Рисунок 1 - Топология Codelab

Пример использования Codelab -

Наш клиент нуждается в смешанном доступе к облачному хранилищу через частный (межсетевой) и публичный IP-адрес googleapis. Для удовлетворения требований клиента мы развернем Private Service Connect, включающий уникальный IP-адрес /32, конфигурацию BOTO и обновления DNS-записей. Виртуальная машина 1 будет использовать PSC для доступа к облачному хранилищу; в свою очередь, VM2 будет использовать публичные диапазоны IP-адресов googleapis.com через NAT-шлюз.

Все компоненты лаборатории развернуты в рамках платформы Google Cloud Platform, однако тот же сценарий использования применим и для гибридного облака, требующего разделения трафика.

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

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Запомните идентификатор проекта (Project ID) — уникальное имя для всех проектов Google Cloud (указанное выше имя уже занято и вам не подойдёт, извините!). В дальнейшем в этом практическом занятии оно будет обозначаться как PROJECT_ID .

  1. Далее вам потребуется включить оплату в Cloud Console, чтобы использовать ресурсы Google Cloud.

Выполнение этого практического задания не должно стоить дорого, если вообще что-либо. Обязательно следуйте инструкциям в разделе «Очистка», где указано, как отключить ресурсы, чтобы избежать дополнительных расходов после завершения этого урока. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .

Запустить Cloud Shell

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

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

Включить API

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

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

gcloud services enable compute.googleapis.com
gcloud services enable servicedirectory.googleapis.com
gcloud services enable dns.googleapis.com

7. Создайте сеть VPC.

Сеть VPC

Из Cloud Shell

gcloud compute networks create psc-lab --subnet-mode custom

Создать подсеть

Из Cloud Shell

gcloud compute networks subnets create psclab-subnet \
--network psc-lab --range 10.0.0.0/24 --region us-central1 --enable-private-ip-google-access

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

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

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

Из Cloud Shell

gcloud compute firewall-rules create psclab-ssh \
    --network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20

Создать экземпляр Cloud NAT

Создать облачный маршрутизатор

Из Cloud Shell

gcloud compute routers create crnat \
    --network psc-lab \
    --asn 65000 \
    --region us-central1

Создать облачный NAT

Из Cloud Shell

gcloud compute routers nats create cloudnat \
    --router=crnat \
    --auto-allocate-nat-external-ips \
    --nat-all-subnet-ip-ranges \
    --enable-logging \
    --region us-central1

8. Создайте конечную точку подключения частной службы.

При настройке IP-адреса конечной точки Private Service Connect <pscendpointip> вам потребуется указать уникальный IP-адрес, не определенный в вашей VPC.

Из Cloud Shell

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=192.168.255.250 \
    --network=psc-lab

Сохраните значение 'pscendpointip' на время выполнения лабораторной работы.

pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")

echo $pscendpointip

Создайте правило переадресации для подключения конечной точки к API и сервисам Google.

Из Cloud Shell

gcloud compute forwarding-rules create pscendpoint \
    --global \
    --network=psc-lab \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

Перечислите настроенные конечные точки Private Service Connect.

Из Cloud Shell

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

Опишите настроенные конечные точки Private Service Connect.

Из Cloud Shell

gcloud compute forwarding-rules describe \
    pscendpoint --global

9. Создайте корзину.

Создайте сегмент Cloud Storage и замените BUCKET_NAME на уникальное глобальное имя по вашему выбору.

Из Cloud Shell

gsutil mb  -l us-central1 -b on gs://BUCKET_NAME

Сохраните значение 'BUCKET_NAME' на протяжении всего лабораторного занятия.

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

10. Настройка DNS

При создании конечной точки Private Service Connect, Service Directory генерирует DNS-запись для API и служб, которые становятся доступными через эту конечную точку.

DNS-записи указывают на IP-адрес вашей конечной точки Private Service Connect и имеют следующий формат: SERVICE-ENDPOINT.p.googleapis.com.

Вы можете использовать эти DNS-имена в своих API-запросах, чтобы направлять запрос к вашей конечной точке Private Service Connect. Вы также можете использовать эти DNS-имена в заголовке Host вашего запроса.

Если вы хотите использовать конечную точку Private Service Connect с клиентом или приложением, которое обращается к API и сервисам Google, обновите свой клиент или приложение, чтобы использовать DNS-имена p.googleapis.com.

Для получения более подробной информации обратитесь к документации вашего клиента или клиентской библиотеки. Например:

  • Python: Вы можете настроить параметр api_endpoint в классе Client options пакета google-api-core.
  • Перейти: Вы можете настроить WithEndpoint в пакете параметров клиента в пакете api.
  • gcloud: Вы можете настроить api_endpoint_overrides с помощью этой команды: gcloud config set api_endpoint_overrides/SERVICE ENDPOINT_URL

Например: gcloud config set api_endpoint_overrides/storage https://storage-xyz.p.googleapis.com/storage/v1/

Если вы не можете настроить свой клиент или приложение для использования другой конечной точки, создайте записи DNS, соответствующие именам DNS по умолчанию. Например, storage.googleapis.com. См. раздел «Создание записей DNS с использованием имен DNS по умолчанию» .

Проверить запись DNS

В консоли облака проверьте сгенерированную запись DNS, расположенную в разделе «Сетевые службы» → «Облачный DNS». Запишите сгенерированное DNS-имя «p.googleapis.com».

11. Создание виртуальных машин

Создайте виртуальную машину (psc-instance-1), используемую для проверки Private Service Connect.

Из Cloud Shell

  gcloud compute instances create psc-instance-1 \
    --subnet psclab-subnet \
    --zone us-central1-a \
    --image=centos-7-v20210122 \
    --image-project=centos-cloud \
    --no-address \
    --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y 

Войдите в экземпляр виртуальной машины (psc-instance-1).

Подключайтесь к виртуальной машине по SSH через Cloud Shell.

gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

Для создания дополнительных терминалов облачной оболочки нажмите кнопку + (скриншот ниже) три раза.

69ea94e1527912bb.png

Создание виртуальной машины (psc-instance-2), используемой для проверки общедоступных API Google.

На вкладке 2

  gcloud compute instances create psc-instance-2 \
    --subnet psclab-subnet \
    --zone us-central1-a \
    --image=centos-7-v20210122 \
    --image-project=centos-cloud \
    --no-address \
    --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y 

На вкладке 2 подключитесь к виртуальной машине по SSH через Cloud Shell.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"

На вкладке 3 подключитесь по SSH к экземпляру psc-instance-1 через Cloud Shell.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

На вкладке 4 Shell подключитесь к psc-instance-2 по SSH через Cloud Shell.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"

12. Проверьте существующее поведение Gsutil.

На вкладке 4 (psc-instance-2) запустите tcpdump и отслеживайте DNS-трафик.

sudo tcpdump -vv -i eth0 port 53

Проверьте DNS-запрос к сегменту хранилища на вкладке 2 (psc-instance-2).

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME
gsutil -D ls gs://$BUCKET_NAME

Проверьте отладочную информацию gsutil: для разрешения DNS используется хост storage.googleapis.com.

<snip>
send: 'GET /storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nauthorization: Bearer ya29.c.KpkB7wfaMjfc_WXEKCeNF4Md0fEHnfDU7tqBf3cd0u43yEmYXqj8fX_X5wWdNdDVH6k1EkjeAeIJDzKGvyjPOkf1Io2kVeUqYX69sDv53huW1NslffjAHKchbZ0CP3Cg83TS3Pa55jLcuE0TLbYycVrgSbD3H90LaapUGbWD3kj4IsJLf9J8R98Bqobu8HZwwqk92hlZ4zVzRqOM\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>

На вкладке 4 (psc-instance-2) убедитесь, что при доступе к хранилищу используются публичные DNS-записи A от GoogleAPI.com.

metadata.google.internal.domain > psc-instance-2.c.yourprojectname.internal.33973: [udp sum ok] 36442 q: A? storage.googleapis.com. 11/0/0 storage.googleapis.com. A 108.177.111.128, storage.googleapis.com. A 142.250.128.128, storage.googleapis.com. A 74.125.70.128, storage.googleapis.com. A 74.125.201.128, storage.googleapis.com. A 64.233.183.128, storage.googleapis.com. A 173.194.198.128, storage.googleapis.com. A 172.217.219.128, storage.googleapis.com. A 142.250.136.128, storage.googleapis.com. A 209.85.234.128, storage.googleapis.com. A 172.217.212.128, storage.googleapis.com. A 172.217.214.128

13. Изменить поведение Gsutil.

Напомним, что на предыдущем шаге вы создали частную DNS-зону и запись A, сопоставленную с IP-адресом конечной точки PSC. На следующем шаге мы будем управлять работой gsutil, обновив файл BOTO виртуальной машины на экземпляре psc-instance-1.

Просмотреть конфигурацию BOTO по умолчанию можно на терминале экземпляра виртуальной машины во вкладке 1 (psc-instance-1).

[psc-instance ~]$ more  /etc/boto.cfg

Результат (ваш project_id будет отличаться)

[GSUtil]
default_project_id  = [your project number]
default_api_version = 2

[GoogleCompute]
service_account = default

Обновите конфигурацию BOTO с помощью nano или VI Editor, обязательно скопируйте и вставьте все записи.

Пример: sudo nano /etc/boto.cfg

или

Пример: sudo vi /etc/boto.cfg

Вкладка терминала экземпляра виртуальной машины 1 (psc-instance-1)

[Credentials]
gs_host = storage-pscendpoint.p.googleapis.com
gs_host_header = storage.googleapis.com
gs_json_host = storage-pscendpoint.p.googleapis.com
gs_json_host_header = www.googleapis.com

Проверьте конфигурацию; порядок раздела [Учетные данные] имеет решающее значение для поиска DNS.

more /etc/boto.cfg
[Credentials]
gs_host = storage-pscendpoint.p.googleapis.com
gs_host_header = storage.googleapis.com
gs_json_host = storage-pscendpoint.p.googleapis.com
gs_json_host_header = www.googleapis.com

[GSUtil]
default_project_id  = [your project number
default_api_version = 2

[GoogleCompute]
service_account = default

14. Проверьте обновленное поведение поиска gsutil.

На вкладке 3 (psc-instance-1) запустите tcpdump и отслеживайте DNS-трафик.

sudo tcpdump -vv -i eth0 port 53

Проверьте поиск по утилите gsutil в хранилище на вкладке 1 (psc-instance-1)

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

gsutil -D ls gs://$BUCKET_NAME

Журналы отладки подтверждают доступность хранилища через конечную точку Private Service Connect "pscendpoint".

Выход:

<snip>
INFO 0131 22:14:18.795986 base_api.py] Making http GET to https://storage-pscendpoint.p.googleapis.com/storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000
INFO 0131 22:14:18.796415 base_api.py] Headers: {u'Host': 'www.googleapis.com',
 'accept': 'application/json',
 'accept-encoding': 'gzip, deflate',
 'content-length': '0',
 'user-agent': 'apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0'}
INFO 0131 22:14:18.796502 base_api.py] Body: (none)
connect: (storage-pscendpoint.p.googleapis.com, 443)
send: 'GET /storage/v1/b/psc-bucket/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\ncontent-length: 0\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\nhost: www.googleapis.com\r\nauthorization: Bearer ya29.c.KpkB7wd3XWiYeRyTuth5_HPlNV-hPwc2Nn7RSIeMpzrpa_j4EsMPl2m_mDGKAcGHvYIgiC5bT2UVQirAPpSbbpToa6G6lkaBbH5SZwHwgNXYfisp5Ww1UjXe4rTa69a_Wp0WesafcwPNnYzDo3xf5VGh3iGhySA04kTXuyT--MgOU8U-XLII2LJQxUWlV8KEdrvyCuqRb-jsDdk_\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>

На вкладке 3 (psc-instance-1) убедитесь, что IP-адрес вашей конечной точки PSC совпадает с записью DNS A, используемой при попытке доступа к вашему хранилищу.

@psc-instance-1 ~]$ sudo tcpdump -vv -i eth0 port 53
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
05:02:33.936256 IP (tos 0x0, ttl 64, id 55416, offset 0, flags [DF], proto UDP (17), length 82)
    psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0xcceb!] 34796+ A? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.936269 IP (tos 0x0, ttl 64, id 55417, offset 0, flags [DF], proto UDP (17), length 82)
    psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0x3ebd!] 5632+ AAAA? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.944018 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 98)
    metadata.google.internal.domain > psc-instance-1.c.yourprojectname.42296: [udp sum ok] 34796 q: A? storage-pscendpoint.p.googleapis.com. 1/0/0 storage-pscendpoint.p.googleapis.com. A 10.10.110.10 (70)
05:02:33.946005 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 175)

Убедитесь, что IP-адрес конечной точки Private Service Connect теперь используется для разрешения DNS-запросов.

Из вкладки 1

nslookup storage-pscendpoint.p.googleapis.com

Выход

@psc-instance ~]$ nslookup storage-pscendpoint.p.googleapis.com
Server:         169.254.169.254
Address:        169.254.169.254#53

Non-authoritative answer:
Name:   storage-pscendpoint.p.googleapis.com
Address: <pscip>

15. Этапы очистки

Выход из виртуальной машины (все вкладки)

exit

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

gcloud compute routers nats delete cloudnat --router=crnat --region=us-central1 --quiet

gcloud compute routers delete crnat --region=us-central1 --quiet

gcloud compute forwarding-rules delete pscendpoint --global --quiet

gcloud compute addresses delete psc-ip --global --quiet

gsutil rm -r gs://$BUCKET_NAME

gcloud compute instances delete psc-instance-1 --zone=us-central1-a --quiet

gcloud compute instances delete psc-instance-2 --zone=us-central1-a --quiet

gcloud compute firewall-rules delete psclab-ssh --quiet

gcloud compute networks subnets delete psclab-subnet --region us-central1 --quiet

gcloud compute networks delete psc-lab --quiet

В консоли убедитесь, что вы просматриваете правильный проект, затем выберите «Сетевые службы» → «Облачный DNS».

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

Поздравляем с завершением практического занятия!

Что мы рассмотрели

  • Примеры использования подключения частных сервисов
  • Требования к сети
  • Поддерживаемые API
  • Создана конечная точка подключения частной службы.
  • Создан облачный накопитель.
  • Обновлен конфигурационный файл BOTO.
  • Создан NAT-шлюз.
  • Выполните команду gsutil list на виртуальной машине VM1, которая разрешается в конечную точку вашей службы PSC.
  • Выполните команду gsutil list на виртуальной машине VM2, которая разрешается в публичный googleapis.com.
  • Используйте Tcpdump для проверки разрешения DNS-запросов.