1. 소개
Private Service Connect를 활용하여 Vertex AI Model Garden에서 배포된 모델에 대한 안전한 비공개 액세스를 설정합니다. 이 방법을 사용하면 공개 엔드포인트를 노출하는 대신 가상 프라이빗 클라우드 (VPC) 내에서만 액세스할 수 있는 비공개 Vertex AI 엔드포인트에 모델을 배포할 수 있습니다.
Private Service Connect는 모델을 호스팅하는 Google 관리 Vertex AI 서비스에 직접 연결되는 내부 IP 주소가 있는 엔드포인트를 VPC 내에 만듭니다. 이렇게 하면 VPC 및 온프레미스 환경 (Cloud VPN 또는 Interconnect를 통해)의 애플리케이션이 비공개 IP를 사용하여 추론 요청을 보낼 수 있습니다. 모든 네트워크 트래픽은 Google 네트워크에 유지되므로 보안이 강화되고, 지연 시간이 줄어들며, 모델의 서비스 엔드포인트가 공개 인터넷에서 완전히 격리됩니다.

빌드할 항목
이 튜토리얼에서는 Vertex AI 온라인 추론에 호스팅되고 Private Service Connect를 통해 액세스할 수 있는 비공개 엔드포인트로 Model Garden에서 Gemma 3를 다운로드합니다. 엔드 투 엔드 설정에는 다음이 포함됩니다.
- Model Garden 모델: Vertex AI Model Garden에서 Gemma 3를 선택하고 Private Service Connect 엔드포인트에 배포합니다.
- Private Service Connect: 자체 네트워크 내의 내부 IP 주소로 구성된 가상 프라이빗 클라우드 (VPC)에서 소비자 엔드포인트를 구성합니다.
- Vertex AI에 대한 보안 연결: PSC 엔드포인트는 비공개 모델 배포를 위해 Vertex AI에서 자동으로 생성된 서비스 연결을 타겟팅합니다. 이렇게 하면 비공개 연결이 설정되어 VPC와 모델 제공 엔드포인트 간의 트래픽이 공개 인터넷을 통과하지 않습니다.
- VPC 내 클라이언트 구성: 클라이언트 (예: VPC 내에서 Compute Engine VM을 사용하여 PSC 엔드포인트의 내부 IP 주소를 통해 배포된 모델에 추론 요청을 보냅니다.
결국 지정된 VPC 네트워크 내에서만 액세스할 수 있는 비공개로 제공되는 Model Garden 모델의 작동하는 예시가 완성됩니다.
학습할 내용
이 튜토리얼에서는 Vertex AI Model Garden에서 모델을 배포하고 Private Service Connect (PSC)를 사용하여 Virtual Private Cloud (VPC)에서 안전하게 액세스할 수 있도록 하는 방법을 알아봅니다. 이 방법을 사용하면 VPC (소비자) 내 애플리케이션이 공개 인터넷을 통과하지 않고 Vertex AI 모델 엔드포인트 (생산자 서비스)에 비공개로 연결할 수 있습니다.
구체적으로 다음 내용을 학습합니다.
- Vertex AI용 PSC 이해: PSC가 비공개 및 보안 소비자-프로듀서 연결을 지원하는 방법 VPC는 내부 IP 주소를 사용하여 배포된 Model Garden 모델에 액세스할 수 있습니다.
- 비공개 액세스로 모델 배포: PSC를 사용하여 Model Garden 모델의 Vertex AI 엔드포인트를 구성하여 비공개 엔드포인트로 만드는 방법
- 서비스 연결의 역할: 비공개 Vertex AI 엔드포인트에 모델을 배포하면 Google Cloud에서 Google 관리 테넌트 프로젝트에 서비스 연결을 자동으로 만듭니다. 이 서비스 연결은 모델 서빙 서비스를 소비자 네트워크에 노출합니다.
- VPC에서 PSC 엔드포인트 만들기:
- 배포된 Vertex AI 엔드포인트 세부정보에서 고유한 서비스 연결 URI를 가져오는 방법
- VPC에서 선택한 서브넷 내에 내부 IP 주소를 예약하는 방법
- Vertex AI 서비스 연결을 타겟팅하는 PSC 엔드포인트 역할을 하는 VPC에서 전달 규칙을 만드는 방법 이 엔드포인트는 예약된 내부 IP를 통해 모델에 액세스할 수 있도록 합니다.
- 비공개 연결 설정: VPC의 PSC 엔드포인트가 서비스 연결에 연결되어 네트워크와 Vertex AI 서비스를 안전하게 연결하는 방법
- 비공개로 추론 요청 보내기: VPC 내의 리소스 (예: Compute Engine VM)에서 PSC 엔드포인트의 내부 IP 주소로 예측 요청을 보내는 방법
- 유효성 검사: VPC에서 비공개 연결을 통해 배포된 Model Garden 모델로 추론 요청을 성공적으로 보낼 수 있는지 테스트하고 확인하는 단계입니다.
이 단계를 완료하면 비공개 네트워크 인프라에서만 연결할 수 있는 Model Garden의 모델을 호스팅할 수 있습니다.
필요한 항목
Google Cloud 프로젝트
IAM 권한
- AI Platform 관리자 (roles/ml.Admin)
- Compute 네트워크 관리자 (roles/compute.networkAdmin)
- Compute 인스턴스 관리자 (roles/compute.instanceAdmin)
- Compute 보안 관리자 (roles/compute.securityAdmin)
- DNS 관리자 (roles/dns.admin)
- IAP 보안 터널 사용자 (roles/iap.tunnelResourceAccessor)
- 로깅 관리자 (roles/logging.admin)
- Notebooks 관리자 (roles/notebooks.admin)
- 프로젝트 IAM 관리자 (roles/resourcemanager.projectIamAdmin)
- 서비스 계정 관리자 (roles/iam.serviceAccountAdmin)
- 서비스 사용량 관리자 (roles/serviceusage.serviceUsageAdmin)
2. 시작하기 전에
튜토리얼을 지원하도록 프로젝트 업데이트
이 튜토리얼에서는 Cloud Shell에서 gcloud 구성 구현을 지원하기 위해 $variables를 사용합니다.
Cloud Shell 내에서 다음을 실행합니다.
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
projectid=[YOUR-PROJECT-ID]
echo $projectid
API 사용 설정
Cloud Shell 내에서 다음을 실행합니다.
gcloud services enable "compute.googleapis.com"
gcloud services enable "aiplatform.googleapis.com"
gcloud services enable "serviceusage.googleapis.com"
3. 모델 배포
Model Garden에서 모델을 배포하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 Model Garden으로 이동하여 Gemma 3을 검색하고 선택합니다.

배포 옵션을 클릭하고 Vertex AI를 선택합니다.

Vertex AI에 배포 창에서 고급을 선택합니다. 사전 입력된 리전과 머신 사양은 사용 가능한 용량을 기준으로 선택됩니다. Codelab은 us-central1에 맞게 조정되어 있지만 이러한 값을 변경해도 됩니다.

'Vertex AI에 배포' 창에서 '엔드포인트 액세스'가 'Private Service Connect'로 구성되어 있는지 확인한 다음 '프로젝트'를 선택합니다.

다른 옵션은 모두 기본값으로 두고 하단의 '배포'를 선택한 다음 알림에서 배포 상태를 확인합니다.

Model Garden에서 Gemma 3 모델과 엔드포인트를 제공하는 리전(us-central1)을 선택합니다. 모델 배포에는 약 5분이 소요됩니다.

30분 후 완료되면 엔드포인트가 '활성'으로 전환됩니다.

엔드포인트를 선택하여 엔드포인트 ID를 확인하고 기록합니다.

Cloud Shell을 열고 다음을 실행하여 Private Service Connect 서비스 연결 URI를 가져옵니다. 이 URI 문자열은 PSC 소비자 엔드포인트를 배포할 때 소비자가 사용합니다.
Cloud Shell에서 엔드포인트 ID를 업데이트한 후 다음 명령어를 실행합니다.
gcloud ai endpoints describe [Endpoint ID] --region=us-central1 | grep -i serviceAttachment:
아래 예시를 참조하세요.
user@cloudshell:$ gcloud ai endpoints describe 2124795225560842240 --region=us-central1 | grep -i serviceAttachment:
Using endpoint [https://us-central1-aiplatform.googleapis.com/]
serviceAttachment: projects/o9457b320a852208e-tp/regions/us-central1/serviceAttachments/gkedpm-52065579567eaf39bfe24f25f7981d
serviceAttachment 뒤의 콘텐츠를 'Service_attachment'라는 변수에 복사합니다. 나중에 PSC 연결을 만들 때 필요합니다.
user@cloudshell:$ Service_attachment=projects/o9457b320a852208e-tp/regions/us-central1/serviceAttachments/gkedpm-52065579567eaf39bfe24f25f7981d
4. 소비자 설정
소비자 VPC 만들기
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom
소비자 VM 서브넷 만들기
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute networks subnets create consumer-vm-subnet --project=$projectid --range=192.168.1.0/24 --network=consumer-vpc --region=us-central1 --enable-private-ip-google-access
PSC 엔드포인트 서브넷 만들기
gcloud compute networks subnets create pscendpoint-subnet --project=$projectid --range=10.10.10.0/28 --network=consumer-vpc --region=us-central1
5. IAP 사용 설정
IAP가 VM 인스턴스에 연결하도록 하려면 다음과 같은 방화벽 규칙을 만드세요.
- IAP를 사용하여 액세스할 수 있는 모든 VM 인스턴스에 적용됩니다.
- IP 범위 35.235.240.0/20에서의 인그레스 트래픽을 허용합니다. 이 범위에는 IAP가 TCP 전달을 위해 사용하는 모든 IP 주소가 포함됩니다.
Cloud Shell 내에서 IAP 방화벽 규칙을 만듭니다.
gcloud compute firewall-rules create ssh-iap-consumer \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
6. 컨슈머 VM 인스턴스 만들기
Cloud Shell 내에서 소비자 VM 인스턴스 consumer-vm을 만듭니다.
gcloud compute instances create consumer-vm \
--project=$projectid \
--machine-type=e2-micro \
--image-family debian-11 \
--no-address \
--shielded-secure-boot \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=consumer-vm-subnet
7. Private Service Connect 엔드포인트
소비자는 VPC 내에서 내부 IP 주소를 사용하여 소비자 엔드포인트 (전달 규칙)를 만듭니다. 이 PSC 엔드포인트는 프로듀서의 서비스 연결을 타겟팅합니다. 소비자 VPC 또는 하이브리드 네트워크 내의 클라이언트는 이 내부 IP 주소로 트래픽을 전송하여 프로듀서의 서비스에 도달할 수 있습니다.
소비자 엔드포인트의 IP 주소를 예약합니다.
Cloud Shell 내에서 전달 규칙을 만듭니다.
gcloud compute addresses create psc-address \
--project=$projectid \
--region=us-central1 \
--subnet=pscendpoint-subnet \
--addresses=10.10.10.6
IP 주소가 예약되어 있는지 확인
Cloud Shell 내에서 예약된 IP 주소를 나열합니다.
gcloud compute addresses list
10.10.10.6 IP 주소가 예약된 것으로 표시됩니다.

이전 단계(모델 배포 섹션)에서 캡처한 서비스 연결 URI(target-service-attachment)를 지정하여 소비자 엔드포인트를 만듭니다.
Cloud Shell 내에서 네트워크 연결을 설명합니다.
gcloud compute forwarding-rules create psc-consumer-ep \
--network=consumer-vpc \
--address=psc-address \
--region=us-central1 \
--target-service-attachment=$Service_attachment \
--project=$projectid
서비스 연결에서 엔드포인트를 수락하는지 확인
gcloud compute forwarding-rules describe psc-consumer-ep \
--project=$projectid \
--region=us-central1 \
응답에서 pscConnectionStatus 필드에 'ACCEPTED' 상태가 표시되는지 확인합니다.

8. 컨슈머 VM에서 테스트
Cloud Shell에서 다음 단계를 실행하여 Vertex Model Garden API에 액세스할 수 있는 컨슈머 VM에 대한 액세스 권한을 제공합니다.
컨슈머 VM에 SSH로 연결

애플리케이션 기본 사용자 인증 정보로 다시 인증하고 Vertex AI 범위를 지정합니다.
gcloud auth application-default login
--scopes=https://www.googleapis.com/auth/cloud-platform
아래 표를 사용하여 CURL 명령어를 생성하고 환경에 따라 조정하세요.
속성 | 값 |
프로토콜 | HTTP |
위치 | us-central1 |
온라인 예측 엔드포인트 | 2133539641536544768 |
프로젝트 ID | test4-473419 |
모델 | gemma-3-12b-it |
Private Service Connect 엔드포인트 IP | 10.10.10.6 |
메시지 | [{"role": "user","content": "1파운드의 깃털과 돌 중 어느 것이 더 무거워?"}] |
환경 세부정보에 따라 curl 명령어를 업데이트하고 실행합니다.
curl -k -v -X POST -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" -H "Content-Type: application/json" http://[PSC-IP]/v1/projects/[Project-ID]/locations/us-central1/endpoints/[Predictions Endpoint]/chat/completions -d '{"model": "google/gemma-3-12b-it", "messages": [{"role": "user","content": "What weighs more 1 pound of feathers or rocks?"}] }'
예:
curl -k -v -X POST -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" -H "Content-Type: application/json" http://10.10.10.6/v1/projects/test4-473419/locations/us-central1/endpoints/2133539641536544768/chat/completions -d '{"model": "google/gemma-3-12b-it", "messages": [{"role": "user","content": "What weighs more 1 pound of feathers or rocks?"}] }'
최종 결과 - 성공!!!
출력 하단에 Gemma 3의 예측이 표시됩니다. 이는 PSC 엔드포인트를 통해 비공개로 API 엔드포인트에 도달할 수 있음을 보여줍니다.
Connection #0 to host 10.10.10.6 left intact
{"id":"chatcmpl-9e941821-65b3-44e4-876c-37d81baf62e0","object":"chat.completion","created":1759009221,"model":"google/gemma-3-12b-it","choices":[{"index":0,"message":{"role":"assistant","reasoning_content":null,"content":"This is a classic trick question! They weigh the same. One pound is one pound, regardless of the material. 😊\n\n\n\n","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":106}],"usage":{"prompt_tokens":20,"total_tokens":46,"completion_tokens":26,"prompt_tokens_details":null},"prompt_logprobs":null
9. 삭제
Cloud Shell에서 튜토리얼 구성요소를 삭제합니다.
gcloud ai endpoints undeploy-model ENDPOINT_ID --deployed-model-id=DEPLOYED_MODEL_ID --region=us-central1 --quiet
gcloud ai endpoints delete $ENDPOINT_ID --project=$projectid --region=us-central1 --quiet
gcloud ai models delete $MODEL_ID --project=$projectid --region=us-central1 --quiet
gcloud compute instances delete consumer-vm --zone=us-central1-a --quiet
gcloud compute forwarding-rules delete psc-consumer-ep --region=us-central1 --project=$projectid --quiet
gcloud compute addresses delete psc-address --region=us-central1 --project=$projectid --quiet
gcloud compute networks subnets delete pscendpoint-subnet consumer-vm-subnet --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-consumer --project=$projectid
gcloud compute networks delete consumer-vpc --project=$projectid --quiet
gcloud projects delete $projectid --quiet
10. 축하합니다
축하합니다. Private Service Connect 엔드포인트를 사용하여 Vertex AI Prediction에서 호스팅되는 Gemma 3 API에 대한 비공개 액세스를 구성하고 검증했습니다.
VPC 내에서 내부 IP 주소를 예약하고 Private Service Connect 엔드포인트 (전달 규칙)를 구성하는 등 소비자 인프라를 만들었습니다. 이 엔드포인트는 배포된 Gemma 3 모델과 연결된 서비스 연결을 타겟팅하여 Vertex AI 서비스에 안전하게 연결됩니다. 이 설정을 사용하면 VPC 또는 연결된 네트워크 내의 애플리케이션이 공개 인터넷을 통과하는 트래픽 없이 내부 IP 주소를 사용하여 비공개로 안전하게 Gemma 3 API와 상호작용할 수 있습니다.