네트워크 및 서브네트워크 지정

이 페이지에서는 Cloud Dataflow 작업을 실행할 때 네트워크 및 서브네트워크를 지정하는 방법을 설명합니다.

VPC 및 공유 VPC

경우에 따라 간단히 네트워크라고도 하는 VPC 네트워크프로젝트의 리소스에 연결을 제공합니다. VPC 네트워크에 대한 자세한 내용은 VPC 네트워크 개요를 참조하세요.

공유 VPC 네트워크호스트 프로젝트라고도 하는 조직 내 별도의 프로젝트에 있는 네트워크입니다. 공유 VPC 관리자가 사용자를 서비스 프로젝트 관리자로 정의한 경우 사용자에게는 최소한 호스트 프로젝트의 네트워크에 있는 일부 서브네트워크를 사용할 수 있는 권한이 있습니다. 공유 VPC에 대한 배경 정보는 공유 VPC 개요를 참조하세요.

VPC 서비스 제어

Cloud Dataflow VPC 서비스 제어는 파이프라인의 리소스와 서비스에 추가적인 보안을 제공합니다. VPC 서비스 제어에 대한 자세한 내용은 VPC 서비스 제어 개요를 참조하세요.

Cloud Dataflow를 VPC 서비스 제어와 함께 사용할 때의 제한사항을 알아보려면 지원되는 제품 및 제한사항을 참조하세요.

네트워크 및 서브네트워크 지정

Cloud Dataflow 작업을 만드는 경우 네트워크 또는 하위 네트워크 중 하나를 지정할 수 있습니다. 다음 섹션에서는 각 매개변수를 사용해야 하는 경우를 설명합니다.

서브네트워크와 네트워크 매개변수를 모두 생략하면 GCP는 개발자가 default라는 자동 모드 VPC 네트워크를 사용한다고 가정합니다. 서브네트워크 및 네트워크 매개변수를 모두 생략한 경우 프로젝트에 default라는 이름의 네트워크가 없으면 오류가 발생합니다.

참고: 사용해야 할 매개변수를 잘 모르는 경우 서브네트워크 매개변수만 지정하세요. 네트워크 매개변수가 암묵적으로 지정됩니다.

네트워크 매개변수

네트워크 매개변수를 사용하여 프로젝트에서 자동 모드 네트워크를 지정할 수 있습니다.

다음 두 조건에 모두 해당하는 경우에 한해 네트워크 매개변수를 사용하여 공유 VPC 네트워크를 선택할 수도 있습니다.

  • 선택한 VPC 공유 네트워크가 자동 모드 네트워크입니다.
  • 전체 공유 VPC 호스트 프로젝트에 대한 프로젝트 수준 권한이 있는 서비스 프로젝트 관리자입니다. 즉, 공유 VPC 관리자로부터 전체 호스트 프로젝트에 대한 네트워크 사용자 역할을 부여받았으므로 모든 네트워크 및 서브네트워크를 사용할 수 있습니다.

다른 모든 경우에는 서브네트워크를 지정해야 합니다.

서브네트워크 매개변수

네트워크에서 특정 서브네트워크를 선택해야 하는 경우 subnetwork 매개변수를 지정하세요. Cloud Dataflow 작업을 실행할 영역과 동일한 리전의 서브네트워크를 선택해야 합니다. 예를 들어 다음과 같은 상황에서는 서브네트워크 매개변수를 지정해야 합니다.

  • 필요한 서브네트워크가 커스텀 모드 네트워크에 있습니다.
  • 공유 VPC 호스트 프로젝트의 특정 서브네트워크에 대한 서브넷 수준 권한이 있는 서비스 프로젝트 관리자입니다.

전체 URL 또는 약식 경로를 사용하여 서브네트워크를 지정할 수 있습니다. 서브네트워크가 공유 VPC 네트워크에 있는 경우 전체 URL을 사용해야 합니다.

  • 전체 URL:
    https://www.googleapis.com/compute/v1/projects/<HOST_PROJECT>/regions/<REGION>/subnetworks/<SUBNETWORK>
  • 약식:
    regions/<REGION>/subnetworks/<SUBNETWORK>

subnetwork를 지정하면 Cloud Dataflow가 자동으로 network를 선택합니다. 따라서 subnetwork를 지정할 때 network 매개변수를 생략할 수 있습니다.

공개 IP 매개변수

공개 IP 매개변수는 Cloud Dataflow 작업자에 공개 IP 주소를 할당할지 여부를 Cloud Dataflow 서비스에게 알려줍니다. 기본적으로 Cloud Dataflow 서비스는 작업자에게 공개 IP 주소와 비공개 IP 주소 모두를 할당합니다. 공개 IP 주소를 사용 중지하면 Cloud Dataflow 파이프라인은 다음 위치에 있는 리소스에만 액세스할 수 있습니다.

공개 IP를 사용 중지해도 관리 및 모니터링 작업을 계속 수행할 수 있습니다. 위에 나열된 옵션을 통해 SSH를 사용하여 작업자에 액세스할 수 있습니다. 그러나 파이프라인은 인터넷 및 기타 GCP 네트워크에 액세스할 수 없으며 인터넷 호스트는 Cloud Dataflow 작업자에 액세스할 수 없습니다.

공개 IP를 사용 중지하면 데이터 처리 인프라의 보안을 강화할 수 있습니다. 또한 Cloud Dataflow 작업자에 공개 IP 주소를 사용하지 않으면 GCP 프로젝트 할당량을 소비하는 공개 IP 주소의 수를 줄일 수 있습니다.

자바

공개 IP를 사용 중지하려면 다음 안내를 따르세요.

  1. 네트워크 또는 서브네트워크에서 비공개 Google 액세스를 사용 설정합니다.
  2. Cloud Dataflow 작업의 매개변수에서 --usePublicIps=false--network=[NETWORK](또는 --subnetwork=[SUBNETWORK])를 지정하세요.

PYTHON

공개 IP를 사용 중지하려면 다음 안내를 따르세요.

  1. Apache Beam 파이프라인 종속 항목 안내를 따라 모든 Python 패키지 종속 항목을 스테이징합니다.
  2. 네트워크 또는 서브네트워크에서 비공개 Google 액세스를 사용 설정합니다.
  3. Cloud Dataflow 작업의 매개변수에서 --no_use_public_ips--network=[NETWORK](또는 --subnetwork=[SUBNETWORK])를 지정하세요.

지정된 네트워크 및 서브네트워크로 파이프라인 실행

다음 예시는 지정된 networksubnetwork 매개변수를 사용하여 Cloud Dataflow 서비스에서 파이프라인을 실행하는 방법을 보여줍니다.

공유 VPC 네트워크에서 특정 서브네트워크를 사용할 수 있는 권한만 가진 서비스 프로젝트 관리자인 경우 사용 권한이 있는 서브네트워크의 subnetwork매개변수를 지정해야 합니다.

명령줄 사용

다음 예에서는 하위 네트워크를 지정하여 명령줄에서 파이프라인을 실행하는 방법을 보여줍니다. 서브네트워크를 지정하면 네트워크가 암시적으로 지정됩니다.

자바

mvn compile exec:java \
  -Dexec.mainClass=com.example.WordCount \
  -Dexec.args="--project=my-cloud-project \
    --stagingLocation=gs://my-wordcount-storage-bucket/staging/ \
    --output=gs://my-wordcount-storage-bucket/output \
    --runner=DataflowRunner \
    --subnetwork=https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork"

PYTHON

python -m apache_beam.examples.wordcount \
  --project my-cloud-project \
  --runner DataflowRunner \
  --staging_location gs://my-wordcount-storage-bucket/staging \
  --temp_location gs://my-wordcount-storage-bucket/temp \
  --output gs://my-wordcount-storage-bucket/output \
  --subnetwork https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork"

REST API 사용

다음 예에서는 템플릿을 실행하고 하위 네트워크를 지정하는 방법을 보여줍니다. 서브네트워크를 지정하면 네트워크가 암시적으로 지정됩니다.

REST API를 사용하여 Cloud Dataflow 템플릿을 실행하는 경우 environment 객체에 network 또는 subnetwork를 추가합니다. 예를 들면 다음과 같습니다.

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "my_job",
    "parameters": {
       "inputFile" : "gs://dataflow-samples/shakespeare/kinglear.txt",
       "output": "gs://my-wordcount-storage-bucket/output"
    },
    "environment": {
       "tempLocation": "gs://my-wordcount-storage-bucket/temp",
       "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork",
       "zone": "us-central1-f"
    }
}