1. 소개
이 Codelab에서는 PSC 제작자 서비스로 게시된 내부 TCP 프록시 부하 분산기와 영역별 네트워크 엔드포인트 그룹 (NEG)을 배포합니다. NEG는 데이터베이스(예: JIRA, Confluence, SharePoint)를 자체 호스팅하는 GCP의 하나 이상의 컴퓨팅 인스턴스로 구성됩니다.
Private Service Connect는 소비자가 VPC 네트워크 내부에서 비공개로 관리형 서비스에 액세스할 수 있도록 허용하는 Google Cloud 네트워킹 기능입니다. 마찬가지로 이를 통해 관리형 서비스 프로듀서는 자체 VPC 또는 크로스 클라우드 네트워크에서 이러한 서비스를 호스팅하고 소비자에게 비공개 연결을 제공할 수 있습니다. 예를 들어 Private Service Connect를 사용하여 영역 NEG에 액세스하는 경우 사용자는 서비스 프로듀서이고 Google (Agentspace)은 서비스 소비자입니다.
학습할 내용
- Agentspace 네트워크 요구사항
- Agentspace 네트워킹 권장사항
- Private Service Connect 프로듀서 서비스 만들기
필요한 항목
- 소유자 권한이 있는 Google Cloud 프로젝트
2. 빌드할 항목
Private Service Connect(PSC)를 통해 서비스로 게시된 내부 tcp 프록시 부하 분산기와 영역 NEG를 배포하기 위해 프로듀서 네트워크(agentspace-psc-demo)를 설정합니다.
3. 네트워크 요구사항
아래는 생산자 네트워크의 네트워크 요구사항입니다. 이 Codelab의 소비자는 Agentspace입니다.
구성요소 | 설명 |
VPC (agentspace-psc-demo) | 커스텀 모드 VPC |
PSC NAT 서브넷 | 소비자 VPC 네트워크의 패킷은 소스 NAT (SNAT)를 사용하여 변환되므로 원래 소스 IP 주소는 생산자 VPC 네트워크의 NAT 서브넷에서 소스 IP 주소로 변환됩니다. PSC NAT는 서비스 연결당 /29 서브넷을 지원합니다. |
PSC 전달 규칙 서브넷 | 리전 내부 TCP 프록시 부하 분산기의 IP 주소를 할당하는 데 사용됩니다.전달 규칙 서브넷은 일반 서브넷으로 간주됩니다. |
NEG 서브넷 | 일반 서브넷에서 네트워크 엔드포인트 그룹의 IP 주소를 할당하는 데 사용됩니다. |
프록시 전용 서브넷 | 각 부하 분산기의 프록시 에는 내부 IP 주소가 할당됩니다. 프록시에서 백엔드 VM 또는 네트워크 엔드포인트 그룹으로 전송되는 패킷에는 프록시 전용 서브넷의 소스 IP 주소가 있습니다.최소 /26이 지원되지만 /23 서브넷이 권장 됩니다. 리전당 하나의 리전 프록시 서브넷이 필요합니다. |
백엔드 서비스 | 백엔드 서비스는 부하 분산기와 백엔드 리소스 간의 브리지 역할을 합니다. 튜토리얼에서 백엔드 서비스는 영역별 NEG와 연결됩니다. |
4. 권장사항
- 영역 NEG는 GCE_VM_IP_PORT를 기반으로 하나 이상의 영역 GCE 인스턴스를 지원합니다.
- 서비스 연결을 만들기 전에 프로듀서 전달 규칙에서 전역 액세스를 사용 설정합니다.
- Agentspace 엔드포인트를 만들 때 전역 액세스를 사용 설정합니다.
- 내부 TCP 프록시 부하 분산기는 관리형 및 비관리형 인스턴스 그룹도 지원합니다.
- 기존 Google Cloud TCP 프록시 또는 패스 스루 부하 분산기를 생산자 서비스로 노출할 수 있습니다.
5. Codelab 토폴로지
6. 설정 및 요구사항
자습형 환경 설정
- Google Cloud Console에 로그인하여 새 프로젝트를 만들거나 기존 프로젝트를 재사용합니다. 아직 Gmail이나 Google Workspace 계정이 없는 경우 계정을 만들어야 합니다.
- 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
- 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유하며, 변경할 수 없습니다(설정된 후에는 변경할 수 없음). Cloud 콘솔은 고유한 문자열을 자동으로 생성합니다. 일반적으로는 신경 쓰지 않아도 됩니다. 대부분의 Codelab에서는 프로젝트 ID (일반적으로
PROJECT_ID
로 식별됨)를 참조해야 합니다. 생성된 ID가 마음에 들지 않으면 다른 임의 ID를 생성할 수 있습니다. 또는 직접 시도해 보고 사용 가능한지 확인할 수도 있습니다. 이 단계 이후에는 변경할 수 없으며 프로젝트 기간 동안 유지됩니다. - 참고로 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참고하세요.
- 다음으로 Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스 또는 프로젝트를 삭제하면 됩니다. Google Cloud 신규 사용자는 300달러(USD) 상당의 무료 체험판 프로그램에 참여할 수 있습니다.
Cloud Shell 시작
Google Cloud를 노트북에서 원격으로 실행할 수 있지만, 이 Codelab에서는 Cloud에서 실행되는 명령줄 환경인 Google Cloud Shell을 사용합니다.
Google Cloud Console의 오른쪽 상단 툴바에 있는 Cloud Shell 아이콘을 클릭합니다.
환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 완료되면 다음과 같이 표시됩니다.
가상 머신에는 필요한 개발 도구가 모두 들어있습니다. 영구적인 5GB 홈 디렉터리를 제공하고 Google Cloud에서 실행되므로 네트워크 성능과 인증이 크게 개선됩니다. 이 Codelab의 모든 작업은 브라우저 내에서 수행할 수 있습니다. 아무것도 설치할 필요가 없습니다.
7. 시작하기 전에
API 사용 설정
Cloud Shell 내에 프로젝트 ID가 설정되어 있는지 확인합니다.
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone1a=[YOUR-ZONE1a]
zone1b=[YOUR-ZONE1b]
echo $project
echo $region
echo $zone1a
echo $zone1b
필요한 모든 서비스를 사용 설정합니다.
gcloud services enable compute.googleapis.com
8. 프로듀서 VPC 네트워크 만들기
VPC 네트워크
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute networks create agentspace-psc-demo --subnet-mode custom
서브넷 만들기
PSC 서브넷은 네트워크 주소 변환을 위해 PSC 서비스 연결과 연결됩니다.
Cloud Shell 내에서 PSC NAT 서브넷을 만듭니다.
gcloud compute networks subnets create producer-psc-nat-subnet --network agentspace-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT
Cloud Shell 내에서 프로듀서 전달 규칙 서브넷을 만듭니다.
gcloud compute networks subnets create producer-psc-fr-subnet --network agentspace-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
Cloud Shell에서 네트워크 엔드포인트 그룹 서브넷을 만듭니다.
gcloud compute networks subnets create neg-subnet --network agentspace-psc-demo --range 172.16.30.0/28 --region $region --enable-private-ip-google-access
Cloud Shell 내에서 프로듀서 리전 프록시 전용 서브넷을 만듭니다.
gcloud compute networks subnets create $region-proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=agentspace-psc-demo \
--range=10.10.10.0/24
부하 분산기의 IP 주소 예약
Cloud Shell 내에서 부하 분산기의 내부 IP 주소를 예약합니다.
gcloud compute addresses create zonal-neg-lb-ip \
--region=$region \
--subnet=producer-psc-fr-subnet
Cloud Shell 내에서 예약된 IP 주소를 확인합니다.
gcloud compute addresses describe zonal-neg-lb-ip \
--region=$region | grep -i address:
출력 예시:
gcloud compute addresses describe zonal-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
영역별 NEG 설정
다음 섹션에서는 하나 이상의 IP 주소 또는 IP 주소 및 대상 포트 조합이 포함된 영역 네트워크 엔드포인트 그룹을 만듭니다.
- VM 네트워크 인터페이스의 기본 내부 IPv4 주소
- VM 네트워크 인터페이스의 기본 내부 IPv4 주소와 목적지 포트 번호
- VM 네트워크 인터페이스에 할당된 별칭 IP 주소 범위의 내부 IPv4 주소
- VM 네트워크 인터페이스에 할당된 별칭 IP 주소 범위의 내부 IPv4 주소와 목적지 포트 번호
GCE_VM_IP_PORT 엔드포인트가 포함된 네트워크 인터페이스는 NEG의 서브넷에 있어야 합니다. GCE_VM_IP_PORT 엔드포인트에서 포트 번호를 생략하면 Google Cloud는 엔드포인트에 NEG의 기본 포트 번호를 사용합니다.
참조 아키텍처에서 영역 NEG와 연결된 GCE 인스턴스는 다음과 같이 구성됩니다.
- database-us-central1-a | us-central1-a | IP: 100.100.10.2 | Port: 443
- database-us-central1-a | us-central1-b | IP: 100.100.10.3 | Port: 443
- 서브넷 이름: database-subnet-1
zone1a의 영역별 NEG 만들기
다음 섹션에서는 영역(예: us-central1-a)별로 네트워크 엔드포인트 그룹을 만들고 GCE 인스턴스를 만드는 데 사용되는 서브넷 이름을 지정합니다. 참조 아키텍처에서 서브넷 이름은 database-subnet-1입니다.
Cloud Shell 내에서 영역 NEG를 만듭니다.
gcloud compute network-endpoint-groups create us-central-zonal-neg-1a \
--zone=$zone1a \
--network=agentspace-psc-demo \
--subnet=database-subnet-1 \
--default-port=443
Cloud Shell 내에서 참조 아키텍처의 zone1a에 배포된 GCE 인스턴스의 IP:Port로 영역 NEG를 업데이트합니다. 참조 아키텍처에서 GCE 인스턴스는 영역 us-central1-a에 배포된 100.100.10.2 포트 443입니다.
gcloud compute network-endpoint-groups update us-central-zonal-neg-1a --zone=$zone1a --add-endpoint instance=database-us-central1-a,port=443
zone1b의 영역별 NEG 만들기
다음 섹션에서는 영역(예: us-central1-b)별로 네트워크 엔드포인트 그룹을 만들고 GCE 인스턴스를 만드는 데 사용된 서브넷 이름을 지정합니다. 참조 아키텍처에서 서브넷 이름은 database-subnet-1입니다.
Cloud Shell 내에서 영역 NEG를 만듭니다.
gcloud compute network-endpoint-groups create us-central-zonal-neg-1b \
--zone=$zone1b \
--network=agentspace-psc-demo \
--subnet=database-subnet-1 \
--default-port=443
Cloud Shell 내에서 참조 아키텍처의 zone1b에 배포된 GCE 인스턴스의 IP:Port로 영역 NEG를 업데이트합니다. 참조 아키텍처에서 GCE 인스턴스는 us-central1-b 영역에 배포된 100.100.10.3 포트 443입니다.
gcloud compute network-endpoint-groups update us-central-zonal-neg-1b --zone=$zone1b --add-endpoint instance=database-us-central1-b,port=443
리전 상태 점검 만들기
Cloud Shell 내에서 온프레미스 데이터베이스 포트 443을 프로브하는 상태 점검을 만듭니다.
gcloud compute health-checks create tcp zonal-443-healthcheck \
--region=$region \
--port=443
네트워크 방화벽 정책 및 방화벽 규칙 만들기
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute network-firewall-policies create agentspace-psc-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy agentspace-psc-demo-policy --network agentspace-psc-demo --name agentspace-psc-demo --global-firewall-policy
다음 방화벽 규칙은 PSC NAT 서브넷 범위에서 네트워크의 모든 인스턴스로 트래픽을 허용합니다.
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow traffic from PSC NAT subnet to GCE" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp
다음 방화벽 규칙은 상태 점검 프로브 범위 의 트래픽을 네트워크의 모든 인스턴스로 허용합니다. 상태 확인 및 애플리케이션 포트는 일치해야 합니다.
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute network-firewall-policies rules create 2002 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow internal probe health check range to GCE" --direction INGRESS --src-ip-ranges 35.191.0.0/16,130.211.0.0/22 --global-firewall-policy --layer4-configs=tcp:443
다음 방화벽 규칙은 프록시 전용 서브넷 범위의 트래픽을 네트워크의 모든 인스턴스로 허용합니다. 프록시 서브넷과 애플리케이션 포트가 일치해야 합니다.
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute network-firewall-policies rules create 2003 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow internal tcp proxy health check range to GCE" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp:443
9. 프로듀서 서비스 만들기
부하 분산기 구성요소 만들기
Cloud Shell 내에서 백엔드 서비스를 만듭니다.
gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=zonal-443-healthcheck --health-checks-region=$region
Cloud Shell 내에서 영역별 NEG(us-central-zonal-neg-1a)를 백엔드 서비스에 연결합니다.
gcloud compute backend-services add-backend producer-backend-svc \
--network-endpoint-group=us-central-zonal-neg-1a \
--network-endpoint-group-zone=$zone1a \
--balancing-mode=CONNECTION \
--max-connections-per-endpoint=100 \
--region=$region
Cloud Shell 내에서 영역별 NEG(us-central-zonal-neg-1b)를 백엔드 서비스에 연결합니다.
gcloud compute backend-services add-backend producer-backend-svc \
--network-endpoint-group=us-central-zonal-neg-1b \
--network-endpoint-group-zone=$zone1b \
--balancing-mode=CONNECTION \
--max-connections-per-endpoint=100 \
--region=$region
Cloud Shell에서 요청을 백엔드 서비스로 라우팅하는 대상 TCP 프록시를 만듭니다.
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=producer-backend-svc \
--region=$region
다음 구문에서 전역 액세스가 사용 설정된 전달 규칙 (내부 TCP 프록시 부하 분산기)을 만듭니다.
Cloud Shell에서 다음을 실행합니다.
gcloud compute forwarding-rules create producer-zonal-neg-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=agentspace-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=zonal-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--allow-global-access \
--ports=443
백엔드 상태 확인
다음 섹션의 클라우드 콘솔을 사용하여 백엔드 서비스와 연결된 컴퓨팅 인스턴스의 상태 (녹색 상태)를 검증합니다. 다음으로 이동합니다.
네트워크 서비스 → 부하 분산 → Producer-backend-svc
서비스 연결 만들기
서비스를 게시하려면 Private Service Connect 서비스 연결을 만들어야 합니다. 자동 승인 또는 명시적 승인으로 서비스를 게시할 수 있습니다.
- 서비스를 게시하고 모든 소비자가 자동으로 연결하도록 허용하려면 자동 승인으로 서비스 게시의 안내를 따르세요.
- 명시적 소비자 승인으로 서비스를 게시하려면 서비스 연결 연결 설정에서 '선택한 프로젝트의 연결 수락'을 선택하고 '수락된 프로젝트' 필드를 비워 둡니다.
- 서비스 연결을 생성하면 생산자 서비스에 대한 액세스를 요청하는 소비자 엔드포인트가 처음에는 대기 상태가 됩니다. 연결을 승인하려면 생산자가 소비자 엔드포인트 요청이 시작된 프로젝트를 수락해야 합니다.
Cloud Shell 내에서 자동 승인으로 서비스 연결 cc-database1-svc-attachment를 만듭니다.
gcloud compute service-attachments create zonal-database1-svc-attachment --region=$region --producer-forwarding-rule=producer-zonal-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
그런 다음 프로젝트로 시작하는 selfLink URI에 나열된 서비스 연결을 가져와서 Agentspace에서 PSC 엔드포인트를 구성합니다.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/zonal-database1-svc-attachment
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute service-attachments describe zonal-database1-svc-attachment --region=$region
예상 출력 예:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2025-07-12T16:00:22.429-07:00'
description: ''
enableProxyProtocol: false
fingerprint: zOpeRQnPWSc=
id: '1784245893044590569'
kind: compute#serviceAttachment
name: zonal-database1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '119824781489996776'
low: '1784245893044590569'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/serviceAttachments/zonal-database1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/forwardingRules/producer-zonal-neg-fr
Cloud 콘솔에서 다음으로 이동합니다.
네트워크 서비스 → Private Service Connect → 게시된 서비스
10. Agentspace에서 PSC 엔드포인트 연결 설정
프로듀서 서비스 연결 URI를 Agentspace와 연결하고 전역 액세스가 선택되어 있는지 확인합니다. 다음은 참조 아키텍처 서비스 연결을 사용한 전역 액세스 사용 설정의 예입니다.
비공개 네트워킹을 완료하려면 Agentspace 서드 파티 데이터 소스에서 자세한 안내를 참고하세요.
Cloud 콘솔에서 PSC 엔드포인트 유효성 검사
Agentspace (소비자)와 생산자 간의 PSC 연결이 성공했는지 확인하려면 생산자 서비스에 연결된 Agentspace 테넌트 프로젝트를 확인하세요. '연결된 프로젝트'에서 확인할 수 있습니다. 테넌트 프로젝트 ID는 무작위로 할당되지만 항상 'tp'로 끝납니다.
Cloud 콘솔에서 PSC 연결을 검증할 수 있습니다. Cloud 콘솔에서 다음으로 이동합니다.
네트워크 서비스 → Private Service Connect → 게시된 서비스를 선택한 다음 서비스(zonal-database1-svc-attachment)를 선택합니다.
11. 삭제
단일 Cloud Shell 터미널에서 실습 구성요소 삭제
gcloud compute service-attachments delete zonal-database1-svc-attachment --region=$region -q
gcloud compute forwarding-rules delete producer-zonal-neg-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete producer-backend-svc --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies rules delete 2002 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies rules delete 2003 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=agentspace-psc-demo-policy --name=agentspace-psc-demo --global-firewall-policy -q
gcloud compute network-firewall-policies delete agentspace-psc-demo-policy --global -q
gcloud compute network-endpoint-groups delete us-central-zonal-neg-1a --zone=$zone1a -q
gcloud compute network-endpoint-groups delete us-central-zonal-neg-1b --zone=$zone1b -q
gcloud compute addresses delete zonal-neg-lb-ip --region=$region -q
gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q
gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q
gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q
gcloud compute networks subnets delete neg-subnet --region=$region -q
gcloud compute health-checks delete zonal-443-healthcheck --region=us-central1 -q
gcloud compute networks delete agentspace-psc-demo -q
12. 축하합니다
축하합니다. Private Service Connect를 사용하여 프로듀서 서비스를 성공적으로 구성하고 게시했습니다.
생산자 인프라를 만들고, 영역 NEG와 생산자 서비스를 만들고, 서비스 연결을 Agentspace에 연결하는 방법을 알아봤습니다.
Cosmopup은 Codelab이 멋지다고 생각합니다.
다음 단계
다음 Codelab을 확인하세요.