온라인 예측에 Private Service Connect 사용

Private Service Connect를 사용하면 공개 IP 주소, 공개 인터넷 액세스 또는 명시적으로 피어링된 내부 IP 주소 범위를 사용하지 않고 여러 프로젝트와 VPC 네트워크에서 Vertex AI 온라인 예측에 안전하게 액세스할 수 있습니다.

다음 요구사항이 있는 온라인 예측 사용 사례에 Private Service Connect를 사용하는 것이 좋습니다.

  • 비공개 및 보안 연결 필요
  • 짧은 지연 시간 필요
  • 공개적으로 액세스할 필요 없음

Private Service Connect는 VPC 네트워크에서 전달 규칙을 사용하여 트래픽을 단방향으로 Vertex AI 온라인 예측 서비스에 전송합니다. 전달 규칙은 Vertex AI 서비스를 VPC 네트워크에 노출하는 서비스 연결에 연결됩니다. 자세한 내용은 Private Service Connect 엔드포인트를 통해 Vertex AI 서비스 액세스를 참조하세요. Private Service Connect 설정에 대한 자세한 내용은 Virtual Private Cloud(VPC) 문서의 Private Service Connect 개요를 참조하세요.

엔드포인트 만들기

다음 방법 중 하나를 사용하여 Private Service Connect가 사용 설정된 온라인 예측 엔드포인트를 만듭니다.

콘솔

  1. Google Cloud 콘솔의 Vertex AI에서 온라인 예측 페이지로 이동합니다.

    온라인 예측으로 이동

  2. 만들기를 클릭합니다.

  3. 엔드포인트 표시 이름을 제공합니다.

  4. 비공개를 선택합니다.

  5. Private Service Connect를 선택합니다.

  6. 프로젝트 ID 선택을 클릭합니다.

  7. 엔드포인트 허용 목록에 추가할 프로젝트를 선택합니다.

  8. 계속을 클릭합니다.

  9. 모델 사양을 선택합니다. 자세한 내용은 엔드포인트에 모델 배포를 참조하세요.

  10. 만들기를 클릭하여 엔드포인트를 만들고 모델을 배포합니다.

  11. 응답의 엔드포인트 ID를 기록해 둡니다. 이후 단계에서 Private Service Connect 엔드포인트를 만들 때 VERTEXAI_ENDPOINT_ID 값에 필요합니다.

API

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • VERTEXAI_PROJECT_ID: 온라인 예측 엔드포인트를 만들 Google Cloud 프로젝트의 ID
  • REGION: Vertex AI를 사용하는 리전.
  • VERTEXAI_ENDPOINT_NAME: 온라인 예측 엔드포인트의 표시 이름
  • ALLOWED_PROJECTS: 각각 따옴표로 묶인 쉼표로 구분된 Google Cloud 프로젝트 ID 목록(예: ["PROJECTID1", "PROJECTID2"]). 프로젝트가 이 목록에 없으면 예측 요청을 Vertex AI 엔드포인트로 보낼 수 있습니다 같은 프로젝트에서 엔드포인트를 호출할 수 있도록 이 목록에 VERTEXAI_PROJECT_ID를 포함해야 합니다.

HTTP 메서드 및 URL:

POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEXAI_PROJECT_ID/locations/REGION/endpoints

JSON 요청 본문:

{
  "displayName": "VERTEXAI_ENDPOINT_NAME",
  "privateServiceConnectConfig": {
    "enablePrivateServiceConnect": true,
    "projectAllowlist": ["ALLOWED_PROJECTS"]
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/VERTEXAI_PROJECT_NUMBER/locations/REGION/endpoints/VERTEXAI_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-11-05T17:45:42.812656Z",
      "updateTime": "2020-11-05T17:45:42.812656Z"
    }
  }
}
VERTEXAI_ENDPOINT_ID를 기록해 둡니다. 이후 단계에서 모델을 배포할 때 필요합니다.

모델 배포

Private Service Connect를 사용 설정한 온라인 예측 엔드포인트를 만든 후 엔드포인트에 모델 배포에 설명된 단계를 수행하여 모델을 배포합니다.

서비스 연결 가져오기

모델을 배포하면 온라인 예측 엔드포인트에 서비스 연결이 생성됩니다. gcloud ai endpoints describe 명령어를 실행하여 서비스 연결 URI를 가져옵니다.

  1. 엔드포인트 세부정보에서 serviceAttachment 값만 나열합니다.

    gcloud ai endpoints describe VERTEXAI_ENDPOINT_ID \
    --project=VERTEXAI_PROJECT_ID \
    --region=REGION \
    | grep -i serviceAttachment
    

    다음을 바꿉니다.

    • VERTEXAI_ENDPOINT_ID: 방금 만든 온라인 예측 엔드포인트의 ID
    • VERTEXAI_PROJECT_ID: 온라인 예측 엔드포인트를 만든 Google Cloud 프로젝트의 ID
    • REGION: 이 요청의 리전

    출력은 다음과 비슷합니다.

    serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
    
  2. serviceAttachment 필드의 전체 문자열을 기록해 둡니다. 서비스 연결 URI입니다.

Private Service Connect 엔드포인트 만들기

Private Service Connect 엔드포인트의 내부 IP 주소를 예약하고 해당 주소를 사용하여 Private Service Connect 엔드포인트를 만들 수 있습니다. 엔드포인트를 만들려면 서비스 연결 URI가 필요합니다.

  1. Private Service Connect 엔드포인트의 내부 IP 주소를 예약하려면 gcloud compute addresses create 명령어를 사용합니다.

    gcloud compute addresses create ADDRESS_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION \
    --subnet=SUBNETWORK \
    --addresses=INTERNAL_IP_ADDRESS
    

    다음을 바꿉니다.

    • ADDRESS_NAME: 내부 IP 주소 이름
    • VPC_PROJECT_ID: VPC 네트워크를 호스팅하는 Google Cloud 프로젝트의 ID. 온라인 예측 엔드포인트와 Private Service Connect 엔드포인트가 같은 프로젝트에서 호스팅되면 이 매개변수의 VERTEXAI_PROJECT_ID를 사용합니다.
    • REGION: Private Service Connect 엔드포인트를 만들 Google Cloud 리전
    • SUBNETWORK: IP 주소가 포함된 VPC 서브넷 이름
    • INTERNAL_IP_ADDRESS: 예약할 내부 IP 주소. 이 매개변수는 선택사항입니다.

      • 이 매개변수를 지정하면 IP 주소가 서브넷의 기본 IP 주소 범위에 속해야 합니다. IP 주소는 RFC 1918 주소이거나 비 RFC 범위가 있는 서브넷일 수 있습니다.
      • 이 매개변수를 생략하면 내부 IP 주소가 자동으로 할당됩니다.
      • 자세한 내용은 새 고정 내부 IPv4 또는 IPv6 주소 예약을 참조하세요.
  2. IP 주소가 예약되어 있는지 확인하려면 gcloud compute addresses list 명령어를 사용합니다.

    gcloud compute addresses list --filter="name=(ADDRESS_NAME)" \
    --project=VPC_PROJECT_ID
    

    응답에서 IP 주소에 대해 RESERVED 상태가 표시되는지 확인합니다.

  3. Private Service Connect 엔드포인트를 만들고 온라인 예측 서비스 연결을 가리키도록 하려면 gcloud compute forwarding-rules create 명령어를 사용합니다.

    gcloud compute forwarding-rules create PSC_ENDPOINT_NAME \
        --address=ADDRESS_NAME \
        --project=VPC_PROJECT_ID \
        --region=REGION \
        --network=VPC_NETWORK_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    다음을 바꿉니다.

    • PSC_ENDPOINT_NAME: Private Service Connect 엔드포인트 이름
    • VPC_NETWORK_NAME: 엔드포인트를 만들 VPC 네트워크의 이름
    • SERVICE_ATTACHMENT_URI: 앞에서 기록한 서비스 연결
  4. 서비스 연결에서 엔드포인트를 수락하는지 확인하려면 gcloud compute forwarding-rules describe 명령어를 사용합니다.

    gcloud compute forwarding-rules describe PSC_ENDPOINT_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION
    

    응답의 pscConnectionStatus 필드에 ACCEPTED 상태가 표시되는지 확인합니다.

선택사항: 내부 IP 주소 가져오기

Private Service Connect 엔드포인트를 만들 때 INTERNAL_IP_ADDRESS 값을 지정하지 않았으면 gcloud compute forwarding-rules describe 명령어를 통해 자동으로 할당된 주소를 가져올 수 있습니다.

gcloud compute forwarding-rules describe PSC_ENDPOINT_NAME \
--project=VERTEXAI_PROJECT_ID \
--region=REGION \
| grep -i IPAddress

다음을 바꿉니다.

  • PSC_ENDPOINT_NAME: Private Service Connect 엔드포인트 이름
  • VERTEXAI_PROJECT_ID: 프로젝트 ID입니다.
  • REGION: 이 요청의 리전 이름

온라인 예측 수행

Private Service Connect를 사용하여 엔드포인트에서 온라인 예측 수행하기는 다음 고려사항을 제외하고 공개 엔드포인트에서 온라인 예측 수행하기와 비슷합니다.

  • 온라인 예측 엔드포인트를 만들 때 projectAllowlist에 지정한 프로젝트에서 요청을 보내야 합니다.
  • 전역 액세스가 사용 설정되지 않은 경우에는 같은 리전에서 요청을 보내야 합니다.
  • 내부 IP 주소의 DNS 레코드를 만들지 않은 경우에 REST를 사용하여 예측을 수행하려면 엔드포인트의 고정 IP 주소를 사용하여 연결해야 합니다. 예를 들어 predict 요청을 다음 엔드포인트에 보내야 합니다.

    https://INTERNAL_IP_ADDRESS/v1/projects/VERTEXAI_PROJECT_ID/locations/REGION/endpoints/VERTEXAI_ENDPOINT_ID:predict
    

    INTERNAL_IP_ADDRESS를 앞에서 예약한 내부 IP 주소로 바꿉니다.

선택사항: 내부 IP 주소의 DNS 레코드 만들기

내부 IP 주소를 지정하지 않고 Private Service Connect가 사용 설정된 엔드포인트에서 온라인 예측을 수행할 수 있도록 DNS 레코드를 만드는 것이 좋습니다.

자세한 내용은 DNS를 구성하는 다른 방법을 참조하세요.

  1. gcloud dns managed-zones create 명령어를 사용하여 비공개 DNS 영역을 만듭니다. 이 영역은 Private Service Connect 엔드포인트가 생성된 VPC 네트워크와 연결됩니다.

    DNS_NAME_SUFFIX="prediction.p.vertexai.goog."  # DNS names have "." at the end.
    gcloud dns managed-zones create ZONE_NAME \
    --project=VPC_PROJECT_ID \
    --dns-name=$DNS_NAME_SUFFIX \
    --networks=VPC_NETWORK_NAME \
    --visibility=private \
    --description="A DNS zone for Vertex AI endpoints using Private Service Connect."
    
    

    다음을 바꿉니다.

    • ZONE_NAME: DNS 영역의 이름
  2. 영역에 DNS 레코드를 만들려면 gcloud dns record-sets create 명령어를 사용합니다.

    DNS_NAME=VERTEXAI_ENDPOINT_ID.REGION-VERTEXAI_PROJECT_NUMBER.$DNS_NAME_SUFFIX
    gcloud dns record-sets create $DNS_NAME \
    --rrdatas=INTERNAL_IP_ADDRESS \
    --zone=ZONE_NAME \
    --type=A \
    --ttl=60 \
    --project=VPC_PROJECT_ID
    

    다음을 바꿉니다.

    • VERTEXAI_PROJECT_NUMBER: 프로젝트의 VERTEXAI_PROJECT_ID프로젝트 번호. Google Cloud 콘솔에서 이 프로젝트 번호를 찾을 수 있습니다. 자세한 내용은 프로젝트 식별을 참조하세요.
    • INTERNAL_IP_ADDRESS: Private Service Connect가 사용 설정된 엔드포인트의 내부 IP 주소

    이제 predict 요청을 다음으로 보낼 수 있습니다.

    https://VERTEXAI_ENDPOINT_ID.REGION-VERTEXAI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEXAI_PROJECT_ID/locations/REGION/endpoints/VERTEXAI_ENDPOINT_ID:predict
    

제한사항

Private Service Connect가 포함된 Vertex AI 엔드포인트에는 다음과 같은 제한사항이 적용됩니다.

  • 엔드포인트 내에서의 비공개 이그레스는 지원되지 않습니다. Private Service Connect 엔드포인트가 단방향이므로 컨테이너 내부에서 다른 비공개 Google Cloud 워크로드에 액세스할 수 없습니다.
  • 엔드포인트의 projectAllowlist 구성을 변경할 수 없습니다.
  • 액세스 로깅은 지원되지 않습니다.
  • 요청 및 응답 로깅은 지원되지 않습니다.
  • Vertex Explainable AI는 지원되지 않습니다.

미리보기 제한사항

미리보기에는 다음과 같은 추가 제한사항이 적용됩니다.

  • 모든 Private Service Connect 모델을 배포 취소하고 다시 배포하는 경우에는 서비스 연결 이름이 같더라도 Private Service Connect 엔드포인트를 다시 만들어야 합니다.
  • 모든 엔드포인트에는 동일한 projectAllowlist 구성이 있어야 합니다.

다음 단계