이 가이드를 읽기 전에 VPC 피어링의 자료에 대해 익숙한지 확인해야 합니다.
기본적으로 피어링 구성은 피어링된 Vertex AI 네트워크만 로컬 서브넷의 엔드포인트에 도달하도록 허용합니다. 커스텀 경로를 내보내 생산자 네트워크를 사용자 네트워크에 정적 또는 동적 경로가 있는 다른 네트워크에 연결할 수 있습니다.
전환 피어링은 지원되지 않으므로 '커스텀 경로 내보내기'가 사용 설정되어 있더라도 Vertex AI에서 사용자 네트워크로 직접 피어링된 다른 네트워크의 엔드포인트에 연결할 수 없습니다. 다음 다이어그램에 표시된 예시에서 패킷은 피어링 연결 #1을 순회할 수 있지만 피어링 연결 #2는 순회할 수 없습니다.
Vertex AI가 사용자 네트워크 #2에 연결하도록 사용 설정하려면 다음 다이어그램과 같이 피어링 연결 #2를 VPN #2로 바꿉니다.
피어링 연결 #1에서 커스텀 경로를 사용 설정하면 Vertex AI 네트워크의 IP 패킷이 사용자 네트워크 #2에 도달할 수 있습니다.
사용자 네트워크 #2의 응답 패킷을 Vertex AI 네트워크로 다시 라우팅할 수 있도록 하려면 반환 경로도 사용자 네트워크 #2의 라우팅 테이블에 있어야 합니다. VPN 경로는 Cloud Router에서 경계 게이트웨이 프로토콜(BGP)을 사용하여 교환되며, 사용자 #1의 BGP 구성을 맞춤설정하여 10.1.0.0/16
의 Vertex AI 네트워크 범위에 대한 경로를 피어 사용자 네트워크 #2에 알릴 수 있습니다.
온프레미스 네트워크와 Vertex AI 네트워크가 서로의 경로를 학습할 수 있도록 VPN #1 BGP 구성의 양쪽을 모두 수정할 수 있습니다. Vertex AI 네트워크에서 전달 경로 패킷을 전송하도록 시도하지 않거나, 모든 단일 네트워크에 관한 순차적 피어링 연결을 통한 응답 패킷을 전송하려는 시도가 없기 때문에 이러한 전달 시도가 명시적으로 차단되지 않습니다.
Vertex AI에서 인터넷으로 연결 설정
워크로드를 시작할 때 지정된 네트워크가 없으면 워크로드는 별도의 Google 관리 제작자 프로젝트에서 실행됩니다.
네트워크가 지정되면 워크로드는 소비자 프로젝트와 피어링된 제작자 프로젝트에서 실행됩니다.
기본적으로 Vertex AI 네트워크는 인터넷에 대한 자체 경로를 가지고, 생산자 네트워크는 인터넷에 대한 자체 기본 경로를 가집니다.
생산자 네트워크에서 아웃바운드 연결을 네트워크를 통해 라우팅하도록 하려면 피어링에 VPC 서비스 제어를 사용 설정하면 됩니다. 이는 VPC 서비스 제어와는 다른 구성입니다.
피어링에 VPC 서비스 제어를 사용 설정하면 Vertex AI 네트워크가 다음과 같이 변경됩니다.
- 기본 인터넷 경로를 삭제합니다.
- 기본 인터넷 게이트웨이 다음 홉으로 대상
199.36.153.4/30
에 대한 경로를 만듭니다. *.googleapis.com
에 대해 Cloud DNS 관리형 비공개 영역을 만들고 호스트 이름을 네 개의 주소 중 하나에 매핑하는 적절한 레코드를 만듭니다.servicenetworking
VPC 네트워크에서 사용할 영역을 승인합니다.
이 변경이 적용되면 네트워크에서 기본 경로를 내보내 인터넷에 대한 아웃바운드 연결이 VPC 네트워크를 통해 라우팅되도록 할 수 있습니다. 이러한 변경을 사용하면 Vertex AI에서 아웃바운드 트래픽에 필요한 정책을 적용할 수 있습니다.
VPC 서비스 제어 사용
네트워크가 워크로드에 지정되고 VPC 서비스 제어가 사용 설정된 경우 워크로드는 소비자 프로젝트에 피어링되고 소비자 네트워크와 동일한 정책이 적용되는 제작자 네트워크에서 실행됩니다.
이러한 정책이 아웃바운드 트래픽을 차단하면 워크로드도 인터넷에 연결할 수 없습니다. 이 경우 이전 섹션의 단계를 수행하여 워크로드의 아웃바운드 트래픽이 VPC 네트워크의 NAT 인스턴스를 통과하도록 해야 합니다.
프록시를 사용하여 Vertex AI에서 연결 설정
Vertex AI의 아웃바운드 IP를 제어하기 위한 또 다른 패턴은 워크로드의 아웃바운드 연결이 사용자가 제어하는 웹 프록시를 통과하도록 하는 것입니다. 이를 통해 아웃바운드 연결의 규정 준수 여부를 검사할 수도 있습니다.
하지만 서드 파티 프록시를 사용하면 사용자가 인증 불만 사항에 대해 프록시의 인증서를 관리해야 합니다. 또한 이러한 프록시는 Vertex AI SDK 및 API가 예상하는 것과 교차하는 암호화 스위트 목록을 제안하지 않을 수 있습니다.
Google Cloud에서는 이 패턴을 용이하게 하기 위해 보안 웹 프록시를 제공합니다. 이제 보안 웹 프록시 인스턴스 배포 빠른 시작 가이드에 따라 아웃바운드 연결에 사용하도록 워크로드를 조정할 수 있습니다. 이러한 연결은 프록시의 소스 IP 주소에서 시작된 것으로 표시됩니다.
KFP 라이브러리가 구성요소 이미지에 아직 설치되지 않았으면 사용자가 프록시를 지정했을 수 있는 코드를 실행하기 전에 파이프라인이 이를 설치하려고 시도합니다.
파이프라인이 프록시를 사용하여 인터넷에서 패키지 설치하는 경우 이 시도가 실패하고 다음과 같은 오류 메시지가 표시될 수 있습니다.
Could not find a version that satisfies the requirement kfp==2.7.0
이러한 경우 코드 실행 전 KFP를 설치할 수 없으면 KFP가 이미 설치된 이미지를 사용해야 합니다.
KFP를 기본 이미지에 추가하고 이를 저장소에 푸시할 수도 있습니다.
다음 Dockerfile 예시는 KFP를 python:3.8
기본 이미지에 추가합니다.
FROM python:3.8
RUN pip install kfp==2.7.0
그런 후 이 이미지를 사용하도록 @component
파이프라인을 구성할 수 있습니다.
@component(base_image="$PATH_TO_YOUR_REPOSITORY:YOUR_IMAGE")
파이프라인 구성요소가 실행되면 코드가 프록시를 통과하여 다른 패키지를 자유롭게 설치할 수 있습니다. 다음 예시는 https://10.10.10.10:443
에서 프록시를 사용하여 numpy
를 설치합니다.
import subprocess
subprocess.call(['pip', 'install', '--proxy', 'https://10.10.10.10:443', 'numpy'])`
API 액세스 허용 목록 설정
Vertex AI 워크로드와 Google API 간의 트랜잭션의 경우 워크로드로부터 Google API에서 사용하는 IP 범위로에 대한 액세스를 허용해야 합니다. 이를 위해 제공된 기본 도메인의 IP 주소를 반환하는 스크립트를 실행할 수 있습니다.