É 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 um job para acessar os recursos necessários ou limitar o acesso para melhorar a segurança. Como alternativa, se você não tiver requisitos de rede e você não quiser configurar a rede para um job, pule a especificação da rede para use a configuração de rede padrão.
Para mais informações sobre conceitos de rede e quando configurar a rede, consulte Visão geral da rede de lote.
Antes de começar
- Se você nunca usou o Batch, consulte Começar a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e usuários.
-
Para receber as permissões necessárias para criar um job que é executado em uma rede específica, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Editor de jobs 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 é 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 a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
-
Editor de jobs em lote (
-
Identifique a rede que você quer
usar para o trabalho. A rede especificada para um job precisa atender aos seguintes
requisitos:
- A rede é uma rede de nuvem privada virtual (VPC, na sigla em inglês) que está no mesmo projeto do job ou é uma rede VPC compartilhada hospedada ou compartilhada com o projeto do job.
- A rede inclui uma sub-rede no local onde você quer executar o job.
-
A rede permite o acesso necessário para o job. Por exemplo, se o
job exigir comunicação entre VMs, como um
job que usa bibliotecas MPI
para se comunicar entre tarefas intimamente acopladas, 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.
-
Se você quiser que um job seja executado em uma sub-rede de uma rede VPC compartilhada que esteja
hospedado por outro projeto, a infraestrutura
Agente de serviço em lote
para usá-la.
Para garantir que o agente de serviço do Batch do seu projeto tenha as permissões necessárias para criar um job executado em uma sub-rede de uma rede VPC compartilhada, peça ao administrador para conceder ao agente de serviço do Batch do seu projeto o papel de IAM Usuário da rede do Compute (
roles/compute.networkUser
) na sub-rede da VPC compartilhada.Para mais informações, consulte a documentação Como configurar a VPC compartilhada para contas de serviço.
Criar um job que seja executado em uma rede específica
Especifique a rede de um job ao criá-lo. Especificamente, é preciso especificar uma rede VPC que está localizada onde você quer executar o 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 para um job, usando a CLI gcloud ou a API Batch.
gcloud
Para criar um job executado em uma rede específica usando o comando CLI gcloud, selecione uma das seguintes opções:
- Usar flags do gcloud para especificar a rede de um job
- Use campos JSON para especificar a rede de um job
Usar flags do gcloud para especificar a rede de um job
Para criar um job e usar flags do gcloud para especificar a rede dele, 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údos 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 trabalho, inclua o 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 do job.LOCATION
: o local do job.JSON_CONFIGURATION_FILE
: o caminho do arquivo JSON com os detalhes de configuração do job.HOST_PROJECT_ID
: o ID do projeto do projeto para a 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 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 precisa 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á localizada na mesma região das VMs do job.
Use campos JSON para especificar a rede para um job
Criar um job e usar campos no arquivo de configuração JSON para especificar na 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 trabalho, inclua o 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 seguinte conteúdo.
{ "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 do projeto para a rede especificada:- Se você estiver usando uma rede VPC compartilhada, especifique o host projeto.
- Caso contrário, especifique o projeto atual.
NETWORK
: o nome de um Rede VPC no projeto atual ou uma rede VPC compartilhada hospedado ou compartilhado 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 deve ser a mesma que a
location selecionado para a vaga
(
LOCATION
).
- Se você incluir o
campo
SUBNET
: o nome de um sub-rede que faz parte rede VPC e está localizado na mesma região que a para o 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 do job.LOCATION
: o local do job.JSON_CONFIGURATION_FILE
: o caminho do arquivo JSON com os detalhes de configuração do job.
Java
Node.js
Python
API
Para criar um job usando a API Batch, use o
Método jobs.create
e especifique os detalhes de configuração dele.
Para especificar a rede para o trabalho, inclua o
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 do seu projeto.LOCATION
: o local do job.JOB_NAME
: o nome do job.HOST_PROJECT_ID
: o ID do projeto do projeto para a 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 uma rede VPC compartilhada hospedada ou compartilhada com o projeto atual.REGION
: o região em que a sub-rede e as VMs para o job estão localizados:- Se você incluir o parâmetro
Campo
allowedLocations
para especificar o local permitido para as VMs do job, especifique a mesma região aqui. - Caso contrário, a região deve ser a mesma que a
location selecionado para a vaga
(
LOCATION
).
- Se você incluir o parâmetro
Campo
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
- 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 acessar jobs e tarefas.