1. 소개
온프레미스 호스트는 공개 인터넷을 통해 기본적으로 온라인 예측에 도달하거나 (옵션 1) 온프레미스 네트워크에서 Private Service Connect (PSC)와 함께 Cloud VPN 또는 Cloud Interconnect를 사용하여 온라인 예측에 도달할 수 있습니다(옵션 2). 두 옵션 모두 SSL/TLS 암호화를 제공합니다. 인터커넥트를 통한 온라인 예측에 대한 하이브리드 연결은 인터넷보다 성능이 우수하므로 그림 1과 같이 중요한 애플리케이션에 권장됩니다.
이 튜토리얼에서는 고가용성 VPN (HA VPN)을 사용하여 멀티 클라우드 및 온프레미스 비공개 연결의 기반이 되는 두 VPC 네트워크 간에 비공개로 온라인 예측에 액세스하는 방법을 보여줍니다.
Vertex 온라인 예측은 공개 엔드포인트이므로 VPC 서비스 제어 (VPC-SC)를 사용하여 액세스를 제한하여 보안 경계를 만들어 Vertex 및 기타 Google API에 대한 액세스를 허용하거나 거부하는 것이 좋습니다. 이 튜토리얼에서는 VPC-SC를 다루지 않습니다. 자세한 내용은 Vertex AI를 통한 VPC 서비스 제어를 참고하세요.

빌드할 항목
온프레미스 환경을 나타내는 on-prem-vpc라는 VPC 네트워크를 설정합니다. 배포의 경우 on-prem-vpc가 존재하지 않으며 대신 온프레미스 데이터 센터 또는 클라우드 제공업체에 대한 하이브리드 네트워킹이 사용됩니다.
아래 세부정보에 따라 Cloud NAT를 통해 공개적으로 온라인 예측에 액세스하고 HA VPN을 통해 PSC를 사용하여 비공개로 액세스하는 방법을 보여주는 포괄적인 Private Service Connect 아키텍처를 빌드합니다.

온라인 예측이 Google Cloud 프로젝트에 배포되면 다음 사용 사례가 살펴봅니다.
온라인 예측에 대한 공개 액세스는 다음으로 구성됩니다.
- 이그레스 인터넷 액세스에 NAT를 활용하는 GCE 인스턴스 (nat-client)를 만듭니다.
- CURL을 사용하여 모델에 대한 추론 실행
- TCPDUMP를 사용하여 온라인 예측이 공개 VIP를 통해 액세스되는지 확인
온라인 예측에 대한 비공개 액세스는 다음으로 구성됩니다.
- 프로젝트의 Vertex 온라인 예측 엔드포인트에 모델 배포
- aiml-vpc에 Private Service Connect (Googleapis) 엔드포인트 만들기
- 클라우드 라우터를 통해 PSC IP 주소를 온프레미스 VPC에 커스텀 공지로 내보냅니다.
- GCE 인스턴스 (private-client)를 만들고 PSC 엔드포인트 IP로 etc/hosts 파일을 업데이트합니다.
- CURL을 사용하여 모델에 대한 추론 실행
- TCPDUMP를 사용하여 PSC 엔드포인트 IP 주소를 통해 온라인 예측에 액세스하는지 확인
학습할 내용
- Private Service Connect 엔드포인트를 설정하는 방법
- Cloud Router를 통해 PSC 엔드포인트 IP를 공지하는 방법
- TCPDUMP를 사용하여 공개 및 비공개 온라인 예측 액세스를 검증하는 방법
필요한 항목
- Google Cloud 프로젝트
IAM 권한
2. 시작하기 전에
튜토리얼을 지원하도록 프로젝트 업데이트
이 튜토리얼에서는 Cloud Shell에서 gcloud 구성 구현을 지원하기 위해 $variables를 사용합니다.
Cloud Shell 내에서 다음을 실행합니다.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. 서비스 사용 설정
Cloud Shell 내에서 다음을 실행합니다.
gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable iam.googleapis.com
gcloud services enable compute.googleapis.com
gcloud services enable notebooks.googleapis.com
4. aiml-vpc 설정
aiml-vpc 만들기
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom
사용자 관리 노트북 서브넷 만들기
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access
Cloud Router 및 NAT 구성
사용자 관리 노트북 인스턴스에 외부 IP 주소가 없으므로 노트북 소프트웨어 패키지 다운로드 튜토리얼에서 Cloud NAT가 사용됩니다. Cloud NAT는 이그레스 NAT 기능도 제공하므로 인터넷 호스트가 사용자 관리 노트북과의 통신을 시작할 수 없어 보안이 강화됩니다.
Cloud Shell 내에서 리전 Cloud Router를 만듭니다.
gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1
Cloud Shell 내에서 리전 Cloud NAT 게이트웨이를 만듭니다.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
5. on-prem-vpc 설정
on-prem-vpc 만들기
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
nat-subnet 만들기
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute networks subnets create nat-subnet --project=$projectid --range=192.168.10.0/28 --network=on-prem-vpc --region=us-central1
private-ip-subnet 만들기
Cloud Shell 내에서 다음을 실행합니다.
gcloud compute networks subnets create private-ip-subnet --project=$projectid --range=192.168.20.0/28 --network=on-prem-vpc --region=us-central1
Cloud Router 및 NAT 구성
Cloud NAT는 소프트웨어 패키지 다운로드 튜토리얼에서 사용됩니다. Cloud NAT는 이그레스 NAT 기능도 제공하므로 인터넷 호스트가 컴퓨팅과의 통신을 시작할 수 없어 보안이 강화됩니다.
Cloud Shell 내에서 리전 Cloud Router를 만듭니다.
gcloud compute routers create cloud-router-us-central1-on-prem-nat --network on-prem-vpc --region us-central1
Cloud Shell 내에서 리전 Cloud NAT 게이트웨이를 만듭니다.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-on-prem-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
6. Private Service Connect 엔드포인트 만들기
다음 섹션에서는 온프레미스 VPC에서 Vertex API에 액세스하는 데 사용되는 Private Service Connect (PSC) 엔드포인트를 만듭니다. PSC IP 주소 100.100.10.10은 이후 단계에서 aiml-vpc-cloud-router-vpn에서 커스텀 라우터 공지로 온프레미스 네트워크에 공지됩니다.
Cloud Shell 사용
gcloud compute addresses create psc-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=100.100.10.10 \
--network=aiml-vpc
PSC 엔드포인트 만들기
Cloud Shell 사용
gcloud compute forwarding-rules create pscvertex \
--global \
--network=aiml-vpc \
--address=psc-ip \
--target-google-apis-bundle=all-apis
구성된 Private Service Connect 엔드포인트 나열
Cloud Shell 사용
gcloud compute forwarding-rules list \
--filter target="(all-apis OR vpc-sc)" --global
구성된 Private Service Connect 엔드포인트 설명
Cloud Shell 사용
gcloud compute forwarding-rules describe \
pscvertex --global
7. 하이브리드 연결
다음 섹션에서는 경계 게이트웨이 프로토콜 (BGP)을 사용하여 가상 프라이빗 클라우드 (VPC)와 피어 네트워크 간에 경로를 동적으로 교환할 수 있는 Cloud Router를 만듭니다.
Cloud Router는 Cloud VPN 터널을 통해 BGP 세션을 설정하여 네트워크를 연결할 수 있습니다. 새 서브넷 IP 주소 범위를 자동으로 학습하여 피어 네트워크에 알립니다.
이 튜토리얼에서는 aiml-vpc와 on-prem-vpc 사이에 HA VPN을 배포합니다.
aiml-vpc의 HA VPN 게이트웨이 만들기
각 게이트웨이가 생성되면 게이트웨이 인터페이스마다 외부 IPv4 주소 두 개가 자동으로 할당됩니다.
Cloud Shell 내에서 HA VPN 게이트웨이 만들기
gcloud compute vpn-gateways create aiml-vpn-gw \
--network=aiml-vpc\
--region=us-central1
on-prem-vpc의 HA VPN 게이트웨이를 만듭니다.
각 게이트웨이가 생성되면 게이트웨이 인터페이스마다 외부 IPv4 주소 두 개가 자동으로 할당됩니다. 나중에 구성 단계에서 사용할 수 있도록 이 IP 주소를 기록해 둡니다.
Cloud Shell 내에서 HA VPN 게이트웨이를 만듭니다.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
HA VPN 게이트웨이 생성 확인
콘솔을 사용하여 하이브리드 연결 → VPN → CLOUD VPN 게이트웨이로 이동하고 게이트웨이 IP가 생성되었는지 확인합니다.

aiml-vpc용 Cloud Router 만들기
Cloud Shell 내에서 us-central1에 있는 Cloud Router를 만듭니다.
gcloud compute routers create aiml-cr-us-central1 \
--region=us-central1 \
--network=aiml-vpc\
--asn=65001
on-prem-vpc용 Cloud Router 만들기
Cloud Shell 내에서 us-central1에 있는 Cloud Router를 만듭니다.
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
aiml-vpc용 VPN 터널 만들기
각 HA VPN 게이트웨이에 VPN 터널 2개를 만듭니다.
VPN 터널0 만들기
Cloud Shell 내에서 tunnel0을 만듭니다.
gcloud compute vpn-tunnels create aiml-vpc-tunnel0 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router aiml-cr-us-central1 \
--vpn-gateway aiml-vpn-gw \
--interface 0
VPN 터널1 만들기
Cloud Shell 내에서 tunnel1을 만듭니다.
gcloud compute vpn-tunnels create aiml-vpc-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router aiml-cr-us-central1 \
--vpn-gateway aiml-vpn-gw \
--interface 1
on-prem-vpc용 VPN 터널 만들기
각 HA VPN 게이트웨이에 VPN 터널 2개를 만듭니다.
VPN 터널0 만들기
Cloud Shell 내에서 tunnel0을 만듭니다.
gcloud compute vpn-tunnels create on-prem-tunnel0 \
--peer-gcp-gateway aiml-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 0
VPN 터널1 만들기
Cloud Shell 내에서 tunnel1을 만듭니다.
gcloud compute vpn-tunnels create on-prem-tunnel1 \
--peer-gcp-gateway aiml-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 1
VPN 터널 생성 검증
콘솔을 사용하여 하이브리드 연결 → VPN → Cloud VPN 터널로 이동합니다.

8. BGP 인접 항목 설정
BGP 세션 만들기
이 섹션에서는 Cloud Router 인터페이스와 BGP 피어를 구성합니다.
aiml-vpc의 BGP 인터페이스 및 피어링 만들기
Cloud Shell 내에서 BGP 인터페이스를 만듭니다.
gcloud compute routers add-interface aiml-cr-us-central1 \
--interface-name if-tunnel0-to-onprem \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel aiml-vpc-tunnel0 \
--region us-central1
Cloud Shell 내에서 BGP 피어를 만듭니다.
gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onprem \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region us-central1
Cloud Shell 내에서 BGP 인터페이스를 만듭니다.
gcloud compute routers add-interface aiml-cr-us-central1 \
--interface-name if-tunnel1-to-onprem \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel aiml-vpc-tunnel1 \
--region us-central1
Cloud Shell 내에서 BGP 피어를 만듭니다.
gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
--peer-name bgp-on-premises-tunnel1 \
--interface if-tunnel2-to-onprem \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region us-central1
on-prem-vpc의 BGP 인터페이스 및 피어링 만들기
Cloud Shell 내에서 BGP 인터페이스를 만듭니다.
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel0-to-aiml-vpc\
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel0 \
--region us-central1
Cloud Shell 내에서 BGP 피어를 만듭니다.
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-aiml-vpc-tunnel0 \
--interface if-tunnel1-to-aiml-vpc\
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region us-central1
Cloud Shell 내에서 BGP 인터페이스를 만듭니다.
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel1-to-aiml-vpc\
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel1 \
--region us-central1
Cloud Shell 내에서 BGP 피어를 만듭니다.
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-aiml-vpc-tunnel1\
--interface if-tunnel2-to-aiml-vpc\
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region us-central1
하이브리드 연결 → VPN으로 이동하여 VPN 터널 세부정보를 확인합니다.

aiml-vpc가 HA VPN을 통해 학습한 경로 검증
콘솔을 사용하여 VPC 네트워크 → VPC 네트워크 → aiml-vpc → 경로 → 리전 → US-CENTRAL1 → 보기로 이동합니다.
aiml-vpc가 on-prem-vpc nat-subnet 및 private-ip-subnet에서 경로를 학습했는지 확인

on-prem-vpc가 HA-VPN을 통해 워크벤치 서브넷을 학습했는지 확인
콘솔을 사용하여 VPC 네트워크 → VPC 네트워크 → on-prem-vpc → 경로 → 리전 → US-CENTRAL1 → 보기로 이동합니다.

9. aiml-vpc용 커스텀 경로 공지 만들기
서브넷이 VPC에 구성되어 있지 않으므로 aiml-cr-us-central1 Cloud Router에서 Private Service Connect 엔드포인트 IP가 자동으로 공지되지 않습니다.
대신 온프레미스 VPC에 대한 BGP를 통해 온프레미스 환경에 공지할 엔드포인트 IP 주소 100.100.10.10에 대한 aiml-cr-us-central Cloud Router에서 커스텀 경로 공지를 만들어야 합니다.
콘솔에서 하이브리드 연결 → 클라우드 라우터 → aiml-cr-us-central1로 이동한 다음 수정을 선택합니다.

'공지된 경로' 섹션에서 커스텀 경로 만들기 옵션을 선택하고 아래 예시에 따라 필드를 업데이트한 후 완료를 선택하고 저장을 클릭합니다.

확인
on-prem-vpc가 HA-VPN을 통해 PSC 엔드포인트 IP 주소를 학습했는지 확인
콘솔을 사용하여 VPC 네트워크 → VPC 네트워크 → on-prem-vpc → 경로 → 리전 → US-CENTRAL1 → 보기로 이동합니다.

10. on-prem-vpc에서 커스텀 경로 공지 만들기
온프레미스-VPC Cloud Router는 기본적으로 모든 서브넷을 공지하지만 private-ip-subnet만 필요합니다.
다음 섹션에서 on-prem-cr-us-central1 Cloud Router의 경로 공지를 업데이트합니다.
콘솔에서 하이브리드 연결 → 클라우드 라우터 → on-prem-cr-us-central1로 이동한 후 수정을 선택합니다.

'공지된 경로' 섹션에서 커스텀 경로 만들기 옵션을 선택하고 아래 예시에 따라 필드를 업데이트한 후 완료를 선택하고 저장을 클릭합니다.

확인
aiml-vpc가 on-prem-vpc에서 private-ip-subnet 경로를 학습했는지 확인합니다.
콘솔을 사용하여 VPC 네트워크 → VPC 네트워크 → aiml-vpc → 경로 → 리전 → US-CENTRAL1 → 보기로 이동합니다.

11. 사용자 관리 서비스 계정 만들기 (GCE 인스턴스)
Vertex API에 세부적인 제어 기능을 제공하려면 NAT 및 비공개 클라이언트 인스턴스에 적용되는 사용자 관리 서비스 계정이 필요합니다. 생성된 서비스 계정 권한은 비즈니스 요구사항에 따라 수정할 수 있습니다. 튜토리얼에서 사용자 관리 서비스 계정인 vertex-sa에는 다음 역할이 적용됩니다.
Cloud Shell 내에서 서비스 계정을 만듭니다.
gcloud iam service-accounts create gce-vertex-sa \
--description="service account for vertex" \
--display-name="gce-vertex-sa"
Cloud Shell 내에서 역할 compute instance admin으로 서비스 계정을 업데이트합니다.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"
Cloud Shell에서 Vertex AI 사용자 역할로 서비스 계정을 업데이트합니다.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
12. 사용자 관리 서비스 계정 만들기 (Notebook)
다음 섹션에서는 튜토리얼에서 사용되는 Vertex Workbench (노트북)와 연결될 사용자 관리 서비스 계정을 만듭니다.
튜토리얼에서 서비스 계정에는 다음 역할이 적용됩니다.
Cloud Shell 내에서 서비스 계정을 만듭니다.
gcloud iam service-accounts create user-managed-notebook-sa \
--display-name="user-managed-notebook-sa"
Cloud Shell 내에서 스토리지 관리자 역할이 있는 서비스 계정을 업데이트합니다.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"
Cloud Shell 내에서 서비스 계정을 Vertex AI 사용자 역할로 업데이트합니다.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
Cloud Shell 내에서 Artifact Registry 관리자 역할로 서비스 계정을 업데이트합니다.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
Cloud Shell 내에서 서비스 계정을 나열하고 사용자 관리 노트북을 만들 때 사용할 이메일 주소를 기록합니다.
gcloud iam service-accounts list
13. 테스트 인스턴스를 생성했습니다.
다음 섹션에서는 Vertex API에 도달하는 다양한 방법을 검증하기 위한 테스트 인스턴스를 만듭니다.
- 인스턴스
nat-client,는 Cloud NAT를 사용하여 Vertex AI를 확인하므로 인터넷을 통해 온라인 예측 엔드포인트에 액세스합니다. - 인스턴스
private-client는 Private Service Connect IP 100.100.10.10을 사용하여 HA-VPN을 통해 온라인 예측 엔드포인트에 액세스합니다.
Cloud Shell 내에서 nat-client 인스턴스를 만듭니다.
gcloud compute instances create nat-client \
--zone=us-central1-a \
--image-family=debian-11 \
--image-project=debian-cloud \
--subnet=nat-subnet \
--service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--no-address \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump dnsutils -y"
Cloud Shell 내에서 private-client 인스턴스를 만듭니다.
gcloud compute instances create private-client \
--zone=us-central1-a \
--image-family=debian-11 \
--image-project=debian-cloud \
--subnet=private-ip-subnet \
--service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--no-address \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump dnsutils -y"
IAP (Identity-Aware Proxy)가 VM 인스턴스에 연결하도록 허용하려면 다음과 같은 방화벽 규칙을 만드세요.
- IAP를 사용하여 액세스할 수 있는 모든 VM 인스턴스에 적용됩니다.
- IP 범위 35.235.240.0/20에서의 인그레스 트래픽을 허용합니다. 이 범위에는 IAP가 TCP 전달을 위해 사용하는 모든 IP 주소가 포함됩니다.
Cloud Shell 내에서 IAP 방화벽 규칙을 만듭니다.
gcloud compute firewall-rules create ssh-iap-on-prem-vpc \
--network on-prem-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
14. 사용자 관리 노트북 만들기
다음 섹션에서 이전에 만든 서비스 계정인 user-managed-notebook-sa를 통합하는 사용자 관리형 노트북을 만듭니다.
Cloud Shell 내에서 private-client 인스턴스를 만듭니다.
gcloud notebooks instances create workbench-tutorial \
--vm-image-project=deeplearning-platform-release \
--vm-image-family=common-cpu-notebooks \
--machine-type=n1-standard-4 \
--location=us-central1-a \
--subnet-region=us-central1 \
--subnet=workbench-subnet \
--no-public-ip --service-account=user-managed-notebook-sa@$projectid.iam.gserviceaccount.com
15. 모델 및 온라인 예측 배포
다음 섹션에서는 제공된 코드랩,Vertex AI:Sklearn으로 커스텀 예측 루틴을 사용하여 예측을 위한 데이터 전처리 및 후처리에서 섹션 7부터 시작합니다. 이전 단계에서 이미 노트북을 만들었기 때문입니다. 모델이 배포되면 튜토리얼로 돌아와 다음 섹션을 시작합니다.

16. 인터넷을 통한 Vertex API 액세스 검증
다음 섹션에서는 인스턴스 nat-client에 로그인하고 Vertex API를 확인하는 데 사용되는 도메인 us-central1-aiplatform.googleapis.com에 대해 dig 및 tcpdump를 사용하여 Vertex AI에 대한 연결을 검증합니다.
Cloud Shell에서 IAP를 사용하여 nat-client에 로그인하고 vertex 도메인 us-central1-aiplatform.googleapis.com에 대해 dig를 실행하여 Vertex API에 대한 연결을 검증합니다.
gcloud compute ssh nat-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
dig를 실행합니다.
dig us-central1-aiplatform.googleapis.com
예를 들어 DNS 응답의 공개 IP를 확인합니다.
user@nat-client:~$ dig us-central1-aiplatform.googleapis.com
; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56761
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A
;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.111.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.1.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.121.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.103.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.171.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.159.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.161.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.172.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.126.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.70.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95
;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Thu Jun 29 01:35:57 UTC 2023
;; MSG SIZE rcvd: 322
nat-client OS에서 tcpdump를 실행하여 온라인 예측에 대해 curl을 실행할 때 DNS 변환을 검증합니다.
sudo tcpdump -i any port 53 -n
예:
user@nat-client:~$ sudo tcpdump -i any port 53 -n
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
'+'를 선택하여 새 Cloud Shell 터미널을 엽니다. 새 탭이 열리면 프로젝트 이름 변수를 업데이트합니다.
Cloud Shell 내에서 프로젝트 이름 변수를 업데이트합니다.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
Cloud Shell 2에서 nat-client 인스턴스로 ssh를 실행합니다.
gcloud compute ssh --zone "us-central1-a" "nat-client" --project "$projectid"
다음 섹션에서는 sudo VI 편집기 또는 nano를 사용하여 instances.json 파일을 만들고 배포된 모델에서 예측을 가져오는 데 사용되는 데이터 문자열을 삽입합니다.
nat-client OS에서 아래 데이터 문자열을 사용하여 instances.json 파일을 만듭니다.
{"instances": [
[0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
[0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}
예:
user@nat-client:$ more instances.json
{"instances": [
[0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
[0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}
user@nat-client:$
후속 단계에서 사용할 온라인 예측 엔드포인트 ID를 Cloud 콘솔에서 가져옵니다.
VERTEX AI → 온라인 예측으로 이동합니다.

nat-client OS에서 다음 변수를 만듭니다.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
예:
ENDPOINT_ID="3328226095324463104"
nat-client OS에서 curl을 실행하여 모델의 응답을 가져옵니다.
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
예를 들어 성공적인 예측을 확인합니다.
user@nat-client$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
{
"predictions": [
"$479.0",
"$586.0"
],
"deployedModelId": "1949163636186415104",
"model": "projects/234086459238/locations/us-central1/models/947543727654567936",
"modelDisplayName": "diamonds-cpr",
"modelVersionId": "1"
}
17. 검증 - Vertex API에 대한 인터넷 액세스
이제 예측을 실행했으므로 nat-client 인스턴스 (192.168.10.2)가 Vertex AI 도메인 us-central1-aiplatform.googleapis.com의 로컬 DNS 서버 169.254.169.254에 DNS 쿼리를 수행함을 나타내는 TCPDUMP 결과 (터미널 1)를 살펴보겠습니다. DNS 쿼리의 결과는 아래에 나와 있는 Vertex API의 공개 가상 IP 주소 (VIP)입니다.
user@nat-client:~$ sudo tcpdump -i any port 53 -n
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
20:05:09.260937 ens4 Out IP 192.168.10.2.40782 > 169.254.169.254.53: 47190+ A? oauth2.googleapis.com. (39)
20:05:09.260946 ens4 Out IP 192.168.10.2.40782 > 169.254.169.254.53: 28075+ AAAA? oauth2.googleapis.com. (39)
20:05:09.263556 ens4 In IP 169.254.169.254.53 > 192.168.10.2.40782: 28075 4/0/0 AAAA 2607:f8b0:4001:c34::5f, AAAA 2607:f8b0:4001:c54::5f, AAAA 2607:f8b0:4001:c16::5f, AAAA 2607:f8b0:4001:c17::5f (151)
20:05:09.265018 ens4 In IP 169.254.169.254.53 > 192.168.10.2.40782: 47190 16/0/0 A 74.125.201.95, A 74.125.202.95, A 74.125.69.95, A 64.233.183.95, A 173.194.193.95, A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 64.233.191.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95 (295)
20:05:09.474478 ens4 Out IP 192.168.10.2.57356 > 169.254.169.254.53: 36008+ A? us-central1-aiplatform.googleapis.com. (55)
20:05:09.474488 ens4 Out IP 192.168.10.2.57356 > 169.254.169.254.53: 47020+ AAAA? us-central1-aiplatform.googleapis.com. (55)
20:05:09.477190 ens4 In IP 169.254.169.254.53 > 192.168.10.2.57356: 36008 16/0/0 A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95, A 142.250.136.95, A 142.250.148.95, A 209.85.200.95, A 209.85.234.95, A 142.250.152.95, A 142.250.128.95 (311)
20:05:09.478607 ens4 In IP 169.254.169.254.53 > 192.168.10.2.57356: 47020 4/0/0 AAAA 2607:f8b0:4001:c1b::5f, AAAA 2607:f8b0:4001:c0c::5f, AAAA 2607:f8b0:4001:c0e::5f, AAAA 2607:f8b0:4001:c1e::5f (167)
18. Vertex API에 대한 비공개 액세스 사용 설정
다음 섹션에서는 하이브리드 네트워킹 (HA VPN)을 통해 Private Service Connect를 사용하여 Vertex API에 액세스하여 온라인 예측에 비공개로 도달합니다. 튜토리얼에 사용된 예시에서는 private-client 인스턴스의 /etc/hosts 파일을 업데이트합니다.
온프레미스 환경에서는 테스트를 위해 하나 또는 소수의 머신 /etc/hosts 파일을 업데이트하는 것이 적절하지만 대규모 및 프로덕션 환경에서는 PSC 엔드포인트 FQDN을 사용하여 새 전달 영역을 만드는 것이 더 바람직합니다.
예를 들어 튜토리얼에서 생성된 PSC 엔드포인트는 pscvertex라고 하며, 이는 pscvertex.p.googleapis.com으로 변환됩니다.Vertex의 엔드포인트를 사용할 때는 서비스로 FQDN을 추가합니다(예: us-central1-aiplatform-pscvertex.p.googleapis.com).
PSC 엔드포인트로 온프레미스 DNS를 업데이트하려면 네이티브 공개 엔드포인트 us-central1-aiplatform.googleapis.com 대신 FDQN(예: us-central1-aiplatform-pscvertex.p.googleapis.com)을 호출하도록 로컬 애플리케이션을 리팩터링해야 합니다.
커스텀 엔드포인트를 사용하도록 구성될 수 있는 클라이언트는 p.googleapis.com DNS 이름을 사용하여 엔드포인트로 요청을 전송할 수 있습니다.
커스텀 엔드포인트를 사용하도록 구성하는 방법은 클라이언트 또는 클라이언트 라이브러리 문서를 참고하세요. 예를 들면 다음과 같습니다.
- Python: google-api-core 패키지의 클라이언트 옵션 클래스에서 api_endpoint를 구성할 수 있습니다.
- Go: api 패키지의 클라이언트 옵션 패키지에서 WithEndpoint를 구성할 수 있습니다.
- gcloud: You can configure api_endpoint_overrides
'+'를 선택하여 새 Cloud Shell 터미널을 엽니다. 새 탭이 열리면 프로젝트 이름 변수를 업데이트합니다.
Cloud Shell에서
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
새 Cloud Shell에서 IAP를 사용하여 private-client에 로그인하여 vertex 도메인 us-central1-aiplatform.googleapis.com에 대해 dig를 실행하여 Vertex API에 대한 연결을 검증합니다.
Cloud Shell에서 private-client OS 인스턴스에 로그인합니다.
gcloud compute ssh private-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
dig를 실행합니다.
dig us-central1-aiplatform.googleapis.com
예를 들어 DNS 응답을 기반으로 공개 IP를 확인합니다.
user@private-client:~$ dig us-central1-aiplatform.googleapis.com
; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33311
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A
;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.182.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.183.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.193.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.194.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.195.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.196.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.197.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.191.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.74.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.192.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.145.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.146.95
;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Sun Jul 02 20:5
sudo VI 편집기 또는 nano를 사용하여 비공개 클라이언트 인스턴스 /etc/hosts를 업데이트하여 PSC 엔드포인트 100.100.10.10을 가리키는 Vertex AI FQDN us-central1-aiplatform.googleapis.com 레코드를 만듭니다. 추가 변경사항은 필요하지 않습니다.
예:
user@private-client:~$ more /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
100.100.10.10 us-central1-aiplatform.googleapis.com
192.168.20.2 private-client.c.$projectid.internal private-client # Added by Google
169.254.169.254 metadata.google.internal # Added by Google
비공개 클라이언트 OS에서 Vertex API 엔드포인트로 PING을 실행합니다.
ping us-central1-aiplatform.googleapis.com
예를 들어 PING은 PSC 엔드포인트 IP를 반환하지만 응답은 예상되지 않습니다.
user@private-client:~$ ping us-central1-aiplatform.googleapis.com
PING us-central1-aiplatform.googleapis.com (100.100.10.10) 56(84) bytes of data.
비공개 클라이언트 OS에서 tcpdump를 실행하여 온라인 예측에 대해 curl을 실행할 때 PSC 엔드포인트에 대한 DNS 변환과 IP 데이터 경로를 검증합니다.
sudo tcpdump -i any port 53 -n or host 100.100.10.10
'+'를 선택하여 네 번째 Cloud Shell 터미널을 엽니다. 새 탭이 열리면 프로젝트 이름 변수를 업데이트합니다.
Cloud Shell 내에서 프로젝트 이름 변수를 업데이트합니다.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
Cloud Shell 4에서 private-client 인스턴스로 ssh를 실행합니다.
gcloud compute ssh --zone "us-central1-a" "private-client" --project "$projectid"
다음 섹션에서는 sudo VI 편집기 또는 nano를 사용하여 instances.json 파일을 만들고 배포된 모델에서 예측을 가져오는 데 사용되는 데이터 문자열을 삽입합니다.
비공개 클라이언트 OS에서 아래 데이터 문자열을 사용하여 instances.json 파일을 만듭니다.
{"instances": [
[0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
[0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}
예:
user@private-client:$ more instances.json
{"instances": [
[0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
[0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}
user@private-client:$
비공개 클라이언트 OS에서 다음 변수를 만듭니다.
gcloud config list project
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
예:
ENDPOINT_ID="3328226095324463104"
Cloud Shell 4의 비공개 클라이언트 OS에서 curl을 실행하여 모델의 응답을 가져옵니다.
curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
19. 검증 - Vertex API에 대한 비공개 액세스
Cloud Shell 4의 비공개 클라이언트 OS에서 PSC 엔드포인트 IP (100.100.10.10)가 Vertex API에 액세스하는 데 사용되었음을 확인합니다.
user@private-client$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
* Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
* subject: CN=upload.video.google.com
* start date: May 29 08:21:36 2023 GMT
* expire date: Aug 21 08:21:35 2023 GMT
* subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
* issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
* SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55f2ab65c2c0)
> POST /v1/projects/$projectid/locations/us-central1/endpoints/3328226095324463104:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.a0AbVbY6NdCbIJYj0mQROeq-xYgQCw534TTtjRc1kBAEOimKCFxb3gqgD5AvhfefJatSNr33eW1YJirfQVMptFoqfjRoB-i8zEJJ_GGCVqhsVnpSOjK0hzJQSuo2YGjIiSe1o1zdo7lWmh1Px-vLe8FImieGkrQ1hqVaa6aCgYKAXgSARESFQFWKvPlUQ_FuKB2hrDJRyFDjupL1g0171
> content-type: application/json
> content-length: 154
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200
< content-type: application/json; charset=UTF-8
< x-vertex-ai-internal-prediction-backend: harpoon
< date: Mon, 03 Jul 2023 22:13:35 GMT
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
<
{
"predictions": [
"$479.0",
"$586.0"
],
"deployedModelId": "1949163636186415104",
"model": "projects/234086459238/locations/us-central1/models/947543727654567936",
"modelDisplayName": "diamonds-cpr",
"modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact
Cloud Shell 3의 TCPDUMP 터미널에서 /etc/host 파일이 우선 적용되었지만 PSC IP 주소 100.100.10.10이 데이터 경로에 사용되었으므로 us-central1-aiplatform.googleapis.com에 대한 DNS 조회가 관찰되지 않았음을 확인할 수 있습니다.
user@private-client:~$ sudo tcpdump -i any port 53 -n or host 100.100.10.10
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
22:13:35.507625 ens4 Out IP 192.168.20.2.37004 > 169.254.169.254.53: 58585+ A? oauth2.googleapis.com. (39)
22:13:35.507631 ens4 Out IP 192.168.20.2.37004 > 169.254.169.254.53: 15580+ AAAA? oauth2.googleapis.com. (39)
22:13:35.511796 ens4 In IP 169.254.169.254.53 > 192.168.20.2.37004: 58585 16/0/0 A 142.251.6.95, A 108.177.112.95, A 74.125.124.95, A 172.217.212.95, A 172.217.214.95, A 172.253.114.95, A 172.253.119.95, A 108.177.111.95, A 142.250.1.95, A 108.177.121.95, A 142.250.103.95, A 108.177.120.95, A 142.251.171.95, A 142.250.159.95, A 142.251.120.95, A 142.251.161.95 (295)
22:13:35.512002 ens4 In IP 169.254.169.254.53 > 192.168.20.2.37004: 15580 4/0/0 AAAA 2607:f8b0:4001:c2b::5f, AAAA 2607:f8b0:4001:c18::5f, AAAA 2607:f8b0:4001:c5f::5f, AAAA 2607:f8b0:4001:c58::5f (151)
22:13:35.722145 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [S], seq 1951267724, win 65320, options [mss 1420,sackOK,TS val 1371205990 ecr 0,nop,wscale 7], length 0
22:13:35.730727 ens4 In IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [S.], seq 3198878726, ack 1951267725, win 65535, options [mss 1366,sackOK,TS val 67847676 ecr 1371205990,nop,wscale 8], length 0
22:13:35.730760 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 1, win 511, options [nop,nop,TS val 1371205999 ecr 67847676], length 0
22:13:35.738339 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 1:518, ack 1, win 511, options [nop,nop,TS val 1371206006 ecr 67847676], length 517
22:13:35.739922 ens4 In IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], ack 518, win 261, options [nop,nop,TS val 67847688 ecr 1371206006], length 0
22:13:35.740860 ens4 In IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], seq 1:2709, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 2708
22:13:35.740863 ens4 In IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [P.], seq 2709:4699, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 1990
22:13:35.740874 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 2709, win 497, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.740886 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 4699, win 485, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.742709 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 518:598, ack 4699, win 501, options [nop,nop,TS val 1371206011 ecr 67847689], length 80
22:13:35.743996 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 598:644, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 46
22:13:35.744011 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 644:693, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 49
22:13:35.744082 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 693:728, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 35
22:13:35.744165 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 728:1069, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 341
인터넷을 통해 공개 엔드포인트에 연결하고 하이브리드 네트워킹 및 Private Service Connect (googleapis)을 사용하여 비공개로 온라인 예측에 연결하는 것을 검증했습니다. OS를 종료하고 Cloud Shell 프롬프트로 돌아갑니다.
20. 삭제
Cloud Shell에서 튜토리얼 구성요소를 삭제합니다.
gcloud compute forwarding-rules delete pscvertex --global --quiet
gcloud compute instances delete workbench-tutorial --zone=us-central1-a --quiet
gcloud compute addresses delete psc-ip --global --quiet
gcloud compute networks subnets delete workbench-subnet --region=us-central1 --quiet
gcloud compute vpn-tunnels delete aiml-vpc-tunnel0 aiml-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete aiml-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet
gcloud compute routers delete aiml-cr-us-central1 cloud-router-us-central1-aiml-nat --region=us-central1 --quiet
gcloud compute routers delete cloud-router-us-central1-on-prem-nat on-prem-cr-us-central1 --region=us-central1 --quiet
gcloud compute instances delete nat-client private-client --zone=us-central1-a --quiet
gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet
gcloud compute networks subnets delete nat-subnet private-ip-subnet --region=us-central1 --quiet
gcloud compute networks delete on-prem-vpc --quiet
gcloud compute networks delete aiml-vpc --quiet
Vertex 구성요소 삭제
컨테이너 이미지를 삭제하려면 Artifact Registry로 이동하여 생성한 저장소를 선택하고 삭제를 선택합니다.

스토리지 버킷을 삭제하려면 Cloud 콘솔의 탐색 메뉴를 사용하여 스토리지로 이동하고 버킷을 선택하고 삭제를 클릭합니다.

엔드포인트에서 모델 배포를 취소합니다. Vertex AI → 온라인 예측으로 이동하여 diamonds-cpr_endpoint를 선택하고 엔드포인트에서 모델 배포 취소 → 배포 취소를 선택합니다.

모델을 삭제합니다. Vertex AI → Model Registry → Delete Model로 이동합니다.

온라인 예측 엔드포인트를 삭제합니다. VertexAI → 온라인 예측으로 이동하여 diamonds-cpr_endpoint를 선택하고 엔드포인트를 삭제합니다.

21. 축하합니다
인터넷을 사용하여 기본적으로 온라인 예측에 연결하고 Private Service Connect 및 하이브리드 네트워킹을 사용하여 비공개로 연결하는 방법을 구성하고 검증했습니다.
nat-client와 private-client를 만들고 TCPDUMP를 사용하여 Vertex API에 연결하는 데 사용되는 IP 주소를 검증했습니다. 또한 Private Service Connect (googleapis)와 고객 PSC 엔드포인트를 활용하여 온프레미스 및 멀티 클라우드 애플리케이션을 격리하는 방법을 알아봤습니다.
Cosmopup은 튜토리얼이 멋지다고 생각합니다.

다음 단계
다음 튜토리얼을 확인하세요.
