Especifique a rede de um job

Neste documento, explicamos como especificar a rede para as VMs que executam um job.

É possível controlar as conexões das VMs que executam um job especificando uma rede com o acesso desejado. Por exemplo, é possível especificar uma rede que permita que um job acesse os recursos necessários ou limite o acesso para melhorar a segurança. Como alternativa, se você não tiver requisitos de rede e não quiser configurar a rede para um job, pule a especificação da rede para usar a configuração de rede padrão.

Para mais informações sobre conceitos de rede e quando configurá-la, consulte Visão geral da rede em lote.

Antes de começar

Criar um job que é executado em uma rede específica

Especifique a rede para um job ao criá-lo. Especificamente, é preciso especificar uma rede VPC e uma sub-rede localizada onde você quer executar esse job.

Se você quiser usar um modelo de instância de VM ao criar esse job, especifique a rede no modelo de instância de VM. Caso contrário, use as etapas a seguir para especificar a rede de um job usando a CLI gcloud ou a API Batch.

gcloud

Para criar um job que é executado em uma rede específica usando a CLI gcloud, selecione uma das seguintes opções:

Use sinalizações da gcloud para especificar a rede de um job

Para criar um job e usar as sinalizações da gcloud para especificar a rede dele, siga as etapas a seguir:

  1. Crie um arquivo JSON que especifique os detalhes de configuração do job.

    Por exemplo, para criar um job de script básico, crie um arquivo JSON com o conteúdo a seguir.

    {
      "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. Crie o job usando o comando gcloud batch jobs submit. Para especificar a rede do job, inclua as sinalizações --network e --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
    

    Substitua:

    • JOB_NAME: o nome deste job.
    • LOCATION: o local deste job.
    • JSON_CONFIGURATION_FILE: o caminho para o arquivo JSON com os detalhes de configuração do job.
    • HOST_PROJECT_ID: o ID do projeto para a rede que você especificar:
      • Se você estiver usando uma rede VPC compartilhada, especifique o projeto host.
      • Caso contrário, especifique o projeto atual.
    • NETWORK: o nome de uma rede VPC no projeto atual ou de uma rede VPC compartilhada hospedada ou compartilhada com o projeto atual.
    • REGION: a região onde a sub-rede e as VMs do job estão localizadas:
      • Se você incluir o campo allowedLocations para especificar o local permitido das VMs para o job, especifique a mesma região aqui.
      • Caso contrário, a região precisa ser o mesmo local selecionado para o job (LOCATION).
    • SUBNET: o nome de uma sub-rede que faz parte da rede VPC e está localizada na mesma região das VMs do job.

Use campos JSON para especificar a rede de um job

Para criar um job e usar campos no arquivo de configuração JSON para especificar a rede para o job, conclua as seguintes etapas:

  1. Crie um arquivo JSON que especifique os detalhes de configuração do job. Para especificar a rede do job, inclua os campos network e subnetwork.

    Por exemplo, para criar um job de script básico executado em uma rede específica, crie um arquivo JSON com o conteúdo a seguir.

    {
      "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"
      }
    }
    

    Substitua:

    • HOST_PROJECT_ID: o ID do projeto para a rede que você especificar:
      • Se você estiver usando uma rede VPC compartilhada, especifique o projeto host.
      • Caso contrário, especifique o projeto atual.
    • NETWORK: o nome de uma rede VPC no projeto atual ou de uma rede VPC compartilhada hospedada ou compartilhada com o projeto atual.
    • REGION: a região onde a sub-rede e as VMs do job estão localizadas:
      • Se você incluir o campo allowedLocations para especificar o local permitido das VMs para o job, especifique a mesma região aqui.
      • Caso contrário, a região precisa ser o mesmo local selecionado para o job (LOCATION).
    • SUBNET: o nome de uma sub-rede que faz parte da rede VPC e está localizada na mesma região das VMs do job.
  2. Crie o job usando o comando gcloud batch jobs submit.

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

    Substitua:

    • JOB_NAME: o nome deste job.
    • LOCATION: o local deste job.
    • JSON_CONFIGURATION_FILE: o caminho para o arquivo JSON com os detalhes de configuração do job.

API

Para criar um job usando a API Batch, use o método jobs.create e especifique os detalhes de configuração do job. Para especificar a rede do job, inclua os campos network e subnetwork.

Por exemplo, para criar um job de script básico executado em uma rede específica, faça a seguinte solicitação 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"
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: o local deste job.
  • JOB_NAME: o nome deste job.
  • HOST_PROJECT_ID: o ID do projeto para a rede que você especificar:
    • Se você estiver usando uma rede VPC compartilhada, especifique o projeto host.
    • Caso contrário, especifique o projeto atual (PROJECT_ID).
  • NETWORK: o nome de uma rede VPC no projeto atual ou de uma rede VPC compartilhada hospedada ou compartilhada com o projeto atual.
  • REGION: a região onde a sub-rede e as VMs do job estão localizadas:
    • Se você incluir o campo allowedLocations para especificar o local permitido das VMs para o job, especifique a mesma região aqui.
    • Caso contrário, a região precisa ser o mesmo local selecionado para o job (LOCATION).
  • SUBNET: o nome de uma sub-rede que faz parte da rede VPC e está localizada na mesma região das VMs do job.

A seguir