작업 네트워크 지정

이 문서에서는 작업을 실행하는 VM의 네트워크를 지정하는 방법을 설명합니다.

원하는 액세스 권한이 있는 네트워크를 지정하여 작업을 실행하는 VM의 연결을 제어할 수 있습니다. 예를 들어 작업에서 필요한 리소스에 액세스하도록 허용하거나 보안을 개선하기 위해 액세스를 제한하는 네트워크를 지정할 수 있습니다. 또는 네트워킹 요구사항이 없고 작업에 네트워킹을 구성하지 않으려면 대신 기본 네트워킹 구성을 사용하도록 네트워크 지정을 건너뛰세요.

네트워킹 개념과 네트워킹 구성 시기에 대한 자세한 내용은 Batch 네트워킹 개요를 참조하세요.

시작하기 전에

특정 네트워크에서 실행되는 작업 만들기

작업을 만들 때 작업의 네트워크를 지정합니다. 특히 이 작업을 실행할 위치에 있는 VPC 네트워크와 서브넷을 지정해야 합니다.

이 작업을 만드는 동안 VM 인스턴스 템플릿을 사용하려면 VM 인스턴스 템플릿에서 네트워크를 지정해야 합니다. 그렇지 않은 경우 다음 단계에 따라 gcloud CLI 또는 Batch API를 사용하여 작업 네트워크를 지정합니다.

gcloud

gcloud CLI를 사용하여 특정 네트워크에서 실행되는 작업을 만들려면 다음 옵션 중 하나를 선택합니다.

gcloud 플래그를 사용하여 작업 네트워크 지정

작업을 만들고 gcloud 플래그를 사용하여 작업의 네트워크를 지정하려면 다음 단계를 완료하세요.

  1. 작업의 구성 세부정보를 지정하는 JSON 파일을 만듭니다.

    예를 들어 기본 스크립트 작업을 만들려면 다음 콘텐츠로 JSON 파일을 만듭니다.

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
                }
              }
            ]
          },
          "taskCount": 3
        }
      ],
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    
  2. gcloud batch jobs submit 명령어를 사용하여 작업을 만듭니다. 작업의 네트워크를 지정하려면 --network 플래그와 --subnetwork 플래그를 포함합니다.

    gcloud batch jobs submit JOB_NAME \
        --location LOCATION \
        --config JSON_CONFIGURATION_FILE \
        --network projects/HOST_PROJECT_ID/global/networks/NETWORK \
        --subnetwork projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    다음을 바꿉니다.

    • JOB_NAME: 이 작업의 이름
    • LOCATION: 이 작업의 위치입니다.
    • JSON_CONFIGURATION_FILE: 작업의 구성 세부정보가 포함된 JSON 파일의 경로입니다.
    • HOST_PROJECT_ID: 지정한 네트워크의 프로젝트의 프로젝트 ID입니다.
      • 공유 VPC 네트워크를 사용하는 경우 호스트 프로젝트를 지정합니다.
      • 그렇지 않으면 현재 프로젝트를 지정합니다.
    • NETWORK: 현재 프로젝트에 있는 VPC 네트워크 또는 현재 프로젝트에서 호스팅되거나 공유되는 공유 VPC 네트워크의 이름입니다.
    • REGION: 작업의 서브넷 및 VM이 있는 리전입니다.
      • 작업의 VM에 허용되는 위치를 지정하기 위해 allowedLocations 필드를 포함하는 경우 여기에서 동일한 리전을 지정해야 합니다.
      • 그렇지 않으면 리전은 작업에 선택한 위치(LOCATION)와 동일해야 합니다.
    • SUBNET: VPC 네트워크에 속하며 작업의 VM과 동일한 리전에 있는 서브넷의 이름입니다.

JSON 필드를 사용하여 작업 네트워크 지정

작업을 만들고 JSON 구성 파일의 필드를 사용하여 작업의 네트워크를 지정하려면 다음 단계를 완료하세요.

  1. 작업의 구성 세부정보를 지정하는 JSON 파일을 만듭니다. 작업 네트워크를 지정하려면 networksubnetwork 필드를 포함합니다.

    예를 들어 특정 네트워크에서 실행되는 기본 스크립트 작업을 만들려면 다음 콘텐츠가 포함된 JSON 파일을 만듭니다.

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
                }
              }
            ]
          },
          "taskCount": 3
        }
      ],
      "allocationPolicy": {
        "network": {
          "networkInterfaces": [
            {
              "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK",
              "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET"
            }
          ]
        }
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    

    다음을 바꿉니다.

    • HOST_PROJECT_ID: 지정한 네트워크의 프로젝트의 프로젝트 ID입니다.
      • 공유 VPC 네트워크를 사용하는 경우 호스트 프로젝트를 지정합니다.
      • 그렇지 않으면 현재 프로젝트를 지정합니다.
    • NETWORK: 현재 프로젝트에 있는 VPC 네트워크 또는 현재 프로젝트에서 호스팅되거나 공유되는 공유 VPC 네트워크의 이름입니다.
    • REGION: 작업의 서브넷 및 VM이 있는 리전입니다.
      • 작업의 VM에 허용되는 위치를 지정하기 위해 allowedLocations 필드를 포함하는 경우 여기에서 동일한 리전을 지정해야 합니다.
      • 그렇지 않으면 리전은 작업에 선택한 위치(LOCATION)와 동일해야 합니다.
    • SUBNET: VPC 네트워크에 속하며 작업의 VM과 동일한 리전에 있는 서브넷의 이름입니다.
  2. gcloud batch jobs submit 명령어를 사용하여 작업을 만듭니다.

    gcloud batch jobs submit JOB_NAME \
        --location LOCATION \
        --config JSON_CONFIGURATION_FILE
    

    다음을 바꿉니다.

    • JOB_NAME: 이 작업의 이름
    • LOCATION: 이 작업의 위치입니다.
    • JSON_CONFIGURATION_FILE: 작업의 구성 세부정보가 포함된 JSON 파일의 경로입니다.

API

Batch API를 사용하여 작업을 만들려면 jobs.create 메서드를 사용하여 작업의 구성 세부정보를 지정합니다. 작업 네트워크를 지정하려면 networksubnetwork 필드를 포함합니다.

예를 들어 특정 네트워크에서 실행되는 기본 스크립트 작업을 만들려면 다음 POST 요청을 수행합니다.

POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "allocationPolicy": {
    "network": {
      "networkInterfaces": [
        {
          "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK",
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET"
        }
      ]
    }
  },
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 프로젝트 ID입니다.
  • LOCATION: 이 작업의 위치
  • JOB_NAME: 이 작업의 이름입니다.
  • HOST_PROJECT_ID: 지정한 네트워크의 프로젝트의 프로젝트 ID입니다.
    • 공유 VPC 네트워크를 사용하는 경우 호스트 프로젝트를 지정합니다.
    • 그렇지 않으면 현재 프로젝트(PROJECT_ID)를 지정합니다.
  • NETWORK: 현재 프로젝트에 있는 VPC 네트워크 또는 현재 프로젝트에서 호스팅되거나 공유되는 공유 VPC 네트워크의 이름입니다.
  • REGION: 작업의 서브넷 및 VM이 있는 리전입니다.
    • 작업의 VM에 허용되는 위치를 지정하기 위해 allowedLocations 필드를 포함하는 경우 여기에서 동일한 리전을 지정해야 합니다.
    • 그렇지 않으면 리전은 작업에 선택한 위치(LOCATION)와 동일해야 합니다.
  • SUBNET: VPC 네트워크에 속하며 작업의 VM과 동일한 리전에 있는 서브넷의 이름입니다.

다음 단계