Private Service Connect 변경 가능성 Codelab

1. 소개

Private Service Connect는 소비자가 VPC 네트워크 내부에서 비공개로 관리형 서비스에 액세스할 수 있도록 허용하는 Google Cloud 네트워킹 기능입니다. 마찬가지로 이를 이용해 관리형 서비스 프로듀서는 이러한 서비스를 별도의 개별 VPC 네트워크에서 호스팅하고 소비자에게 비공개 연결을 제공할 수 있습니다.

지금까지는 서비스 연결을 통해 PSC 서비스가 노출되면 서비스 연결을 삭제하고 소비자 PSC 엔드포인트 연결을 중단하지 않고는 서비스 부하 분산기를 변경할 수 없었습니다. PSC 변경 가능성이 도입됨에 따라 제작자는 PSC 엔드포인트 연결을 유지하면서 부하 분산기를 업데이트할 수 있습니다. 부하 분산기를 변경하는 동안 서비스 연결에 대한 PSC 엔드포인트 연결을 유지하면 소비자 측에서 아무런 조치를 취하지 않아도 됩니다.

현재 PSC 변경 가능성은 다음을 지원합니다.

  • 동일한 유형의 부하 분산기 전달 규칙으로 마이그레이션 (예: 네트워크 패스 스루)
  • 다른 유형의 부하 분산기 전달 규칙으로의 마이그레이션 (예: 애플리케이션 부하 분산기로 네트워크 패스 스루)

PSC 변경 가능성은 전달 규칙의 인플레이스 수정을 지원하지 않습니다.

이 실습에서는 내부 네트워크 패스 스루 부하 분산기를 통해 노출된 프로듀서 웹 서비스를 만들고, 서비스가 PSC 엔드포인트를 통해 연결되어 있는지 확인한 다음, 서비스 연결 연결을 내부 애플리케이션 부하 분산기의 새 전달 규칙으로 업데이트합니다.

학습할 내용

  • PSC 생산자 서비스로 노출된 간단한 Apache 웹 서비스를 만듭니다.
  • PSC 엔드포인트를 만듭니다.
  • 소비자 서비스 호출을 위한 Cloud DNS 비공개 영역을 만듭니다.
  • PSC 변경 가능성을 사용하여 서비스 연결과 연결된 전달 규칙을 업데이트합니다.

필요한 항목

  • 소유자 권한이 있는 Google Cloud 프로젝트
  • Google Cloud 네트워킹에 대한 기본 지식

2. 테스트 환경

일반적으로 프로듀서와 소비자는 서로 다른 프로젝트에서 작업합니다. 간단하게 하기 위해 동일한 프로젝트에서 모든 작업을 수행하지만 사용자가 다른 프로젝트에서 작업하는 것을 선호하는 경우를 대비하여 각 단계에 Producer 또는 Consumer 프로젝트 라벨이 지정됩니다.

이 실습에서는 프로듀서 서비스를 호스팅하고 VM을 테스트하는 서브넷, 부하 분산기 전달 규칙용 서브넷, PSC NAT 서브넷 등 3개의 서브넷이 있는 producer-vpc를 만드는 것으로 시작합니다. Linux 패키지를 다운로드하려면 인터넷 연결을 위한 Cloud Router 및 Cloud NAT가 필요합니다. 비관리형 인스턴스 그룹을 통해 구성된 Apache 서비스를 내부 리전 네트워크 패스 스루 부하 분산기를 통해 노출하고 전달 규칙을 서비스 연결에 연결합니다.

소비자 측에서는 PSC 엔드포인트와 테스트 클라이언트 VM을 호스팅하기 위해 단일 서브넷으로 consumer-vpc를 만듭니다. 호스트 이름을 통해 서비스에 액세스하도록 Cloud DNS 비공개 영역을 구성합니다.

PSC 변경 가능성 기능을 보여주기 위해 프로듀서 측에서 새 서비스 VM을 호스팅하는 서브넷 하나와 부하 분산기 프록시 전용 서브넷 하나를 추가합니다. 관리되지 않는 인스턴스 그룹을 통해 다시 구성된 Apache 웹 서버를 호스팅하는 새 VM을 만들고 새 내부 리전 애플리케이션 부하 분산기를 통해 노출합니다. 새 전달 규칙을 가리키도록 서비스 연결을 업데이트하고 소비자 측의 연결이 그대로 유지되는지 테스트합니다.

683e2b440a0cc07f.png

3. 설정 및 요구사항

자습형 환경 설정

  1. Google Cloud Console에 로그인하여 새 프로젝트를 만들거나 기존 프로젝트를 재사용합니다. 아직 Gmail이나 Google Workspace 계정이 없는 경우 계정을 만들어야 합니다.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
  • 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유하며, 변경할 수 없습니다(설정된 후에는 변경할 수 없음). Cloud 콘솔은 고유한 문자열을 자동으로 생성합니다. 일반적으로는 신경 쓰지 않아도 됩니다. 대부분의 Codelab에서는 프로젝트 ID (일반적으로 PROJECT_ID로 식별됨)를 참조해야 합니다. 생성된 ID가 마음에 들지 않으면 다른 임의 ID를 생성할 수 있습니다. 또는 직접 시도해 보고 사용 가능한지 확인할 수도 있습니다. 이 단계 이후에는 변경할 수 없으며 프로젝트 기간 동안 유지됩니다.
  • 참고로 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참고하세요.
  1. 다음으로 Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스 또는 프로젝트를 삭제하면 됩니다. Google Cloud 신규 사용자는 300달러(USD) 상당의 무료 체험판 프로그램에 참여할 수 있습니다.

Cloud Shell 시작

Google Cloud를 노트북에서 원격으로 실행할 수 있지만, 이 Codelab에서는 Cloud에서 실행되는 명령줄 환경인 Google Cloud Shell을 사용합니다.

Google Cloud Console의 오른쪽 상단 툴바에 있는 Cloud Shell 아이콘을 클릭합니다.

Cloud Shell 활성화

환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 완료되면 다음과 같이 표시됩니다.

환경이 연결되었음을 보여주는 Google Cloud Shell 터미널 스크린샷

가상 머신에는 필요한 개발 도구가 모두 들어있습니다. 영구적인 5GB 홈 디렉터리를 제공하고 Google Cloud에서 실행되므로 네트워크 성능과 인증이 크게 개선됩니다. 이 Codelab의 모든 작업은 브라우저 내에서 수행할 수 있습니다. 아무것도 설치할 필요가 없습니다.

4. 시작하기 전에

API 사용 설정

Cloud Shell 내에 프로젝트 ID가 설정되어 있는지 확인합니다.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export project=[YOUR-PROJECT-NAME]
export region=us-central1
export zone=$region-a
echo $project
echo $region
echo $zone

필요한 모든 서비스 사용 설정

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

5. 빌드 프로듀서 네트워크[프로듀서 프로젝트]

VPC 네트워크 만들기

Cloud Shell 사용

gcloud compute networks create producer-vpc \
    --subnet-mode=custom

서브넷 만들기

먼저 프로듀서 VPC에 서브넷 3개를 배포합니다. 하나는 프로듀서 서비스를 배포하기 위한 것이고, 하나는 부하 분산기 전달 규칙을 위한 것이며, 하나는 PSC NAT 서브넷의 PSC 서비스 연결과 연결됩니다.

Cloud Shell 사용

gcloud compute networks subnets create producer-service-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

gcloud compute networks subnets create producer-fr-subnet \
        --network=producer-vpc \
        --range=192.168.0.0/28 \
        --region=$region

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --range=10.100.0.0/28 \
    --region=$region \
    --purpose=PRIVATE_SERVICE_CONNECT

Cloud NAT 만들기

프로듀서 서비스에 적절한 패키지를 설치하려면 Cloud NAT가 필요합니다.

Cloud Shell 사용

gcloud compute routers create $region-cr \
    --network=producer-vpc \
    --region=$region

Cloud Shell 사용

gcloud compute routers nats create $region-nat \
    --router=$region-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가 VM 인스턴스에 연결하도록 하려면 다음과 같은 방화벽 규칙을 만드세요.

  • IAP를 사용하여 액세스할 수 있는 모든 VM 인스턴스에 적용됩니다.
  • IP 범위 35.235.240.0/20에서의 인그레스 트래픽을 허용합니다. 이 범위에는 IAP가 TCP 전달을 위해 사용하는 모든 IP 주소가 포함됩니다.

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

방화벽 규칙 3개로 시작합니다. 하나는 부하 분산기 상태 점검 (2000)을 위해 VM에 대한 액세스를 허용하고, 하나는 PSC NAT 범위 (3000)에서 VM에 대한 액세스를 허용하고, 하나는 테스트 목적으로 서비스 서브넷의 VM 간 연결을 허용합니다 (4000). 서비스에 이 포트를 사용할 것이므로 포트 80에 대한 모든 규칙을 만듭니다.

Cloud Shell 사용

gcloud compute network-firewall-policies rules create 2000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "LB healthchecks" \
    --direction INGRESS \
    --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

gcloud compute network-firewall-policies rules create 3000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access from PSC NAT subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.0.0/28 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

 gcloud compute network-firewall-policies rules create 4000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access between producer service VMs and testing client for testing purposes" \
    --direction INGRESS \
    --src-ip-ranges 10.0.0.0/28 \
    --layer4-configs tcp:80 \
    --global-firewall-policy

6. 프로듀서 서비스 만들기[프로듀서 프로젝트]

'I am a Producer Service'를 표시하는 비관리형 인스턴스 그룹을 사용하여 간단한 Apache 웹 서비스를 만듭니다.

인스턴스 만들기

Cloud Shell 사용

gcloud compute instances create producer-service-vm \
    --network producer-vpc \
    --subnet producer-service-subnet \
    --zone $zone \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a Producer Service." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

비관리형 인스턴스 그룹 만들기

Cloud Shell 사용

gcloud compute instance-groups unmanaged create producer-uig \
  --zone=$zone

방금 만든 비관리형 인스턴스 그룹에 producer-service-vm을 추가합니다.

Cloud Shell 사용

gcloud compute instance-groups unmanaged add-instances producer-uig \
  --zone=$zone \
  --instances=producer-service-vm

부하 분산기 구성요소 만들기

버전 1의 프로듀서 서비스의 경우 포트 80에서 네트워크 패스 스루 부하 분산기를 사용하여 서비스를 노출합니다.

포트 80의 상태 점검을 배포합니다.

Cloud Shell 사용

gcloud compute health-checks create http producer-hc \
        --region=$region

백엔드 서비스를 배포하고 백엔드를 백엔드 서비스에 추가합니다.

Cloud Shell 사용

gcloud compute backend-services create producer-bes \
  --load-balancing-scheme=internal \
  --protocol=tcp \
  --region=$region \
  --health-checks=producer-hc \
  --health-checks-region=$region

gcloud compute backend-services add-backend producer-bes \
  --region=$region \
  --instance-group=producer-uig \
  --instance-group-zone=$zone

부하 분산기 전달 규칙에 사용할 고정 IP 주소를 만듭니다.

Cloud Shell 사용

gcloud compute addresses create producer-fr-ip\
  --region $region \
  --subnet producer-fr-subnet \
  --addresses 192.168.0.2

이전에 만든 백엔드 서비스와 IP 주소를 사용하여 포트 80을 노출하는 부하 분산기 전달 규칙을 만듭니다.

Cloud Shell 사용

gcloud compute forwarding-rules create producer-fr \
  --region=$region \
  --load-balancing-scheme=internal \
  --network=producer-vpc \
  --subnet=producer-fr-subnet \
  --address=producer-fr-ip \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=producer-bes \
  --backend-service-region=$region

7. 프로듀서 서비스 테스트[프로듀서 프로젝트]

프로듀서-서비스-서브넷에 테스트 VM을 만들고 VM에 로그인하여 Apache 서비스 호출을 테스트합니다.

Cloud Shell 사용

 gcloud compute instances create producer-test-vm \
    --zone=$zone \
    --subnet=producer-service-subnet \
    --no-address

Cloud Shell 사용

gcloud compute ssh producer-test-vm \
    --zone=$zone \
    --command="curl -s 192.168.0.2/index.html"

예상 출력

I am a Producer Service.

8. 서비스 연결을 통해 프로듀서 서비스 노출[프로듀서 프로젝트]

서비스 연결을 만듭니다. psc-nat-subnet을 사용하여 만든 전달 규칙과 연결합니다.

Cloud Shell 사용

gcloud compute service-attachments create producer-attachment \
    --region=$region \
    --producer-forwarding-rule=producer-fr  \
    --connection-preference=ACCEPT_AUTOMATIC \
    --nat-subnets=psc-nat-subnet

서비스 연결 URI (selfLink)는 향후 단계에서 PSC 엔드포인트 구성에 필요하므로 기록해 두어야 합니다. Cloud Shell에서 다음을 실행하여 가져올 수 있습니다.

Cloud Shell 사용

gcloud compute service-attachments describe producer-attachment --region=$region

샘플 출력

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2026-02-10T07:50:04.250-08:00'
description: ''
enableProxyProtocol: false
fingerprint: xxx
id: 'xxx'
kind: compute#serviceAttachment
name: producer-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/psc-nat-subnet
pscServiceAttachmentId:
  high: 'xxx'
  low: 'xxx'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/producer-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr

projects부터 시작하는 URI를 복사합니다.

예: projects/$project/regions/$region/serviceAttachments/producer-attachment

9. 소비자 네트워크 빌드[소비자 프로젝트]

VPC 네트워크 만들기

Cloud Shell 사용

gcloud compute networks create consumer-vpc \
    --subnet-mode=custom

서브넷 만들기

PSC 엔드포인트와 테스트 클라이언트 VM을 배포할 단일 서브넷이 배포됩니다.

Cloud Shell 사용

gcloud compute networks subnets create consumer-subnet \
    --network=consumer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

네트워크 방화벽 정책 및 규칙 만들기

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

또한 SSH에 IAP를 사용하도록 consumer-vpc를 구성합니다.

Cloud Shell 사용

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

10. Private Service Connect 엔드포인트 만들기[소비자 프로젝트]

PSC 엔드포인트에 사용할 고정 IP 주소를 예약합니다.

Cloud Shell 사용

gcloud compute addresses create psc-endpoint-ip \
    --region=$region \
    --subnet=consumer-subnet \
    --addresses 10.0.0.2

예약된 고정 IP 주소와 앞에서 기록한 서비스 연결 URI를 사용하여 PSC 엔드포인트를 만듭니다.

Cloud Shell 사용

gcloud compute forwarding-rules create psc-endpoint \
  --region=$region \
  --network=consumer-vpc \
  --address=psc-endpoint-ip \
  --target-service-attachment=projects/$project/regions/$region/serviceAttachments/producer-attachment

11. PSC 엔드포인트의 비공개 DNS 영역 구성 [소비자 프로젝트]

Cloud DNS를 사용하여 PSC 엔드포인트와 함께 사용할 DNS 이름 myservice.com으로 비공개 DNS 영역을 구성합니다.

Cloud Shell 사용

gcloud dns managed-zones create "consumer-service" \
    --dns-name=myservice.com \
    --description="consumer service dns" \
    --visibility=private \
    --networks=consumer-vpc

gcloud dns record-sets transaction start \
   --zone="consumer-service"

myservice.com의 A 레코드를 만들고 PSC 엔드포인트 IP 주소를 가리키도록 합니다.

Cloud Shell 사용

gcloud dns record-sets transaction add 10.0.0.2 \
   --name=myservice.com \
   --ttl=300 \
   --type=A \
   --zone="consumer-service"

gcloud dns record-sets transaction execute \
   --zone="consumer-service"

12. PSC 엔드포인트 테스트 [소비자 프로젝트]

클라이언트 VM 만들기

Cloud Shell 사용

gcloud compute instances create consumer-client-vm \
    --zone=$zone \
    --subnet=consumer-subnet \
    --no-address

PSC 엔드포인트 연결 테스트

Cloud Shell 사용

gcloud compute ssh consumer-client-vm \
    --zone=$zone \
    --command="curl -s myservice.com/index.html"

예상 출력

I am a Producer Service.

Codelab의 다음 부분에서는 새로운 프로듀서 서비스를 만들고 이전하여 소비자 측 구성 업데이트 없이 원활한 업데이트를 지원하는 PSC 변경 가능성 기능을 보여줍니다.

13. 업데이트된 프로듀서 서비스 만들기[프로듀서 프로젝트]

프로듀서 서비스를 업데이트하기 위해 메시지가 'I am a NEW Producer service'인 유사한 Apache 웹 서버를 실행하는 새 VM을 배포합니다. 해당 VM을 새 비관리형 인스턴스 그룹에 추가하고 새 부하 분산기의 백엔드로 해당 비관리형 인스턴스 그룹을 사용합니다. 네트워크 패스 스루 부하 분산기를 사용하는 대신 부하 분산기를 리전 내부 애플리케이션 부하 분산기로 업데이트합니다.

네트워크 업데이트

애플리케이션 부하 분산기의 프록시 전용 서브넷에 사용할 새 서브넷을 만듭니다.

Cloud Shell 사용

gcloud compute networks subnets create lb-proxy-subnet \
    --network=producer-vpc \
    --range=10.200.0.0/24 \
    --region=$region \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE

새 서비스가 호스팅될 새 서브넷을 만듭니다.

Cloud Shell 사용

gcloud compute networks subnets create producer-service-new-subnet \
    --network=producer-vpc \
    --range=10.0.1.0/28 \
    --region=$region

프록시 전용 서브넷에서 새 프로듀서 서비스로의 연결을 허용하는 새 방화벽 규칙을 만듭니다.

Cloud Shell 사용

 gcloud compute network-firewall-policies rules create 3001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access from proxy only subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.200.0.0/24 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

인스턴스 만들기

Cloud Shell 사용

gcloud compute instances create new-producer-service-vm \
    --network producer-vpc \
    --subnet producer-service-new-subnet \
    --zone $zone \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a NEW Producer Service." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

비관리형 인스턴스 그룹 만들기

Cloud Shell 사용

gcloud compute instance-groups unmanaged create producer-new-uig \
  --zone=$zone

gcloud compute instance-groups unmanaged add-instances producer-new-uig \
  --zone=$zone \
  --instances=new-producer-service-vm

gcloud compute instance-groups unmanaged set-named-ports producer-new-uig \
    --named-ports=http:80 \
    --zone=$zone

새 부하 분산기 구성요소 만들기

백엔드 서비스를 만듭니다. 내부 애플리케이션 부하 분산기로 업데이트하므로 부하 분산 스키마 INTERNAL_MANAGED를 사용합니다.

Cloud Shell 사용

gcloud compute backend-services create producer-new-bes \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=http \
  --region=$region \
  --health-checks=producer-hc \
  --health-checks-region=$region

비관리형 인스턴스 그룹을 백엔드 서비스에 백엔드로 추가합니다.

Cloud Shell 사용

gcloud compute backend-services add-backend producer-new-bes \
  --region=$region \
  --instance-group=producer-new-uig \
  --instance-group-zone=$zone

URL 맵과 대상 HTTP 프록시를 만듭니다.

Cloud Shell 사용

gcloud compute url-maps create producer-url-map \
  --default-service=producer-new-bes \
  --region=$region

gcloud compute target-http-proxies create http-proxy \
  --url-map=producer-url-map \
  --region=$region

전달 규칙에 사용할 고정 IP 주소를 만듭니다. 이는 원래 전달 규칙에 사용한 것과 동일한 서브넷에서 가져옵니다.

Cloud Shell 사용

gcloud compute addresses create producer-fr-new-ip\
  --region $region \
  --subnet producer-fr-subnet \
  --addresses 192.168.0.3

전달 규칙을 만듭니다.

Cloud Shell 사용

gcloud compute forwarding-rules create new-producer-fr \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=producer-vpc \
  --subnet=producer-fr-subnet \
  --address=producer-fr-new-ip \
  --ports=80 \
  --region=$region \
  --target-http-proxy=http-proxy \
  --target-http-proxy-region=$region

14. 업데이트된 프로듀서 서비스 테스트[프로듀서 프로젝트]

원래 배포된 서비스를 테스트하기 위해 만든 동일한 테스트 VM을 사용합니다.

Cloud Shell 사용

gcloud compute ssh producer-test-vm \
    --zone=$zone \
    --command="curl -s 192.168.0.3/index.html"

업데이트된 IP 주소를 호출하고 있습니다. 192.168.0.3은 리전 내부 애플리케이션 부하 분산기의 IP 주소입니다.

예상 출력

I am a NEW Producer Service.

15. 서비스 연결 업데이트[생산자 프로젝트]

서비스 연결 전달 규칙의 업데이트를 더 잘 시각화하기 위해 변경 전후에 서비스 연결에 대해 설명을 실행할 수 있습니다.

Cloud Shell 사용

gcloud compute service-attachments describe producer-attachment \
    --region=$region \
    --format="value(targetService)"

예상 출력

https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr

서비스 연결을 업데이트합니다.

Cloud Shell 사용

gcloud compute service-attachments update producer-attachment \
  --region=$region \
  --target-service=projects/$project/regions/$region/forwardingRules/new-producer-fr

이제 describe를 다시 실행하여 새 전달 규칙을 확인합니다.

Cloud Shell 사용

gcloud compute service-attachments describe producer-attachment \
    --region=$region \
    --format="value(targetService)"

예상 출력

https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/new-producer-fr

16. 소비자 PSC 연결 재테스트[소비자 프로젝트]

동일한 소비자 클라이언트에 로그인합니다.

Cloud Shell 사용

gcloud compute ssh consumer-client-vm \
    --zone=$zone \
    --command="curl -s myservice.com/index.html"

예상 출력

 I am a NEW Producer Service.

축하합니다. PSC 생산자 서비스 부하 분산기를 업데이트했으며 소비자 측에서 구성 변경이 필요하지 않습니다.

17. 정리 단계[소비자 프로젝트]

단일 Cloud Shell 터미널에서 실습 구성요소 삭제

gcloud dns record-sets delete myservice.com --zone="consumer-service" --type=A -q

gcloud dns managed-zones delete "consumer-service" -q

gcloud compute forwarding-rules delete psc-endpoint --region=$region -q

gcloud compute addresses delete psc-endpoint-ip --region=$region -q

gcloud compute instances delete consumer-client-vm --zone=$zone --project $project -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 networks subnets delete consumer-subnet --region $region -q

gcloud compute networks delete consumer-vpc -q

18. 정리 단계[프로듀서 프로젝트]

단일 Cloud Shell 터미널에서 실습 구성요소 삭제

gcloud compute service-attachments delete producer-attachment --region=$region -q

gcloud compute instances delete producer-test-vm --zone=$zone --project $project -q

gcloud compute forwarding-rules delete new-producer-fr --region=$region -q

gcloud compute addresses delete producer-fr-new-ip --region $region -q

gcloud compute target-http-proxies delete http-proxy --region $region -q

gcloud compute url-maps delete producer-url-map --region $region -q

gcloud compute backend-services delete producer-new-bes --region $region -q

gcloud compute instance-groups unmanaged delete producer-new-uig --zone $zone -q

gcloud compute instances delete new-producer-service-vm --zone $zone --project $project -q

gcloud compute networks subnets delete producer-service-new-subnet --region $region -q

gcloud compute networks subnets delete lb-proxy-subnet --region $region -q

gcloud compute forwarding-rules delete producer-fr --region=$region -q

gcloud compute addresses delete producer-fr-ip --region $region -q

gcloud compute backend-services delete producer-bes --region $region -q

gcloud compute health-checks delete producer-hc --region $region -q

gcloud compute instance-groups unmanaged delete producer-uig --zone $zone -q

gcloud compute instances delete producer-service-vm --zone $zone --project $project -q

gcloud compute network-firewall-policies rules delete 4000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 3001 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 3000 --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 $region-nat --router=$region-cr --region=$region -q

gcloud compute routers delete $region-cr --region=$region -q

gcloud compute networks subnets delete psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-fr-subnet --region=$region -q

gcloud compute networks subnets delete producer-service-subnet --region=$region -q

gcloud compute networks delete producer-vpc -q

19. 축하합니다.

축하합니다. Codelab을 완료했습니다.

학습한 내용

  • PSC 생산자 서비스로 노출된 간단한 Apache 웹 서비스를 만듭니다.
  • PSC 엔드포인트를 만듭니다.
  • 소비자 서비스 호출을 위한 Cloud DNS 비공개 영역을 만듭니다.
  • PSC 변경 가능성을 사용하여 서비스 연결과 연결된 전달 규칙을 업데이트합니다.