온프레미스 호스트는 공개 인터넷을 통해 또는 Cloud VPN이나 Cloud Interconnect를 통해 Private Service Connect(PSC)를 사용하는 하이브리드 네트워킹 아키텍처를 통해 비공개로 Vertex AI의 생성형 AI에 연결될 수 있습니다. 두 옵션 모두 SSL/TLS 암호화를 제공합니다. 그러나 비공개 옵션이 훨씬 더 우수한 성능을 제공하므로 중요한 애플리케이션에는 비공개 옵션이 권장됩니다.
이 튜토리얼에서는 고가용성 VPN(HA VPN)을 사용하여 Cloud NAT를 통해 공개적으로 그리고 멀티 클라우드 및 온프레미스 비공개 연결의 기반이 되는 두 Virtual Private Cloud(VPC) 네트워크 사이에서 비공개로 Vertex AI 기반 생성형 AI에 액세스할 수 있습니다.
이 튜토리얼은 Vertex AI, VPC, Google Cloud 콘솔, Cloud Shell에 익숙한 엔터프라이즈 네트워크 관리자, 데이터 과학자, 연구원을 대상으로 합니다. Vertex AI 기반 생성형 AI에 익숙하면 도움이 되지만 반드시 그런 것은 아닙니다.
목표
- 앞선 다이어그램과 같이 VPC 네트워크 2개를 만듭니다.
- 하나(
onprem-vpc
)는 온프레미스 네트워크를 나타냅니다. - 다른 하나(
vertex-networking-vpc
)는 Vertex AI 기반 생성형 AI를 위한 REST API에 액세스하기 위한 것입니다.
- 하나(
vertex-networking-vpc
및onprem-vpc
를 연결하기 위해 HA VPN 게이트웨이, Cloud VPN 터널, Cloud Router를 배포합니다.- Private Service Connect(PSC) 엔드포인트를 만들어 요청을 GenAI REST API로 전달합니다.
vertex-networking-vpc
에서 Private Service Connect 엔드포인트에 대한 경로를onprem-vpc
에 공지하기 위해 Cloud Router 커스텀 공지 경로를 구성합니다.- HA VPN을 통해 요청을 GenAI REST API로 보내는 클라이언트 애플리케이션을 나타내도록
onprem-vpc
에서 Compute Engine VM 인스턴스를 만듭니다.
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.
시작하기 전에
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
- 프로젝트 소유자가 아닌 경우 프로젝트 소유자가
roles/resourcemanager.projectIamAdmin
IAM 역할을 부여해야 합니다. IAM 역할 및 권한을 자신과 서비스 계정에 부여하려면 이 역할이 있어야 합니다. - Cloud Shell을 열고 이 튜토리얼에 나열된 명령어를 실행합니다. Cloud Shell은 웹브라우저에서 프로젝트와 리소스를 관리할 수 있는 Google Cloud의 대화형 셸 환경입니다.
- Cloud Shell에서 현재 프로젝트를 Google Cloud 프로젝트 ID로 설정한 후 동일한 프로젝트 ID를
projectid
셸 변수에 저장합니다. PROJECT_ID를 프로젝트 ID로 바꿉니다. 필요한 경우 Google Cloud 콘솔에서 프로젝트 ID를 찾을 수 있습니다. 자세한 내용은 프로젝트 ID 찾기를 참조하세요.projectid="PROJECT_ID" gcloud config set project ${projectid}
-
Google 계정에 역할을 부여합니다. 다음 각 IAM 역할에 대해 다음 명령어를 한 번씩 실행합니다.
roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iap.tunnelResourceAccessor, roles/iam.serviceAccountCreator, roles/iam.serviceAccountUser, roles/iam.serviceAccountDeleter, roles/resourcemanager.projectIamAdmin, roles/servicedirectory.editor, roles/servicemanagement.quotaAdmin, roles/aiplatform.user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
PROJECT_ID
를 프로젝트 ID로 바꿉니다.EMAIL_ADDRESS
를 이메일 주소로 바꿉니다.ROLE
을 각 개별 역할로 바꿉니다.
-
Enable the DNS, IAM, Compute Engine, Service Usage, and Vertex AI APIs:
gcloud services enable dns.googleapis.com
iam.googleapis.com compute.googleapis.com serviceusage.googleapis.com aiplatform.googleapis.com
VPC 네트워크 2개(vertex-networking-vpc
및 onprem-vpc
)를 만듭니다.
이 섹션에서는 VPC 네트워크 2개를 만듭니다. 하나는 Vertex AI 생성형 AI(GenAI라고도 함) API에 액세스할 기본 네트워크가 되고 다른 하나는 온프레미스 네트워크를 시뮬레이션합니다.
VPC 네트워크 만들기
GenAI API(
vertex-networking-vpc
)에 액세스할 VPC 네트워크를 만듭니다.gcloud compute networks create vertex-networking-vpc --subnet-mode custom
온프레미스 네트워크(
onprem-vpc
)를 시뮬레이션하도록 VPC 네트워크를 만듭니다.gcloud compute networks create onprem-vpc --subnet-mode custom
onprem-vpc
네트워크에서 기본 IPv4 범위가172.16.10.0/24
인onprem-vpc-subnet1
이라는 서브넷을 만듭니다.gcloud compute networks subnets create onprem-vpc-subnet1 \ --range 172.16.10.0/24 \ --network onprem-vpc \ --region us-central1
Google Cloud 콘솔에서 VPC 네트워크 페이지의 현재 프로젝트에 있는 네트워크 탭으로 이동합니다.
VPC 네트워크 목록에서 네트워크 2개(
vertex-networking-vpc
및onprem-vpc
)가 생성되었는지 확인합니다.VPC 네트워크 페이지에서 현재 프로젝트의 서브넷 탭을 클릭합니다.
VPC 서브넷 목록에서
onprem-vpc
네트워크에onprem-vpc-subnet1
서브넷이 생성되었는지 확인합니다.
하이브리드 연결 구성
이 섹션에서는 서로 연결된 HA VPN 게이트웨이 2개를 만듭니다. 하나는 vertex-networking-vpc
VPC 네트워크에 있습니다. 다른 하나는 onprem-vpc
VPC 네트워크에 있습니다.
각 게이트웨이에는 Cloud Router와 VPN 터널 쌍이 포함됩니다.
HA VPN 게이트웨이 만들기
Cloud Shell에서
vertex-networking-vpc
VPC 네트워크의 HA VPN 게이트웨이를 만듭니다.gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1
onprem-vpc
VPC 네트워크의 HA VPN 게이트웨이를 만듭니다.gcloud compute vpn-gateways create onprem-vpn-gw1 \ --network onprem-vpc \ --region us-central1
Google Cloud 콘솔에서 VPN 페이지의 Cloud VPN 게이트웨이 탭으로 이동합니다.
VPN 게이트웨이 목록에서 게이트웨이 2개(
vertex-networking-vpn-gw1
및onprem-vpn-gw1
)가 생성되었고 게이트웨이마다 IP 주소 2개가 있는지 확인합니다.
Cloud Router 만들기
Cloud Shell에서
vertex-networking-vpc
VPC 네트워크의 Cloud Router를 만듭니다.gcloud compute routers create vertex-networking-vpc-router1 \ --region us-central1\ --network vertex-networking-vpc \ --asn 65001
onprem-vpc
VPC 네트워크의 Cloud Router를 만듭니다.gcloud compute routers create onprem-vpc-router1 \ --region us-central1\ --network onprem-vpc\ --asn 65002
onprem-vpc
VPC 네트워크에 Cloud NAT 게이트웨이 추가
이 단계에서는 Cloud NAT 게이트웨이를 onprem-vpc
VPC 네트워크의 Cloud Router에 추가합니다.
Cloud NAT 게이트웨이는 외부 IP 주소가 없는 Compute Engine 가상 머신(VM) 인스턴스에 대한 발신 연결을 제공합니다.
Cloud Shell에서 Cloud NAT 게이트웨이를
onprem-vpc-router1
Cloud Router에 추가합니다.gcloud compute routers nats create us-central-cloudnat-onprem \ --router=onprem-vpc-router1 \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --region us-central1
Google Cloud 콘솔에서 Cloud Router 페이지로 이동합니다.
Cloud Router 목록에서
vertex-networking-vpc-router1
및onprem-vpc-router1
이 생성되었는지 확인합니다. 새 값을 보려면 Google Cloud 콘솔 브라우저 탭을 새로고침해야 할 수 있습니다.Cloud Router 목록에서
onprem-vpc-router1
을 클릭합니다.라우터 세부정보 페이지에서
us-central-cloudnat-onprem
Cloud NAT 게이트웨이가 생성되었는지 확인합니다.
VPN 터널 만들기
vertex-networking-vpc
네트워크에서vertex-networking-vpc-tunnel0
이라는 VPN 터널을 만듭니다.gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \ --peer-gcp-gateway onprem-vpn-gw1 \ --region us-central1 \ --ike-version 2 \ --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \ --router vertex-networking-vpc-router1 \ --vpn-gateway vertex-networking-vpn-gw1 \ --interface 0
vertex-networking-vpc
네트워크에서vertex-networking-vpc-tunnel1
이라는 VPN 터널을 만듭니다.gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \ --peer-gcp-gateway onprem-vpn-gw1 \ --region us-central1 \ --ike-version 2 \ --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \ --router vertex-networking-vpc-router1 \ --vpn-gateway vertex-networking-vpn-gw1 \ --interface 1
onprem-vpc
네트워크에서onprem-vpc-tunnel0
이라는 VPN 터널을 만듭니다.gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \ --peer-gcp-gateway vertex-networking-vpn-gw1 \ --region us-central1\ --ike-version 2 \ --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \ --router onprem-vpc-router1 \ --vpn-gateway onprem-vpn-gw1 \ --interface 0
onprem-vpc
네트워크에서onprem-vpc-tunnel1
이라는 VPN 터널을 만듭니다.gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \ --peer-gcp-gateway vertex-networking-vpn-gw1 \ --region us-central1\ --ike-version 2 \ --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \ --router onprem-vpc-router1 \ --vpn-gateway onprem-vpn-gw1 \ --interface 1
Google Cloud 콘솔에서 VPN 페이지로 이동합니다.
VPN 터널 목록에서 VPN 터널 4개가 생성되었는지 확인합니다.
BGP 세션 설정
Cloud Router는 경계 게이트웨이 프로토콜(BGP)을 사용하여 VPC 네트워크(이 경우 vertex-networking-vpc
)와 온프레미스 네트워크(onprem-vpc
로 표시) 간에 경로를 교환합니다. Cloud Router에서 온프레미스 라우터의 인터페이스와 BGP 피어를 구성합니다.
인터페이스와 BGP 피어 구성은 함께 BGP 세션을 구성합니다.
이 섹션에서는 vertex-networking-vpc
에 대한 2개의 BGP 세션과 onprem-vpc
에 대한 2개의 BGP 세션을 만듭니다.
라우터 사이에 인터페이스와 BGP 피어를 구성하면 경로 교환이 자동으로 시작됩니다.
vertex-networking-vpc
용 BGP 세션 설정
Cloud Shell의
vertex-networking-vpc
네트워크에서vertex-networking-vpc-tunnel0
에 대한 BGP 인터페이스를 만듭니다.gcloud compute routers add-interface vertex-networking-vpc-router1 \ --interface-name if-tunnel0-to-onprem \ --ip-address 169.254.0.1 \ --mask-length 30 \ --vpn-tunnel vertex-networking-vpc-tunnel0 \ --region us-central1
vertex-networking-vpc
네트워크에서bgp-onprem-tunnel0
에 대한 BGP 피어를 만듭니다.gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \ --peer-name bgp-onprem-tunnel0 \ --interface if-tunnel0-to-onprem \ --peer-ip-address 169.254.0.2 \ --peer-asn 65002 \ --region us-central1
vertex-networking-vpc
네트워크에서vertex-networking-vpc-tunnel1
에 대한 BGP 인터페이스를 만듭니다.gcloud compute routers add-interface vertex-networking-vpc-router1 \ --interface-name if-tunnel1-to-onprem \ --ip-address 169.254.1.1 \ --mask-length 30 \ --vpn-tunnel vertex-networking-vpc-tunnel1 \ --region us-central1
vertex-networking-vpc
네트워크에서bgp-onprem-tunnel1
에 대한 BGP 피어를 만듭니다.gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \ --peer-name bgp-onprem-tunnel1 \ --interface if-tunnel1-to-onprem \ --peer-ip-address 169.254.1.2 \ --peer-asn 65002 \ --region us-central1
onprem-vpc
용 BGP 세션 설정
onprem-vpc
네트워크에서onprem-vpc-tunnel0
에 대한 BGP 인터페이스를 만듭니다.gcloud compute routers add-interface onprem-vpc-router1 \ --interface-name if-tunnel0-to-vertex-networking-vpc \ --ip-address 169.254.0.2 \ --mask-length 30 \ --vpn-tunnel onprem-vpc-tunnel0 \ --region us-central1
onprem-vpc
네트워크에서bgp-vertex-networking-vpc-tunnel0
에 대한 BGP 피어를 만듭니다.gcloud compute routers add-bgp-peer onprem-vpc-router1 \ --peer-name bgp-vertex-networking-vpc-tunnel0 \ --interface if-tunnel0-to-vertex-networking-vpc \ --peer-ip-address 169.254.0.1 \ --peer-asn 65001 \ --region us-central1
onprem-vpc
네트워크에서onprem-vpc-tunnel1
에 대한 BGP 인터페이스를 만듭니다.gcloud compute routers add-interface onprem-vpc-router1 \ --interface-name if-tunnel1-to-vertex-networking-vpc \ --ip-address 169.254.1.2 \ --mask-length 30 \ --vpn-tunnel onprem-vpc-tunnel1 \ --region us-central1
onprem-vpc
네트워크에서bgp-vertex-networking-vpc-tunnel1
에 대한 BGP 피어를 만듭니다.gcloud compute routers add-bgp-peer onprem-vpc-router1 \ --peer-name bgp-vertex-networking-vpc-tunnel1 \ --interface if-tunnel1-to-vertex-networking-vpc \ --peer-ip-address 169.254.1.1 \ --peer-asn 65001 \ --region us-central1
BGP 세션 생성 검증
Google Cloud 콘솔에서 VPN 페이지로 이동합니다.
VPN 터널 목록에서 각 터널의 BGP 세션 상태 열 값이 BGP 세션 구성에서 BGP 설정됨으로 변경되었는지 확인합니다. 새 값을 보려면 Google Cloud 콘솔 브라우저 탭을 새로고침해야 할 수 있습니다.
Private Service Connect(PSC) 엔드포인트 만들기
이 섹션에서는 onprem-vpc
네트워크의 VM 인스턴스가 onprem-vpc
네트워크에서 GenAI API에 액세스하는 데 사용할 Google API의 Private Service Connect(PSC) 엔드포인트를 만듭니다.
Private Service Connect(PSC) 엔드포인트는 해당 네트워크의 클라이언트에서 직접 액세스할 수 있는 onprem-vpc
네트워크의 내부 IP 주소입니다. 이 엔드포인트는 PSC 엔드포인트의 IP 주소와 일치하는 네트워크 트래픽을 Google API 번들, 특히 all-apis번들로 전달하는 전달 규칙을 배포함으로써 생성됩니다.
이후 단계에서 PSC 엔드포인트의 IP 주소(192.168.0.1
)는 vertex-networking-vpc-router
Cloud Router에서 커스텀 공지 경로로 onprem-vpc
네트워크에 공지됩니다.
엔드포인트에 할당할 전역 내부 IP 주소를 예약합니다.
gcloud compute addresses create psc-googleapi-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=192.168.0.1 \ --network=vertex-networking-vpc
엔드포인트를 Google API 및 서비스에 연결하는 전달 규칙과 함께 엔드포인트를 만듭니다.
gcloud compute forwarding-rules create pscvertex \ --global \ --network=vertex-networking-vpc\ --address=psc-googleapi-ip \ --target-google-apis-bundle=all-apis
구성된 PSC 엔드포인트를 나열하고
pscvertex
엔드포인트가 생성되었는지 확인합니다.gcloud compute forwarding-rules list \ --filter target="(all-apis OR vpc-sc)" --global
구성된 PSC 엔드포인트의 세부정보를 가져오고 IP 주소가
192.168.0.1
인지 확인합니다.gcloud compute forwarding-rules describe \ pscvertex --global
vertex-networking-vpc
용 커스텀 경로 공지 만들기
이 섹션에서는 PSC 엔드포인트의 IP 주소를 onprem-vpc
네트워크에 공지하도록 vertex-networking-vpc-router1
(vertex-networking-vpc
용 Cloud Router)에 대한 커스텀 공지 경로를 만듭니다.
Google Cloud 콘솔에서 Cloud Router 페이지로 이동합니다.
Cloud Router 목록에서
vertex-networking-vpc-router1
을 클릭합니다.라우터 세부정보 페이지에서
수정을 클릭합니다.공지된 경로 섹션에서 경로에 대해 커스텀 경로 만들기를 선택합니다.
Cloud Router에서 사용할 수 있는 서브넷을 계속 공지하려면 Cloud Router에 표시되는 모든 서브넷 공지 체크박스를 선택합니다. 이 옵션을 사용 설정하면 기본 공지 모드에서 Cloud Router 동작을 모방합니다.
커스텀 경로 추가를 클릭합니다.
소스에 커스텀 IP 범위를 선택합니다.
IP 주소 범위에 다음 IP 주소를 입력합니다.
192.168.0.1
설명에 다음 텍스트를 입력합니다.
Custom route to advertise Private Service Connect endpoint IP address
완료를 클릭한 다음 저장을 클릭합니다.
onprem-vpc
에서 공지된 경로를 학습했는지 검증
Google Cloud 콘솔에서 경로 페이지로 이동합니다.
유효한 경로 탭에서 다음을 수행합니다.
- 네트워크에
onprem-vpc
를 선택합니다. - 리전에
us-central1 (Iowa)
을 선택합니다. - 보기를 클릭합니다.
경로 목록에서 이름이 .
onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0
및onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1
로 시작하고 둘 다 대상 IP 범위192.168.0.1/32
가 있는 항목이 있는지 확인합니다.192.168.0.1
은 PSC 엔드포인트의 IP 주소입니다.이러한 항목이 바로 표시되지 않으면 몇 분 정도 기다린 후 Google Cloud 콘솔 브라우저 탭을 새로고침합니다.
- 네트워크에
온프레미스 네트워크에서 VM 인스턴스 구성
이 섹션에서는 onprem-vpc
VPC 네트워크에 Compute Engine VM 인스턴스를 만듭니다. 이 VM 인스턴스는 PSC 엔드포인트에 연결되고 GenAI API에 액세스하는 온프레미스 클라이언트를 시뮬레이션합니다.
사용자 관리형 서비스 계정 만들기
이 튜토리얼에서는 Compute Engine 및 IAM 권장사항에 따라 사용자 관리 서비스 계정을 만듭니다.
Cloud Shell에서 다음 명령어를 실행하고 PROJECT_ID를 프로젝트 ID로 바꿉니다.
projectid=PROJECT_ID gcloud config set project ${projectid}
서비스 계정을 만듭니다.
gcloud iam service-accounts create user-managed-sa
서비스 계정에 Vertex AI 사용자(
roles/aiplatform.user
) IAM 역할을 할당합니다.gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:user-managed-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
on-prem-client
VM 인스턴스 만들기
이 단계에서는 Private Service Connect IP 주소(192.168.0.1
)를 사용하여 HA VPN을 통해 Google API에 액세스하는 VM 인스턴스를 만듭니다.
IAP(Identity-Aware Proxy)가 VM 인스턴스에 연결할 수 있도록 다음과 같은 방화벽 규칙을 만듭니다.
- IAP를 통해 액세스할 수 있게 만들려는 모든 VM 인스턴스에 적용됩니다. 이 경우에는
on-prem-client
만 있습니다. - IP 범위
35.235.240.0/20
에서 포트 22를 통한 TCP 트래픽을 허용합니다. 이 범위에는 IAP가 TCP 전달을 위해 사용하는 모든 IP 주소가 포함됩니다.
on-prem-client
VM 인스턴스를 만듭니다. 다음 명령어는 나중에 API 요청을 검증하는 데 사용할tcpdump
및dig
유틸리티가 포함된tcpdump
및dnsutils
패키지도 설치합니다.gcloud compute instances create on-prem-client \ --zone=us-central1-a \ --image-family=debian-11 \ --image-project=debian-cloud \ --subnet=onprem-vpc-subnet1 \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --no-address \ --shielded-secure-boot \ --service-account=user-managed-sa@$projectid.iam.gserviceaccount.com \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install tcpdump dnsutils -y"
ssh-iap-on-prem-vpc
라는 IAP 방화벽 규칙을 만듭니다.gcloud compute firewall-rules create ssh-iap-on-prem-vpc \ --network onprem-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
Vertex AI 기반 생성형 AI에 대한 공개 인터넷 액세스 검증
이 섹션에서는 IAP(Identity-Aware Proxy)를 사용하여 on-prem-client
VM 인스턴스에 로그인한 후 공개 Vertex AI 도메인(us-central1-aiplatform.googleapis.com
)에 대한 dig
명령어를 실행하여 Vertex AI API(GenAI 포함)에 대한 공개 연결을 검증합니다.
Cloud Shell(탭 1)에서 PROJECT_ID를 프로젝트 ID로 바꿔 다음 명령어를 실행합니다.
projectid=PROJECT_ID gcloud config set project ${projectid}
IAP를 사용하여
on-prem-client
VM 인스턴스에 로그인합니다.gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
dig
명령어를 실행합니다.dig us-central1-aiplatform.googleapis.com
다음과 비슷한
dig
출력이 표시됩니다. 여기서 응답 섹션의 IP 주소는 공개 IP 주소입니다.; <<>> DiG 9.16.44-Debian <<>> us-central1.aiplatfom.googleapis.com ;; global options: +cmd ;; Got answer: ;; <>/span>->HEADER<<- opcode: QUERY, status: NOERROR, id: 42506 ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;us-central1.aiplatfom.googleapis.com. IN A ;; ANSWER SECTION: us-central1.aiplatfom.googleapis.com. 300 IN A 173.194.192.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.152.95 us-central1.aiplatfom.googleapis.com. 300 IN A 172.217.219.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.146.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.147.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.125.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.136.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.148.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.200.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.234.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.251.171.95 us-central1.aiplatfom.googleapis.com. 300 IN A 108.177.112.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.128.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.251.6.95 us-central1.aiplatfom.googleapis.com. 300 IN A 172.217.212.95 us-central1.aiplatfom.googleapis.com. 300 IN A 74.125.124.95 ;; Query time: 8 msec ;; SERVER: 169.254.169.254#53(169.254.169.254) ;; WHEN: Wed Sep 27 04:10:16 UTC 2023 ;; MSG SIZE rcvd: 321
Vertex AI 기반 생성형 AI에 대한 비공개 액세스 구성 및 검증
이 섹션에서는 요청을 공개 서비스 엔드포인트(us-central1-aiplatform.googleapis.com
)에 전송하면 대신 PSC 엔드포인트로 리디렉션되도록 Vertex AI 기반 생성형 AI에 대한 비공개 액세스를 구성합니다. PSC 엔드포인트에서 다시 요청을 전달합니다.
PSC 엔드포인트를 가리키도록 /etc/hosts
파일을 업데이트합니다.
이 단계에서는 공개 서비스 엔드포인트(us-central1-aiplatform.googleapis.com
)로 전송된 요청이 PSC 엔드포인트(192.168.0.1
)로 리디렉션되는 /etc/hosts
파일에 줄을 추가합니다.
on-prem-client
VM 인스턴스(탭 1)에서vim
또는nano
와 같은 텍스트 편집기를 사용하여/etc/hosts
파일을 엽니다.sudo vim /etc/hosts
다음 줄을 파일에 추가합니다.
192.168.0.1 us-central1-aiplatform.googleapis.com
이 줄은 PSC 엔드포인트의 IP 주소(
192.168.0.1
)를 Vertex AI Google API(us-central1-aiplatform.googleapis.com
)의 정규화된 도메인 이름에 할당합니다.수정된 파일은 다음과 같습니다.
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 192.168.0.1 us-central1-aiplatform.googleapis.com # Added by you 172.16.10.6 on-prem-client.us-central1-a.c.vertex-genai-400103.internal on-prem-client # Added by Google 169.254.169.254 metadata.google.internal # Added by Google
다음과 같이 파일을 저장합니다.
vim
을 사용하는 경우Esc
키를 누른 후:wq
를 입력하여 파일을 저장하고 종료합니다.nano
를 사용하는 경우Control+O
을 입력하고Enter
를 눌러 파일을 저장한 후Control+X
를 입력하여 종료합니다.
다음과 같이 Vertex AI 엔드포인트를 핑합니다.
ping us-central1-aiplatform.googleapis.com
ping
명령어에서 다음 출력을 반환합니다.192.168.0.1
은 PSC 엔드포인트 IP 주소입니다.PING us-central1-aiplatform.googleapis.com (192.168.0.1) 56(84) bytes of data.
ping
에서 종료하려면Control+C
를 입력합니다.온라인 예측 요청을 엔드포인트에 전송할 때 다음
tcpdump
명령어를 실행하여 DNS 변환과 IP 데이터 경로를 검증합니다.sudo tcpdump -i any port 53 -n or host 192.168.0.1
비공개 요청 만들기
이 단계에서는 GenAI REST API로 전송하는 샘플 curl
요청의 페이로드가 포함된 request.json
이라는 텍스트 파일을 만듭니다.
샘플 요청에 대한 자세한 내용은 샘플 요청을 참조하세요.
탭 1에서
tcpdump
명령어를 계속 실행한 상태에서 Cloud Storage의 새 탭 열기를 클릭하여 새 Cloud Shell 세션(탭 2)을 엽니다.새 Cloud Shell 세션(탭 2)에서 다음 명령어를 실행하고 PROJECT_ID를 프로젝트 ID로 바꿉니다.
projectid=PROJECT_ID gcloud config set project ${projectid}
IAP를 사용하여
on-prem-client
VM 인스턴스에 로그인합니다.gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
다음 명령어를 실행하고 PROJECT_ID를 프로젝트 ID로 바꿉니다.
projectid=PROJECT_ID gcloud config set project ${projectid}
vim
또는nano
와 같은 텍스트 편집기를 사용하여 다음 텍스트가 포함된request.json
이라는 새 파일을 만듭니다.{ "instances": [ { "prompt": "Give me ten interview questions for the role of program manager."} ], "parameters": { "temperature": 0.2, "maxOutputTokens": 256, "topK": 40, "topP": 0.95 } }
다음 명령어를 실행하여 요청을 GenAI API에 전달하는 PSC 엔드포인트로 보냅니다. 엔드포인트에서 응답을 수신하면 응답이
on-prem-client
VM으로 다시 전달됩니다.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/publishers/google/models/text-bison:predict"
다음 예시와 비슷한 응답이 표시됩니다.
{ "predictions": [ { "content": " 1. **What is your experience in managing programs?**\n2. **What are your strengths and weaknesses as a program manager?**\n3. **What is your approach to managing a program?**\n4. **How do you handle risks and challenges in a program?**\n5. **How do you communicate with stakeholders in a program?**\n6. **How do you measure the success of a program?**\n7. **What is your experience in working with cross-functional teams?**\n8. **What is your experience in managing budgets and resources?**\n9. **What is your experience in managing change in a program?**\n10. **What are your career goals as a program manager?**", "citationMetadata": { "citations": [] }, "safetyAttributes": { "categories": [ "Finance", "Health" ], "blocked": false, "scores": [ 0.6, 0.1 ] } } ], "metadata": { "tokenMetadata": { "outputTokenCount": { "totalBillableCharacters": 505, "totalTokens": 153 }, "inputTokenCount": { "totalBillableCharacters": 54, "totalTokens": 12 } } } }
탭 1에서 PSC 엔드포인트 IP 주소(
192.168.0.1
)가on-prem-client
VM 인스턴스(서브넷172.16.10.0/28
)에서 Vertex AI API에 액세스하는 데 사용되었는지 확인합니다.Cloud Shell 탭 1의
tcpdump
터미널에서us-central1-aiplatform.googleapis.com
에 대한 DNS 조회가 필요 없음을 알 수 있습니다./etc/hosts
파일에 추가한 줄이 우선 적용되고 PSC 엔드포인트 IP 주소(192.168.0.1
)가 데이터 경로에 사용되기 때문입니다.다음과 비슷한
tcpdump
출력이 표시됩니다.23:48:49.938797 ens4 Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2054:2093, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 39 23:48:49.938947 ens4 Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2093:2117, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 24 23:48:49.939839 ens4 Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [F.], seq 2117, ack 6264, win 501, options [nop,nop,TS val 2943864306 ecr 2340789954], length 0 23:48:49.940292 ens4 In IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0 23:48:49.940437 ens4 In IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [F.], seq 6264, ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0 23:48:49.940442 ens4 Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [.], ack 6265, win 501, options [nop,nop,TS val 2943864307 ecr 2340789958], length 0 23:48:49.941193 ens4 In IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2118, win 272, options [nop,nop,TS val 2340789959 ecr 2943864306], length 0
삭제
이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트는 유지하되 개별 리소스를 삭제하세요.
Cloud Shell에서 다음 명령어를 실행하여 프로젝트의 개별 리소스를 삭제할 수 있습니다.
projectid=PROJECT_ID
gcloud config set project ${projectid}
gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet
gcloud compute instances delete on-prem-client --zone=us-central1-a --quiet
gcloud iam service-accounts delete user-managed-sa@$projectid.iam.gserviceaccount.com --quiet
gcloud compute forwarding-rules delete pscvertex --global --quiet
gcloud compute addresses delete psc-googleapi-ip --global --quiet
gcloud compute vpn-tunnels delete vertex-networking-vpc-tunnel0 vertex-networking-vpc-tunnel1 onprem-vpc-tunnel0 onprem-vpc-tunnel1 --region=us-central1 --quiet
gcloud compute routers nats delete us-central-cloudnat-onprem --router=onprem-vpc-router1 --region=us-central1 --quiet
gcloud compute routers delete vertex-networking-vpc-router1 onprem-vpc-router1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete vertex-networking-vpn-gw1 onprem-vpn-gw1 --region=us-central1 --quiet
gcloud compute networks subnets delete onprem-vpc-subnet1 --region=us-central1 --quiet
gcloud compute networks delete onprem-vpc --quiet
gcloud compute networks delete vertex-networking-vpc --quiet
다음 단계
- Vertex AI 엔드포인트 및 서비스에 액세스하기 위한 엔터프라이즈 네트워킹 옵션을 알아보세요.
- 엔드포인트를 통해 게시된 서비스에 액세스하는 방법을 알아보세요.
- Private Service Connect 작동 방식과 상당한 성능상의 이점을 제공하는 이유를 알아보세요.
- 엔드포인트를 통한 Google API 액세스를 자세히 알아보세요.
- 대규모 및 프로덕션 환경에서
/etc/hosts
파일을 업데이트하는 대신 DNS 전달 영역을 사용하는 방법과 이유를 알아보세요. - 커스텀 공지 경로 자세히 알아보기