Spécifier le réseau pour une tâche

Ce document explique comment spécifier le réseau des VM exécutant une tâche.

Vous pouvez contrôler les connexions des VM qui exécutent une tâche en spécifiant un réseau disposant de l'accès souhaité. Par exemple, vous pouvez spécifier un réseau qui autorise une tâche à accéder aux ressources requises ou qui limite l'accès pour améliorer la sécurité. Si vous n'avez pas d'exigences de mise en réseau et que vous ne souhaitez pas configurer la mise en réseau pour une tâche, ignorez la spécification du réseau afin d'utiliser la configuration réseau par défaut à la place.

Pour en savoir plus sur les concepts de mise en réseau et sur leur configuration, consultez la page Présentation de la mise en réseau par lots.

Avant de commencer

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 cette tâche.

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 ce modèle. Sinon, suivez les étapes ci-dessous pour spécifier le réseau d'un job à l'aide de gcloud CLI ou de l'API Batch.

gcloud

Pour créer une tâche qui s'exécute sur un réseau spécifique à l'aide de gcloud CLI, sélectionnez l'une des options suivantes:

Utiliser des indicateurs gcloud pour spécifier le réseau d'un job

Pour créer une tâche et utiliser des indicateurs gcloud afin de spécifier le réseau de la tâche, procédez comme suit:

  1. Créez un fichier JSON qui spécifie les détails de configuration de votre job.

    Par exemple, pour créer une tâche de script de base, créez un fichier JSON avec le contenu suivant.

    {
      "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. Créez la tâche à l'aide de la commande gcloud batch jobs submit. Pour spécifier le réseau auquel la tâche doit s'appliquer, incluez les options --network et --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
    

    Remplacez les éléments suivants :

    • JOB_NAME: nom de cette tâche.
    • LOCATION: lieu de cette tâche.
    • JSON_CONFIGURATION_FILE: chemin d'accès au fichier JSON contenant les détails de configuration de la tâche.
    • 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 en cours.
    • NETWORK: nom d'un réseau VPC dans le projet en cours ou d'un réseau VPC partagé hébergé par le projet en cours ou partagé avec lui.
    • REGION: région dans laquelle se trouvent le sous-réseau et les VM pour la tâche :
      • Si vous incluez le champ allowedLocations afin de spécifier l'emplacement autorisé des VM pour la tâche, vous devez spécifier la même région ici.
      • Sinon, la région doit être identique à l'emplacement que vous avez sélectionné pour la tâche (LOCATION).
    • SUBNET: nom d'un sous-réseau faisant partie du réseau VPC et situé dans la même région que les VM de la tâche.

Utiliser des champs JSON pour spécifier le réseau d'une tâche

Pour créer une tâche et utiliser des champs du fichier de configuration JSON afin de spécifier le réseau associé à cette tâche, procédez comme suit:

  1. Créez un fichier JSON qui spécifie les détails de configuration de votre job. Pour spécifier le réseau de la tâche, incluez les champs network et subnetwork.

    Par exemple, pour créer une tâche de script de base qui s'exécute sur un réseau spécifique, créez un fichier JSON avec le contenu suivant.

    {
      "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 en cours.
    • NETWORK: nom d'un réseau VPC dans le projet en cours ou d'un réseau VPC partagé hébergé par le projet en cours ou partagé avec lui.
    • REGION: région dans laquelle se trouvent le sous-réseau et les VM pour la tâche :
      • Si vous incluez le champ allowedLocations afin de spécifier l'emplacement autorisé des VM pour la tâche, vous devez spécifier la même région ici.
      • Sinon, la région doit être identique à l'emplacement que vous avez sélectionné pour la tâche (LOCATION).
    • SUBNET: nom d'un sous-réseau faisant partie du réseau VPC et situé dans la même région que les VM de la tâche.
  2. Créez la tâche à l'aide de la commande gcloud batch jobs submit.

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

    Remplacez les éléments suivants :

    • JOB_NAME: nom de cette tâche.
    • LOCATION: lieu de cette tâche.
    • JSON_CONFIGURATION_FILE: chemin d'accès au fichier JSON contenant les détails de configuration de la tâche.

API

Pour créer une tâche à l'aide de l'API Batch, utilisez la méthode jobs.create et spécifiez les détails de configuration de votre tâche. Pour spécifier le réseau de la tâche, incluez les champs network et subnetwork.

Par exemple, pour créer une tâche de script de base qui s'exécute sur un réseau spécifique, exécutez 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: ID de projet de votre projet.
  • LOCATION: emplacement de cette tâche.
  • JOB_NAME: nom de cette tâche.
  • 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 en cours ou d'un réseau VPC partagé hébergé par le projet en cours ou partagé avec lui.
  • REGION: région dans laquelle se trouvent le sous-réseau et les VM pour la tâche :
    • Si vous incluez le champ allowedLocations afin de spécifier l'emplacement autorisé des VM pour la tâche, vous devez spécifier la même région ici.
    • Sinon, la région doit être identique à l'emplacement que vous avez sélectionné pour la tâche (LOCATION).
  • SUBNET: nom d'un sous-réseau faisant partie du réseau VPC et situé dans la même région que les VM de la tâche.

Étapes suivantes