1. Введение
Private Service Connect (PSC) — это функция сетевых возможностей Google Cloud, которая позволяет пользователям получать доступ к управляемым сервисам в частном порядке из своей сети VPC. Аналогичным образом, она позволяет производителям управляемых сервисов размещать эти сервисы в своих собственных отдельных сетях VPC и предлагать своим пользователям частное соединение.
Cloud Run — это управляемая вычислительная платформа, позволяющая запускать контейнеры непосредственно поверх масштабируемой инфраструктуры Google.
Сервис Cloud Run можно использовать в качестве сервиса PSC двумя различными способами.
- Через API PSC для Google, вызывая Cloud Run по предоставленному Cloud Run URL-адресу run.app.
- Через пользовательскую службу PSC-производителя, где Cloud Run предоставляется через Service Attachment посредством внутреннего балансировщика нагрузки приложений с использованием бессерверной архитектуры NEG.
В этом практическом занятии мы рассмотрим, как настроить Cloud Run с PSC для обоих этих сценариев.
Что вы узнаете
- Развертывание базовых приложений в Cloud Run
- Управление входом и выходом Cloud Run
- Развертывание Cloud Run через внутренний балансировщик нагрузки приложений с использованием бессерверной архитектуры NEG.
- Настройка сервиса PSC Producer Service через приложение к сервису.
- Развертывание конечных точек PSC
Что вам понадобится
- Проект Google Cloud с правами владельца.
2. Топология Codelab

В этом практическом задании вы развернете два сервиса Cloud Run, которые будут доступны через PSC — первый как пользовательский опубликованный сервис с PSC, а второй как PSC для API Google. Вы создадите две VPC: потребительскую VPC и производительскую VPC. Сначала вы развернете сервис Cloud Run "Hello World" и сделаете его доступным через региональный внутренний балансировщик нагрузки приложений и Serverless NEG в производительской VPC. Вы проверите работоспособность сервиса через балансировщик нагрузки с помощью producer-client, прежде чем настраивать сервис Cloud Run для доступа в качестве сервиса-производителя PSC через Service Attachment.
Переходя к потребительской VPC, вы развернете конечную точку PSC, указывающую на подключение к службе Cloud Run, которое мы настроили в производительской VPC. Затем вы проверите, доступна ли служба через PSC с клиентского приложения потребителя в потребительской VPC. Далее вы создадите еще одну службу Cloud Run, которая будет вызывать вашу конечную точку PSC. Наконец, вы развернете конечную точку PSC для Google API. С клиентского приложения потребителя вы будете получать доступ к Cloud Run через предоставленный Cloud Run URL, который будет использовать конечную точку PSC для Google API.
3. Настройка и требования
Настройка среды для самостоятельного обучения
- Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



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

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

Эта виртуальная машина содержит все необходимые инструменты разработки. Она предоставляет постоянный домашний каталог объемом 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Вся работа в этом практическом задании может выполняться в браузере. Вам не нужно ничего устанавливать.
4. Прежде чем начать
Включить API
Внутри Cloud Shell убедитесь, что ваш проект настроен, и настройте переменные.
gcloud auth login gcloud config list project gcloud config set project [YOUR-PROJECT-ID] export projectid=[YOUR-PROJECT-ID] export projectnum=[YOUR-PROJECT-NUM] export region=us-central1 export zone=us-central1-a echo $projectid echo $projectnum echo $region echo $zone
Включите все необходимые службы
gcloud services enable compute.googleapis.com gcloud services enable run.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com gcloud services enable cloudbuild.googleapis.com gcloud services enable cloudresourcemanager.googleapis.com
5. Создайте сеть VPC для производителей.
Сеть VPC
Из Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Создание подсетей
Из Cloud Shell
gcloud compute networks subnets create producer-subnet \
--network=producer-vpc \
--range=10.0.0.0/28 \
--region=$region
gcloud compute networks subnets create lb-proxy-subnet \
--network=producer-vpc \
--range=10.100.100.0/24 \
--region=$region \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE
gcloud compute networks subnets create psc-nat-subnet \
--network=producer-vpc \
--region=$region \
--range=10.100.101.0/24 \
--purpose=PRIVATE_SERVICE_CONNECT
Подсеть PSC будет связана с подключением к службе PSC для целей трансляции сетевых адресов (NAT). Для производственных сценариев размер этой подсети должен быть соответствующим образом рассчитан для поддержки количества подключенных конечных точек. Дополнительную информацию см. в документации по расчету размера подсети PSC NAT.
Создание политики и правил межсетевого экрана для сети производителей.
Из 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
6. Создайте облачный запуск "Hello World".
Следуйте приведенным здесь инструкциям, чтобы написать пример приложения на Python. Выполните эти команды в Cloud Shell. После завершения шага 3 в разделе «Написание примера приложения» вернитесь к этому руководству и следуйте приведенным ниже инструкциям, чтобы развернуть приложение в облаке из исходного кода.
Перед развертыванием службы Cloud Run убедитесь, что у вашей учетной записи службы вычислений по умолчанию есть необходимые разрешения, выполнив следующую команду.
Из Cloud Shell
gcloud projects add-iam-policy-binding $projectid --member=serviceAccount:$projectnum-compute@developer.gserviceaccount.com --role=roles/run.builder
ПРИМЕЧАНИЕ: В этом практическом задании предполагается, что в вашей организации не включена политика организации с ограниченным доступом к ресурсам домена. Если эта политика включена, вам потребуется выполнить дополнительные шаги для развертывания Cloud Run с аутентификацией, настройки экрана согласия OAuth и настройки IAP для вашего бэкэнда балансировщика нагрузки. Рекомендуется выполнять все эти шаги настройки в производственной среде.
Из Cloud Shell
gcloud beta run deploy helloworld \
--source . \
--platform=managed \
--ingress=internal \
--allow-unauthenticated \
--no-default-url \
--region=$region
Использование флага --no-default-url позволит развернуть службу Cloud Run без указанного URL-адреса run.app. Мы не будем использовать этот URL-адрес для данной службы. На момент публикации данного руководства эта функция все еще находится в режиме предварительного просмотра.
Прежде чем продолжить, вернитесь в основной каталог вашей оболочки Cloud Shell.
Из Cloud Shell
cd ..
7. Предоставьте доступ к облачному сервису Hello World через внутренний балансировщик нагрузки приложений.
Зарезервируйте статический внутренний IP-адрес для правила переадресации балансировщика нагрузки.
В облачной оболочке
gcloud compute addresses create cloudrun-ip \ --region=$region \ --subnet=producer-subnet gcloud compute addresses describe cloudrun-ip --region=$region
Пример выходных данных
address: 10.0.1.31 addressType: INTERNAL creationTimestamp: '2025-03-17T09:04:06.620-07:00' description: '' id: 'xxxx' kind: compute#address labelFingerprint: xxxx name: cloudrun-ip networkTier: PREMIUM purpose: GCE_ENDPOINT region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/addresses/cloudrun-ip status: RESERVED subnetwork: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/producer-subnet
Запишите созданный вами IP-адрес.
Создайте региональный внутренний балансировщик нагрузки приложений.
В облачной оболочке
gcloud compute network-endpoint-groups create cloudrun-producer-neg \
--region=$region \
--network-endpoint-type=serverless \
--cloud-run-service=helloworld
gcloud compute backend-services create cloudrun-producer-bes \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTP \
--region=$region
gcloud compute backend-services add-backend cloudrun-producer-bes \
--region=$region \
--network-endpoint-group=cloudrun-producer-neg \
--network-endpoint-group-region=$region
gcloud compute url-maps create producer-urlmap \
--default-service=cloudrun-producer-bes \
--region=$region
gcloud compute target-http-proxies create producer-http-proxy \
--url-map=producer-urlmap \
--region=$region
В облачной оболочке
gcloud compute forwarding-rules create cloudrun-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network=producer-vpc \
--subnet=producer-subnet \
--address=cloudrun-ip \
--target-http-proxy=producer-http-proxy \
--target-http-proxy-region=$region \
--region=$region \
--ports=80 \
--allow-global-access
8. Тест Hello World в облаке, запущенный через балансировщик нагрузки.
Создание тестовой виртуальной машины
Из Cloud Shell
gcloud compute instances create producer-client \
--zone=$zone \
--subnet=producer-subnet \
--no-address \
--scopes=cloud-platform
В облачной оболочке
gcloud compute ssh \
--zone "$zone" "producer-client" \
--tunnel-through-iap \
--project $projectid
Замените <loadbalancer-ip> на IP-адрес, который вы создали ранее (например, 10.0.0.2).
Тест "Hello World"
В producer-vm
curl <loadbalancer-ip>
Ожидаемый результат
Hello World!
Выйти из виртуальной машины.
В producer-vm
exit
9. Создайте вложение к услуге.
Из Cloud Shell
gcloud compute service-attachments create cloudrun-attachment \
--region=$region \
--producer-forwarding-rule=cloudrun-fr \
--connection-preference=ACCEPT_MANUAL \
--consumer-accept-list=$projectid=5 \
--nat-subnets=psc-nat-subnet
Далее получите и запишите URI подключения к службе, чтобы настроить конечную точку PSC в среде потребителя.
В облачной оболочке
gcloud compute service-attachments describe cloudrun-attachment --region=$region
Пример ожидаемого результата
connectionPreference: ACCEPT_MANUAL consumerAcceptLists: - connectionLimit: 5 projectIdOrNum: $projectid creationTimestamp: '2025-03-10T08:49:08.134-07:00' description: '' enableProxyProtocol: false fingerprint: -F0Kpe3Fi8o= id: '2679595584727463707' kind: compute#serviceAttachment name: cloudrun-attachment natSubnets: - https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: 'xxxxx' low: 'xxxx' reconcileConnections: false region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/serviceAttachments/cloudrun-attachment targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$projectid/forwardingRules/cloudrun-fr
10. Создайте потребительскую VPC-сеть.
Сеть VPC
Из Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Создать подсеть
Из Cloud Shell
gcloud compute networks subnets create consumer-subnet \
--network=consumer-vpc \
--range=10.0.0.0/24 \
--region=$region \
--enable-private-ip-google-access
gcloud compute networks subnets create cloudrun-egress \
--network=consumer-vpc \
--range=10.0.1.0/24 \
--region=$region \
--enable-private-ip-google-access
Создать облачный NAT
Из Cloud Shell
gcloud compute routers create central-cr \
--network=consumer-vpc \
--region=$region
gcloud compute routers nats create central-nat \
--router=central-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
Создание политики и правил межсетевого экрана для потребительской сети
Мы создадим ещё одну политику сетевого брандмауэра для потребительской VPC.
Из Cloud Shell
gcloud compute network-firewall-policies create consumer-vpc-policy --global gcloud compute network-firewall-policies associations create --firewall-policy consumer-vpc-policy --network consumer-vpc --name network-consumer-vpc --global-firewall-policy gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy consumer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
11. Создайте конечную точку PSC для службы запуска облачных приложений Hello World.
На этом этапе мы создадим конечную точку PSC и подключим её к службе Cloud Run, которую вы предоставили через Service Attachment. Вы будете использовать URI подключения службы, который вы записали ранее в этом разделе. Убедитесь, что формат URI в команде gcloud соответствует вашему URI.
Создать конечную точку PSC
Из Cloud Shell
gcloud compute addresses create cloudrun-service-ip --region=$region --subnet=consumer-subnet --ip-version=IPV4 gcloud compute forwarding-rules create cloudrun-ep --region=$region --network=consumer-vpc --address=cloudrun-service-ip --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/cloudrun-attachment
Получите IP-адрес только что созданной конечной точки PSC. На следующем шаге вы будете использовать этот IP-адрес для тестирования конечной точки.
Из Cloud Shell
gcloud compute addresses list --filter="name=cloudrun-service-ip"
Пример ожидаемого результата
NAME: cloudrun-service-ip ADDRESS/RANGE: 10.0.0.2 TYPE: INTERNAL PURPOSE: GCE_ENDPOINT NETWORK: REGION: us-central1 SUBNET: consumer-subnet STATUS: IN_USE
12. Создайте виртуальную машину «потребитель-клиент» и проверьте подключение к конечной точке.
Создание виртуальной машины для потребителя
Из Cloud Shell
gcloud compute instances create consumer-client \
--zone=$zone \
--subnet=consumer-subnet \
--no-address \
--metadata startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install dnsutils -y'
Проверка подключения
Из Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
Замените <cloudrun-service-ip> на фактический IP-адрес.
Из виртуальной машины клиента
curl <cloudrun-service-ip>
Ожидаемый результат
Hello World!
Из виртуальной машины клиента
exit
13. Создайте службу Cloud Run Loop.
Далее мы создадим сервис Cloud Run, который будет выполнять частный обратный вызов в потребительскую VPC для вызова предыдущего сервиса Cloud Run HelloWorld, который мы предоставили через PSC.
Чтобы написать приложение с циклом на PHP, следуйте инструкциям в разделе «Напишите пример приложения», расположенном здесь. Вместо helloworld-php назовите свою директорию cloudrun-loop. Выполните эти команды в Cloud Shell. На втором шаге используйте приведенный ниже PHP-код в файле index.php. Вернитесь к руководству, когда будете готовы развернуть приложение в Cloud Run. Не следуйте инструкциям в документации для этого шага.
Используйте этот код для файла index.php. Замените <cloudrun-service-ip> на IP-адрес вашей конечной точки PSC, которую вы тестировали на предыдущем шаге.
Из Cloud Shell
<?php
if(!function_exists('curl_init')) {
die('cURL not available!');
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://<cloudrun-service-ip>/');
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);
if ($output === FALSE) {
echo 'An error has occurred: ' . curl_error($curl) . PHP_EOL;
}
else {
echo $output;
}
?>
В этом развертывании Cloud Run мы указываем сеть и подсеть, потому что трафик Cloud Run должен выходить обратно в VPC для доступа к конечной точке PSC. Мы указываем Cloud Run использовать подсеть cloudrun-egress для прямого исходящего трафика в VPC . Весь трафик направляется через подсеть прямого исходящего трафика в VPC обратно в VPC.
Из Cloud Shell
gcloud run deploy cloudrun-loop \
--source . \
--platform=managed \
--ingress=internal \
--allow-unauthenticated \
--vpc-egress=all-traffic \
--network=consumer-vpc \
--subnet=cloudrun-egress \
--region=$region
После завершения развертывания служба Cloud Run предоставит URL-адрес службы в формате https://cloudrun-loop-<projectnum>.<region>.run.app. Обратите внимание на этот URL-адрес, мы также проверим его на следующем шаге.
14. Проверьте подключение к CloudRun-Loop через URL-адрес CloudRun.
Из Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
Замените <Cloud-Run-ServiceURL> на URL-адрес службы, который вы записали на предыдущем шаге.
Из виртуальной машины клиента
curl <Cloud-Run-ServiceURL>
Ожидаемый результат
Hello World!
Этот результат показывает, что наш сервис CloudRun-Loop успешно вызывает конечную точку PSC в vPC потребителя, подключенную к нашему сервису Cloud Run "Hello World". Однако на данном этапе наша виртуальная машина клиента выходит в интернет через наш Cloud NAT, чтобы совершить вызов к нашему публичному URL-адресу Cloud Run. Мы можем выполнить команду dig для этого URL-адреса, чтобы показать, что он будет разрешаться в публичный IP-адрес.
Из виртуальной машины клиента
dig <Cloud-Run-ServiceURL>
Пример выходных данных
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> https://cloudrun-loop-<projectnum>.<region>.run.app ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1938 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;https://cloudrun-loop-<projectnum>.<region>.run.app. IN A ;; ANSWER SECTION: https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.38.53 https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.36.53 https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.32.53 https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.34.53 ;; Query time: 4 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Tue Mar 11 19:05:36 UTC 2025 ;; MSG SIZE rcvd: 147
Мы можем создать конечную точку PSC для API Google, чтобы изменить это разрешение на частное, чтобы предотвратить трафик из общедоступного интернета.
Из виртуальной машины клиента
exit
15. Создайте конечную точку PSC для API Google.
Эта конечная точка PSC отличается от той, которую мы создали ранее. PSC для API Google указывает на набор API Google (либо все API, либо API, совместимые с VPC-SC). IP-адрес не берется из региональной подсети, а создается как единый глобальный IP-адрес /32, который не может пересекаться с существующими подсетями VPC, пиринговыми подсетями VPC или гибридными маршрутами.
Из Cloud Shell
export pscgoogip=100.100.100.100
echo $pscgoogip
gcloud compute addresses create psc-goog-ep-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=$pscgoogip \
--network=consumer-vpc
Из Cloud Shell
gcloud compute forwarding-rules create psc4googapi \
--global \
--network=consumer-vpc \
--address=psc-goog-ep-ip \
--target-google-apis-bundle=all-apis
16. Создайте частную зону Cloud DNS для run.app.
При создании конечной точки PSC для Google API будет создана частная DNS-зона Cloud Run для всех API, находящихся в домене googleapis.com . Поскольку Cloud Run использует run.app, нам потребуется создать еще одну частную зону для сопоставления run.app с нашей конечной точкой PSC для Google API.
Из Cloud Shell
gcloud dns managed-zones create "cloudrun" \
--dns-name=run.app \
--description="run.app psc resolution" \
--visibility=private \
--networks=consumer-vpc
gcloud dns record-sets transaction start \
--zone="cloudrun"
gcloud dns record-sets transaction add $pscgoogip \
--name=*.run.app \
--ttl=300 \
--type=A \
--zone="cloudrun"
gcloud dns record-sets transaction execute \
--zone="cloudrun"
17. Проверка разрешения частных DNS-запросов.
Мы снова войдем в нашу виртуальную машину, используемую в качестве клиента, и снова запустим команду dig, после чего должны увидеть, что наш URL-адрес Cloud Run будет указывать на конечную точку API PSC для Google.
Из Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
Сначала очистим DNS-кэш. Замените <Cloud-Run-ServiceURL> на URL-адрес службы, который вы записали ранее.
Из виртуальной машины клиента
sudo resolvectl flush-caches curl <CloudRun-Loop-ServiceURL>
Завивка должна по-прежнему выглядеть так же, как и раньше.
Из виртуальной машины клиента
curl <CloudRun-Loop-ServiceURL>
Ожидаемый результат
Hello World!
Из виртуальной машины клиента
dig <CloudRun-Loop-ServiceURL>
Проверка должна показать, что наш сервис Cloud Run Loop теперь обращается к конечной точке API PSC для Google.
Пример выходных данных
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> https://cloudrun-loop-<projectnum>.<region>.run.app ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30179 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;https://cloudrun-loop-<projectnum>.<region>.run.app. IN A ;; ANSWER SECTION: https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 100.100.100.100 ;; Query time: 8 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Tue Mar 11 20:04:05 UTC 2025 ;; MSG SIZE rcvd: 99
УСПЕХ!
18. Этапы очистки
Выход из экземпляра виртуальной машины.
exit
Из Cloud Shell
gcloud dns record-sets delete *.run.app --zone="cloudrun" --type=A -q gcloud dns managed-zones delete "cloudrun" -q gcloud compute instances delete consumer-client --zone=$zone --project=$projectid -q gcloud compute forwarding-rules delete psc4googapi --global -q gcloud compute addresses delete psc-goog-ep-ip --global -q gcloud run services delete cloudrun-loop --region=$region -q gcloud artifacts docker images delete $region-docker.pkg.dev/$projectid/cloud-run-source-deploy/cloudrun-loop -q gcloud compute forwarding-rules delete cloudrun-ep --region=$region -q gcloud compute addresses delete cloudrun-service-ip --region=$region -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy consumer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy --name=network-consumer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete consumer-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 consumer-subnet --region $region -q
Возможно, выполнение следующих двух команд завершится ошибкой «ресурс используется». В документации Cloud Run указано, что иногда Cloud Run требуется от 1 до 2 часов для освобождения ресурсов подсети после удаления службы Cloud Run. Если удаление не удалось, пропустите эти две команды и перейдите к следующему разделу, а затем вернитесь к этому разделу, чтобы удалить службу через некоторое время.
Из Cloud Shell
gcloud compute networks subnets delete cloudrun-egress --region $region -q gcloud compute networks delete consumer-vpc -q
Из Cloud Shell
gcloud compute service-attachments delete cloudrun-attachment --region=$region -q gcloud compute instances delete producer-client --zone=$zone --project=$projectid -q gcloud compute forwarding-rules delete cloudrun-fr --region=$region -q gcloud compute target-http-proxies delete producer-http-proxy --region=$region -q gcloud compute url-maps delete producer-urlmap --region=$region -q gcloud compute backend-services delete cloudrun-producer-bes --region=$region -q gcloud compute network-endpoint-groups delete cloudrun-producer-neg --region=$region -q gcloud compute addresses delete cloudrun-ip --region=$region -q gcloud run services delete helloworld --region=$region -q gcloud artifacts docker images delete $region-docker.pkg.dev/$projectid/cloud-run-source-deploy/helloworld -q gcloud artifacts repositories delete cloud-run-source-deploy --location=$region -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 networks subnets delete lb-proxy-subnet --region $region -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete producer-subnet --region $region -q gcloud compute networks delete producer-vpc -q
19. Поздравляем!
Поздравляем с завершением практического занятия!
Что мы рассмотрели
- Развертывание базовых приложений в Cloud Run
- Управление входом и выходом Cloud Run
- Развертывание Cloud Run через внутренний балансировщик нагрузки приложений с использованием бессерверной архитектуры NEG.
- Настройка сервиса PSC Producer Service через приложение к сервису.
- Развертывание конечных точек PSC