Para controlar as conexões das VMs que executam um job, especifique uma rede com o acesso desejado. Por exemplo, é possível especificar uma rede que permita que um job acesse 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 configurá-la para um job, pule a especificação 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
- Se você nunca usou o Batch antes, analise os Primeiros passos com o Batch e ative o Batch preenchendo os pré-requisitos para projetos e usuários.
-
Para receber as permissões necessárias para criar um job que será executado em uma rede específica, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Editor de job em lote (
roles/batch.jobsEditor
) no projeto -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço do job, que, por padrão, é a conta de serviço padrão do Compute Engine -
Para identificar a rede e a sub-rede:
Leitor da rede do Compute (
roles/compute.networkViewer
) no projeto
Para mais informações sobre como conceder papéis, consulte Gerenciar o acesso.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
-
Editor de job em lote (
-
Identifique a rede que você quer usar para o job. A rede especificada para um job precisa atender aos seguintes requisitos:
- A rede é uma rede de nuvem privada virtual (VPC) que está no mesmo projeto que o job ou é uma rede VPC compartilhada hospedada ou compartilhada com o projeto para o job.
- A rede inclui uma sub-rede (subnet) no local em que você quer executar o job.
-
A rede permite o acesso necessário para seu job. Por exemplo, se o
job exigir comunicação entre VMs, como um
job que use bibliotecas MPI
para se comunicar entre tarefas altamente associadas, verifique se a rede
tem uma regra de firewall que permite conexões entre as VMs do job.
Saiba como configurar regras de firewall da VPC para casos de uso comuns.
Criar um job executado em uma rede específica
Especifique a rede para um job ao criá-lo. Especificamente, você precisa especificar uma rede VPC e uma sub-rede localizada onde 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 executado em uma rede específica usando a CLI gcloud, selecione uma das seguintes opções:
- Usar sinalizações da gcloud para especificar a rede para um job
- Usar campos JSON para especificar a rede para um job
Use sinalizações da gcloud para especificar a rede para um job
Para criar um job e usar sinalizações da gcloud para especificar a rede, siga estas etapas:
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" } }
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 desse job.LOCATION
: o local desse 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 da rede especificada:- 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 em que a sub-rede e as VMs do job estão localizadas:- Se você incluir o campo
allowedLocations
para especificar o local permitido para as VMs do job, especifique a mesma região aqui. - Caso contrário, a região precisará ser a mesma do local selecionado para o job (
LOCATION
).
- Se você incluir o campo
SUBNET
: o nome de uma sub-rede que faz parte da rede VPC e está localizado na mesma região das VMs do job.
Use campos JSON para especificar a rede para um job
Para criar um job e usar campos no arquivo de configuração JSON para especificar a rede para o job, siga estas etapas:
Crie um arquivo JSON que especifique os detalhes de configuração do job. Para especificar a rede para o job, inclua os campos
network
esubnetwork
.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 da rede especificada:- 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 em que a sub-rede e as VMs do job estão localizadas:- Se você incluir o campo
allowedLocations
para especificar o local permitido para as VMs do job, especifique a mesma região aqui. - Caso contrário, a região precisará ser a mesma do local selecionado para o job (
LOCATION
).
- Se você incluir o campo
SUBNET
: o nome de uma sub-rede que faz parte da rede VPC e está localizado na mesma região das VMs do job.
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 desse job.LOCATION
: o local desse 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 para o job, inclua os campos network
e subnetwork
.
Por exemplo, para criar um job de script básico que seja 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 do job.JOB_NAME
: o nome desse job.HOST_PROJECT_ID
: o ID do projeto da rede especificada:- 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 em que a sub-rede e as VMs do job estão localizadas:- Se você incluir o campo
allowedLocations
para especificar o local permitido para as VMs do job, especifique a mesma região aqui. - Caso contrário, a região precisará ser a mesma do local selecionado para o job (
LOCATION
).
- Se você incluir o campo
SUBNET
: o nome de uma sub-rede que faz parte da rede VPC e está localizado na mesma região das VMs do job.
A seguir
- Se você tiver problemas para criar ou executar um job, consulte Solução de problemas.
- Saiba mais sobre redes.
- Saiba mais sobre como criar um job.
- Saiba como visualizar jobs e tarefas.