1. Введение
Private Service Connect (PSC) — это возможность сети Google Cloud, которая позволяет потребителям получать частный доступ к управляемым сервисам изнутри своей сети VPC. Аналогичным образом, это позволяет производителям управляемых услуг размещать эти услуги в своих собственных отдельных сетях VPC и предлагать своим потребителям частное соединение.
Cloud Run — это управляемая вычислительная платформа, которая позволяет запускать контейнеры непосредственно поверх масштабируемой инфраструктуры Google.
Cloud Run можно использовать в качестве службы PSC двумя разными способами.
- Через PSC для API Google, вызвав Cloud Run через предоставленный Cloud Run URL-адрес run.app.
- Через специальную службу производителя PSC, где Cloud Run предоставляется через вложение службы через внутренний балансировщик нагрузки приложений с бессерверным NEG.
В этой лаборатории кода будет показано, как настроить Cloud Run с PSC для обоих этих сценариев.
Что вы узнаете
- Развертывание базовых приложений в Cloud Run
- Элементы управления входом и выходом Cloud Run
- Развертывание Cloud Run через внутренний балансировщик нагрузки приложений с помощью бессерверного NEG
- Настройка службы производителя PSC через вложение службы
- Развертывание конечных точек PSC
Что вам понадобится
- Проект Google Cloud с разрешениями владельца
2. Топология Codelab
В этой лаборатории кода вы развернете две службы Cloud Run, которые будут доступны через PSC: сначала как настраиваемую опубликованную службу с PSC, а затем как PSC для API Google. Вы создадите два VPC: потребительский и производительный. Сначала вы развернете службу Hello World Cloud Run и сделаете ее доступной через региональный внутренний балансировщик нагрузки приложений и бессерверную NEG в Producer-VPC. Вы убедитесь, что служба работает через балансировщик нагрузки через клиент-производитель, прежде чем настраивать службу Cloud Run, чтобы она была доступна как служба производителя PSC через вложение службы.
Перейдя к потребительскому vpc, вы развернете конечную точку PSC, указывающую на вложение службы Cloud Run, которое мы установили в продюсерском vpc. Затем вы убедитесь, что служба доступна через PSC из клиента-потребителя в потребительском vpc. Далее вы создадите еще одну службу Cloud Run, которая будет вызывать вашу конечную точку PSC. Наконец, вы развернете конечную точку PSC для API Google. Из клиентского клиента вы получите доступ к Cloud Run через URL-адрес, предоставленный Cloud Run, который будет использовать конечную точку PSC для Google API.
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 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 для целей трансляции сетевых адресов. Для производственных вариантов использования размер этой подсети должен быть соответствующим, чтобы поддерживать количество подключенных конечных точек. Дополнительную информацию см. в документации по определению размеров подсети 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).
Тест Привет, мир
В продюсерской виртуальной машине
curl <loadbalancer-ip>
Ожидаемый результат
Hello World!
Выход из ВМ.
В продюсерской виртуальной машине
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 для службы Cloud Run Hello World.
На этом этапе мы создадим конечную точку PSC и подключим ее к сервису Cloud Run, который вы предоставили через прикрепленный файл службы. Вы будете использовать 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, которая будет выполнять частный обратный вызов в потребительский виртуальный компьютер для вызова предыдущей службы 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 . Мы направляем весь трафик через подсеть Direct VPC Egress обратно в 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-адрес Cloud Run.
Из 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, подключенной к нашей службе Hello World Cloud Run. Однако на данный момент наша виртуальная машина потребительского клиента выходит в Интернет через наш Cloud NAT, чтобы выполнить вызов по нашему общедоступному URL-адресу Cloud Run. Мы можем запустить поиск по 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 для API Google будет создана частная зона DNS Cloud Run для всех API, подпадающих под домен googleapis.com . Поскольку Cloud Run использует run.app, нам потребуется создать еще одну частную зону, чтобы сопоставить run.app с нашим PSC для конечной точки API Google.
Из 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
Мы снова войдем в нашу виртуальную машину потребительского клиента и снова запустим раскопки, и теперь мы должны увидеть, что наш URL-адрес Cloud Run разрешится в нашу конечную точку PSC для Google API.
Из 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 теперь разрешает конечную точку PSC для Google API.
Пример вывода
; <<>> 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 через вложение службы
- Развертывание конечных точек PSC