Vous pouvez contrôler les connexions des VM qui exécutent un job en spécifiant un réseau avec l'accès souhaité. Par exemple, vous pouvez spécifier un réseau qui permet à un job d'accéder aux ressources requises ou qui limite l'accès pour améliorer la sécurité. Vous pouvez également ignorer la spécification du réseau pour utiliser la configuration réseau par défaut si vous n'avez pas d'exigences réseau et que vous ne souhaitez pas configurer le réseau pour un job.
Pour en savoir plus sur les concepts de mise en réseau et sur le moment où configurer le réseau, consultez la présentation de la mise en réseau Batch.
Avant de commencer
- Si vous n'avez jamais utilisé Batch, consultez Premiers pas avec Batch et activez Batch en remplissant les prérequis pour les projets et les utilisateurs.
-
Pour obtenir les autorisations nécessaires pour créer un job qui s'exécute sur un réseau spécifique, demandez à votre administrateur de vous accorder les rôles IAM suivants :
- Éditeur de tâches Batch (
roles/batch.jobsEditor) sur le projet - Utilisateur de compte de service (
roles/iam.serviceAccountUser) sur le compte de service du job, qui est par défaut le compte de service Compute Engine par défaut -
Pour identifier le réseau et le sous-réseau :
lecteur de réseau Compute (
roles/compute.networkViewer) sur le projet
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
- Éditeur de tâches Batch (
-
Identifiez le réseau que vous souhaitez utiliser pour le job. Le réseau que vous spécifiez pour un job doit répondre aux exigences suivantes :
- Le réseau est un réseau de cloud privé virtuel (VPC) qui se trouve dans le même projet que le job ou qui est un réseau VPC partagé hébergé par le projet du job ou partagé avec lui.
- Le réseau inclut un sous-réseau dans l'emplacement où vous souhaitez exécuter le job.
-
Le réseau autorise l'accès requis pour votre job. Par exemple, si votre
job nécessite une communication entre les VM (par exemple, un
job qui utilise des bibliothèques MPI
pour communiquer entre des tâches étroitement couplées), assurez-vous que le réseau
dispose d'une règle de pare-feu autorisant les connexions entre les VM du job.
Découvrez comment configurer des règles de pare-feu VPC pour les cas d'utilisation courants.
-
Si vous souhaitez qu'un job s'exécute sur un sous-réseau d'un réseau VPC partagé qui est
hébergé par un autre projet, l'agent de service
Batch
de votre projet doit être autorisé à utiliser ce sous-réseau.
Pour vous assurer que l'agent de service Batch de votre projet dispose des autorisations nécessaires pour créer un job qui s'exécute sur un sous-réseau d'un réseau VPC partagé, demandez à votre administrateur d'accorder le rôle IAM d'utilisateur de réseau Compute (
roles/compute.networkUser) à l'agent de service Batch de votre projet sur le sous-réseau VPC partagé.Pour en savoir plus, consultez la documentation sur la configuration d'un VPC partagé pour les comptes de service.
Créer un job qui s'exécute sur un réseau spécifique
Spécifiez le réseau d'un job lorsque vous le créez. Plus précisément, vous devez spécifier un réseau VPC et un sous-réseau situé à l'endroit où vous souhaitez exécuter ce job.
Si vous souhaitez utiliser un modèle d'instance de VM lors de la création de ce job, vous devez spécifier le réseau dans le modèle d'instance de VM. Sinon, procédez comme suit pour spécifier le réseau d'un job à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Pour créer un job qui s'exécute sur un réseau spécifique à l'aide de gcloud CLI, sélectionnez l'une des options suivantes :
- Utiliser des options gcloud pour spécifier le réseau d'un job
- Utiliser des champs JSON pour spécifier le réseau d'un job
Utiliser des options gcloud pour spécifier le réseau d'un job
Pour créer un job et utiliser des options gcloud afin de spécifier le réseau du job, procédez comme suit :
Créez un fichier JSON qui spécifie les détails de configuration de votre job.
Par exemple, pour créer un job de script de base, créez un fichier JSON contenant les éléments suivants.
{ "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" } }Créez le job à l'aide de la
gcloud batch jobs submitcommande. Pour spécifier le réseau du job, incluez les options--networket--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/SUBNETRemplacez les éléments suivants :
JOB_NAME: nom de ce job.LOCATION: the location emplacement de ce job.JSON_CONFIGURATION_FILE: chemin d'accès au fichier JSON contenant les détails de configuration du job.HOST_PROJECT_ID: ID de projet du projet pour le réseau que vous spécifiez :- Si vous utilisez un réseau VPC partagé, spécifiez le projet hôte.
- Sinon, spécifiez le projet actuel.
NETWORK: nom d'un réseau VPC dans le projet actuel ou d'un réseau VPC partagé hébergé par le projet actuel ou partagé avec lui.REGION: the region where the subnet for the job and the job's Compute Engine resources are located. Pour plus d'informations, consultez la section Emplacements.SUBNET: nom d'un sous-réseau faisant partie du réseau VPC et situé dans la même région que les ressources Compute Engine du job.
Utiliser des champs JSON pour spécifier le réseau d'un job
Pour créer un job et utiliser des champs dans le fichier de configuration JSON afin de spécifier le réseau du job, procédez comme suit :
Créez un fichier JSON qui spécifie les détails de configuration de votre job. Pour spécifier le réseau du job, incluez les
networketsubnetworkchamps.Par exemple, pour créer un job de script de base qui s'exécute sur un réseau spécifique, créez un fichier JSON contenant les éléments suivants.
{ "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" } }Remplacez les éléments suivants :
HOST_PROJECT_ID: ID de projet du projet pour le réseau que vous spécifiez :- Si vous utilisez un réseau VPC partagé, spécifiez le projet hôte.
- Sinon, spécifiez le projet actuel.
NETWORK: nom d'un réseau VPC dans le projet actuel ou d'un réseau VPC partagé hébergé par le projet actuel ou partagé avec lui.REGION: the region where the subnet for the job and the job's Compute Engine resources are located. Pour plus d'informations, consultez la section Emplacements.SUBNET: nom d'un sous-réseau faisant partie du réseau VPC et situé dans la même région que les ressources Compute Engine du job.
Créez le job à l'aide de la
gcloud batch jobs submitcommande.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILERemplacez les éléments suivants :
JOB_NAME: nom de ce job.LOCATION: the location emplacement de ce job.JSON_CONFIGURATION_FILE: chemin d'accès au fichier JSON contenant les détails de configuration du job.
Java
Node.js
Python
API
Pour créer un job à l'aide de l'API Batch, utilisez la
jobs.create méthode
et spécifiez les détails de configuration de votre job.
Pour spécifier le réseau du job, incluez les
network et subnetwork champs.
Par exemple, pour créer un job de script de base qui s'exécute sur un réseau spécifique, envoyez la requête POST suivante :
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"
}
}
Remplacez les éléments suivants :
PROJECT_ID: l'ID du projet de votre projet.LOCATION: l'emplacement de ce job.JOB_NAME: nom de ce job.HOST_PROJECT_ID: ID de projet du projet pour le réseau que vous spécifiez :- Si vous utilisez un réseau VPC partagé, spécifiez le projet hôte.
- Sinon, spécifiez le projet actuel (
PROJECT_ID).
NETWORK: nom d'un réseau VPC dans le projet actuel ou d'un réseau VPC partagé hébergé par le projet actuel ou partagé avec lui.REGION: the region where the subnet for the job and the job's Compute Engine resources are located. Pour plus d'informations, consultez la section Emplacements.SUBNET: nom d'un sous-réseau faisant partie du réseau VPC et situé dans la même région que les ressources Compute Engine du job.
Étape suivante
- Si vous rencontrez des problèmes lors de la création ou de l'exécution d'un job, consultez la section Dépannage.
- En savoir plus sur la mise en réseau.
- En savoir plus sur la création d'un job.
- Découvrez comment afficher les jobs et les tâches.