Spécifier votre réseau et sous-réseau

Cette page décrit comment spécifier un réseau et un sous-réseau lorsque vous exécutez des tâches Dataflow.

VPC et VPC partagé

Un réseau VPC, parfois simplement appelé réseau, assure la connectivité des ressources d'un projet. Pour en savoir plus sur les réseaux VPC, consultez la présentation des réseaux VPC.

Un réseau VPC partagé est un réseau existant dans un projet distinct, appelé projet hôte, au sein de votre organisation. Si un administrateur de VPC partagé vous a accordé le rôle d'administrateur de projet de service, vous êtes autorisé à utiliser au moins certains des sous-réseaux situés dans les réseaux du projet hôte. Pour obtenir des informations complémentaires sur le VPC partagé, consultez la Présentation du VPC partagé.

VPC Service Controls

Les outils VPC Service Controls de Dataflow offrent une sécurité supplémentaire pour les ressources et services de votre pipeline. Pour en savoir plus sur VPC Service Controls, consultez la page Présentation de VPC Service Controls.

Pour en savoir plus sur les limites liées à l'utilisation de Dataflow avec VPC Service Controls, consultez la page Produits compatibles et limites.

Spécifier un réseau et un sous-réseau

Lorsque vous créez une tâche Dataflow, vous pouvez spécifier un réseau ou un sous-réseau. Les sections suivantes décrivent quand utiliser chaque paramètre.

Si vous omettez les paramètres de sous-réseau et de réseau, Google Cloud part du principe que vous avez l'intention d'utiliser un réseau VPC en mode automatique portant le nom default. Si vous omettez les paramètres de sous-réseau et de réseau et qu'il n'existe pas de réseau nommé default dans votre projet, vous recevez une erreur.

Paramètre de réseau

Vous pouvez utiliser le paramètre network pour spécifier un réseau en mode automatique dans votre projet.

Vous pouvez également utiliser le paramètre réseau pour sélectionner un réseau VPC partagé uniquement si les deux conditions suivantes sont remplies :

  • Le réseau VPC partagé que vous sélectionnez est un réseau en mode automatique.
  • Vous êtes administrateur du projet de service disposant d'autorisations au niveau du projet pour l'ensemble du projet hôte de VPC partagé. Cela signifie qu'un administrateur VPC partagé vous a attribué le rôle d'utilisateur de réseau pour l'ensemble du projet hôte, vous permettant ainsi d'utiliser tous ses réseaux et sous-réseaux.

Dans tous les autres cas, vous devez spécifier un sous-réseau.

Paramètre de sous-réseau

Si vous devez sélectionner un sous-réseau spécifique dans un réseau, spécifiez le paramètre subnetwork. Vous devez sélectionner un sous-réseau situé dans la même région que la zone dans laquelle vous exécutez vos nœuds de calcul Dataflow. Par exemple, vous devez spécifier le paramètre de sous-réseau dans les situations suivantes :

  • Le sous-réseau dont vous avez besoin se trouve dans un réseau en mode personnalisé.
  • Vous êtes un administrateur de projet de service doté d'autorisations au niveau du sous-réseau pour un sous-réseau spécifique dans un projet hôte de VPC partagé.

Vous pouvez spécifier un sous-réseau à l'aide d'une URL complète ou d'un chemin d'accès abrégé. Si le sous-réseau est situé sur un réseau VPC partagé, vous devez utiliser l'URL complète.

  • URL complète :
    https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK
  • Version abrégée :
    regions/REGION/subnetworks/SUBNETWORK

Remplacez l'élément suivant :

  • HOST_PROJECT_ID : ID du projet hôte
  • REGION : point de terminaison régional de votre tâche Dataflow
  • SUBNETWORK : nom de votre sous-réseau Compute Engine

Si vous spécifiez un sous-réseau (subnetwork), Dataflow choisit le réseau (network) pour vous. Par conséquent, lorsque vous spécifiez un subnetwork, vous pouvez omettre le paramètre network.

La taille de sous-réseau limite uniquement le nombre d'instances selon le nombre d'adresses IP disponibles. Cette taille n'a pas d'incidence sur les performances de Dataflow VPC Service Controls.

Paramètre d'adresse IP publique

Le paramètre d'adresse IP publique indique au service Dataflow s'il faut attribuer des adresses IP publiques aux nœuds de calcul Dataflow. Par défaut, le service Dataflow attribue aux nœuds de calcul des adresses IP publiques et privées. Lorsque vous désactivez des adresses IP publiques, le pipeline Dataflow peut accéder aux ressources uniquement aux emplacements suivants :

Lorsque les adresses IP publiques sont désactivées, vous pouvez toujours effectuer des tâches d'administration et de surveillance. Vous pouvez accéder à vos nœuds de calcul à l'aide de SSH en définissant les options répertoriées dans la liste précédente. Toutefois, le pipeline ne peut accéder ni à Internet, ni aux autres réseaux Google Cloud. Les hôtes Internet ne peuvent pas accéder à vos nœuds de calcul Dataflow.

La désactivation des adresses IP publiques vous permet de mieux sécuriser votre infrastructure de traitement de données. En n'utilisant aucune adresse IP publique pour vos nœuds de calcul Dataflow, vous réduisez par la même occasion le nombre d'adresses IP publiques utilisées par rapport au quota attribué à votre projet Google Cloud.

Si vous désactivez les adresses IP publiques, vos tâches Dataflow ne peuvent pas accéder aux API et services en dehors de Google Cloud, qui nécessitent un accès à Internet. Pour en savoir plus sur la configuration de l'accès à Internet pour les tâches avec des adresses IP privées, consultez la section Accès Internet pour Dataflow.

JAVA

Pour désactiver les adresses IP publiques :

  1. Activez Accès privé à Google pour votre réseau ou votre sous-réseau.
  2. Dans les paramètres de votre tâche Dataflow, spécifiez --usePublicIps=false, ainsi que --network=NETWORK ou --subnetwork=SUBNETWORK.

PYTHON

Pour désactiver les adresses IP publiques :

  1. Suivez les instructions de dépendance du pipeline Apache Beam pour mettre en scène toutes les dépendances du package Python.
  2. Activez Accès privé à Google pour votre réseau ou votre sous-réseau.
  3. Dans les paramètres de votre tâche Dataflow, spécifiez --no_use_public_ips, ainsi que --network=NETWORK ou --subnetwork=SUBNETWORK.

VPC partagé

Lorsque vous spécifiez l'URL du sous-réseau, vérifiez que HOST_PROJECT_ID est bien le projet dans lequel le VPC est hébergé.

Assurez-vous également que le compte de service Dataflow et le compte de service du contrôleur disposent de l'autorisation IAM "Utilisateur de réseau Compute" attribuée au sous-réseau utilisé.

Exécuter votre pipeline avec le réseau et le sous-réseau spécifié

Les exemples suivants montrent comment exécuter votre pipeline sur le service Dataflow en spécifiant les paramètres network et subnetwork.

Si vous êtes un administrateur de projet de service autorisé à n'utiliser que des sous-réseaux spécifiques dans un réseau VPC partagé, vous devez renseigner le paramètre subnetwork avec le nom d'un sous-réseau que vous êtes autorisé à utiliser.

Utiliser la ligne de commande

L'exemple suivant décrit comment exécuter votre pipeline dans la ligne de commande en spécifiant le sous-réseau. La spécification du sous-réseau spécifie implicitement le réseau.

JAVA

mvn compile exec:java \
  -Dexec.mainClass=com.example.WordCount \
  -Dexec.args="--project=my-cloud-project \
    --stagingLocation=gs://my-wordcount-storage-bucket/staging/ \
    --output=gs://my-wordcount-storage-bucket/output \
    --runner=DataflowRunner \
    --subnetwork=https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork"

PYTHON

python -m apache_beam.examples.wordcount \
  --project my-cloud-project \
  --runner DataflowRunner \
  --staging_location gs://my-wordcount-storage-bucket/staging \
  --temp_location gs://my-wordcount-storage-bucket/temp \
  --output gs://my-wordcount-storage-bucket/output \
  --subnetwork https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork"

Utiliser l'API REST

L'exemple suivant montre comment exécuter un modèle et spécifier un sous-réseau. La spécification du sous-réseau spécifie implicitement le réseau.

Si vous exécutez un modèle Dataflow à l'aide de l'API REST, ajoutez network et/ou subnetwork à l'objet environment. Exemple :

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "my_job",
    "parameters": {
       "inputFile" : "gs://dataflow-samples/shakespeare/kinglear.txt",
       "output": "gs://my-wordcount-storage-bucket/output"
    },
    "environment": {
       "tempLocation": "gs://my-wordcount-storage-bucket/temp",
       "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork",
       "zone": "us-central1-f"
    }
}