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

Ce document explique comment spécifier un réseau, un sous-réseau ou les deux options lorsque vous exécutez des tâches Dataflow.

Ce document part du principe que vous savez comment créer des réseaux et des sous-réseaux Google Cloud. Vous devez également connaître les termes liés au réseau décrits dans la section suivante.

Le réseau default possède des configurations permettant l'exécution de jobs Dataflow. Cependant, d'autres services peuvent également utiliser ce réseau. Assurez-vous que les modifications que vous apportez au réseau default sont compatibles avec tous vos services. Vous pouvez également créer un réseau distinct pour Dataflow.

Pour en savoir plus sur la résolution des problèmes de mise en réseau, consultez Résoudre les problèmes de mise en réseau Dataflow.

Terminologie associée au réseau Google Cloud

  • Réseau VPC. Un réseau VPC est une version virtuelle d'un réseau physique, mise en œuvre au sein du réseau de production de Google. Parfois appelé réseau, un VPC assure la connectivité des ressources d'un projet.

    Pour en savoir plus sur le VPC, consultez la page Présentation du réseau VPC.

  • Réseau VPC partagé. Lorsque vous utilisez un VPC partagé, vous désignez un projet en tant que projet hôte, et vous lui associez un ou plusieurs projets de service. Les réseaux VPC du projet hôte sont appelés réseaux VPC partagés. 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 en savoir plus sur le VPC partagé, consultez la Présentation du VPC partagé.

  • VPC Service Controls VPC Service Controls de Dataflow vous aide à vous protéger contre les actions accidentelles ou ciblées par des entités externes ou des entités internes, ce qui permet de minimiser les risques d'exfiltration de données non justifiée. VPC Service Controls vous permet de créer des périmètres qui protègent les ressources et les données des services que vous spécifiez explicitement.

    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.

  • Règles de pare-feu. Utilisez des règles de pare-feu pour autoriser ou refuser le trafic vers et depuis vos VM. Pour en savoir plus, consultez Configurer l'accès à Internet et les règles de pare-feu.

Réseau et sous-réseau pour une tâche Dataflow

Lorsque vous créez un job Dataflow, vous pouvez spécifier un réseau, un sous-réseau ou les deux.

Tenez compte des consignes suivantes :

  • Si vous ne savez pas quel paramètre utiliser, spécifiez uniquement le paramètre de sous-réseau. Le paramètre réseau est alors spécifié implicitement pour vous.

  • 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 nommé default. Si vous n'avez pas de réseau nommé default dans votre projet, vous devez spécifier un autre réseau ou sous-réseau.

Consignes pour la spécification d'un paramètre de réseau

  • Vous pouvez sélectionner un réseau VPC en mode automatique dans votre projet avec le paramètre de réseau.

  • Vous pouvez spécifier un réseau en n'utilisant que son nom, et non l'URL complète.

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

    • Le réseau VPC partagé que vous sélectionnez est un réseau VPC 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é. Un administrateur VPC partagé vous a attribué le rôle Utilisateur de réseau Compute 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.

Consignes de spécification d'un paramètre de sous-réseau

  • Si vous spécifiez un sous-réseau, Cloud Dataflow choisit le réseau pour vous. Par conséquent, lorsque vous spécifiez un sous-réseau vous pouvez omettre le paramètre de réseau.

  • Pour sélectionner un sous-réseau spécifique dans un réseau, utilisez le paramètre de sous-réseau.

  • Spécifiez 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.

  • 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 que vous spécifiez se trouve dans un réseau VPC 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é.

  • 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.

Consignes de spécification d'un paramètre de sous-réseau pour le VPC partagé

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

  • Si le sous-réseau est situé sur un réseau VPC partagé, vous devez utiliser l'URL complète. Consultez un exemple d'URL complète qui spécifie un sous-réseau.

  • Assurez-vous que le sous-réseau VPC partagé est partagé avec le compte de service Dataflow et que le rôle d'utilisateur de réseau Compute est attribué sur le sous-réseau spécifié. Le rôle utilisateur de réseau Compute doit être attribué au compte de service Dataflow dans le projet hôte.

    1. Dans Google Cloud Console, accédez à la page VPC partagé.

      Accéder à la page "VPC partagé"

    2. Sélectionnez un projet hôte.

    3. Dans la section Accès aux sous-réseaux individuels, sélectionnez votre sous-réseau. Le volet Autorisations au niveau du sous-réseau affiche les autorisations pour ce sous-réseau. Vous pouvez voir si le sous-réseau VPC est associé au rôle d'utilisateur de réseau Compute.

    4. Pour accorder des autorisations, dans le volet Autorisations au niveau du sous-réseau, cliquez sur Ajouter un compte principal.

    Si le réseau n'est pas partagé, lorsque vous essayez d'exécuter votre job, le message d'erreur suivant s'affiche : Error: Message: Required 'compute.subnetworks.get' permission. Pour en savoir plus, consultez Autorisation "compute.subnetworks.get" requise dans la section "Résoudre les problèmes liés aux autorisations Dataflow".

Exemples de spécifications de réseau et de sous-réseau

Voici un exemple d'URL complète qui spécifie un sous-réseau :

https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION_NAME/subnetworks/SUBNETWORK_NAME

Remplacez les éléments suivants :

  • HOST_PROJECT_ID : ID du projet hôte
  • REGION_NAME : région de votre job Dataflow
  • SUBNETWORK_NAME : nom de votre sous-réseau Compute Engine

Voici un exemple d'URL, où l'ID du projet hôte est my-cloud-project, la région est us-central1 et le nom du sous-réseau est mysubnetwork :

 https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork

Voici un exemple de version abrégée qui spécifie un sous-réseau :

regions/REGION_NAME/subnetworks/SUBNETWORK_NAME

Remplacez les éléments suivants :

  • REGION_NAME : région de votre job Dataflow
  • SUBNETWORK_NAME : nom de votre sous-réseau Compute Engine

Exécutez votre pipeline avec le réseau spécifié

Si vous souhaitez utiliser un réseau autre que le réseau par défaut créé par Google Cloud, vous devez dans la plupart des cas spécifier le sous-réseau. Le réseau est automatiquement déduit du sous-réseau que vous spécifiez. Pour plus d'informations, consultez la section Consignes de spécification d'un paramètre de réseau dans ce document.

L'exemple suivant vous montre comment exécuter votre pipeline dans la ligne de commande ou à l'aide de l'API REST. L'exemple indique un réseau.

Java

mvn compile exec:java \
    -Dexec.mainClass=INPUT_PATH \
    -Dexec.args="--project=HOST_PROJECT_ID \
        --stagingLocation=gs://STORAGE_BUCKET/staging/ \
        --output=gs://STORAGE_BUCKET/output \
        --region=REGION \
        --runner=DataflowRunner \
        --network=NETWORK_NAME"

Python

python -m INPUT_PATH \
    --project HOST_PROJECT_ID \
    --region=REGION \
    --runner DataflowRunner \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --output gs://STORAGE_BUCKET/output \
    --network NETWORK_NAME

Go

wordcount
    --project HOST_PROJECT_ID \
    --region HOST_GCP_REGION \
    --runner dataflow \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --input INPUT_PATH \
    --output gs://STORAGE_BUCKET/output \
    --network NETWORK_NAME

API

Si vous exécutez un modèle Dataflow à l'aide de l'API REST, ajoutez un attribut network ou subnetwork, ou les deux, à l'objet environment.

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "JOB_NAME",
    "parameters": {
       "inputFile" : "INPUT_PATH",
       "output": "gs://STORAGE_BUCKET/output"
    },
    "environment": {
       "tempLocation": "gs://STORAGE_BUCKET/temp",
       "network": "NETWORK_NAME",
       "zone": "us-central1-f"
    }
}

Remplacez les éléments suivants :

  • JOB_NAME : nom de votre tâche Dataflow (API uniquement)
  • INPUT_PATH : chemin d'accès à votre source
  • HOST_PROJECT_ID : ID du projet hôte
  • REGION : région Dataflow (par exemple, us-central1)
  • STORAGE_BUCKET : bucket de stockage.
  • NETWORK_NAME : nom de votre réseau Compute Engine

Exécutez votre pipeline avec le réseau spécifié

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.

L'exemple suivant vous montre comment exécuter votre pipeline dans la ligne de commande ou à l'aide de l'API REST. L'exemple indique un sous-réseau. Vous pouvez également spécifier le réseau.

Java

mvn compile exec:java \
    -Dexec.mainClass=INPUT_PATH \
    -Dexec.args="--project=HOST_PROJECT_ID \
        --stagingLocation=gs://STORAGE_BUCKET/staging/ \
        --output=gs://STORAGE_BUCKET/output \
        --region=REGION \
        --runner=DataflowRunner \
        --subnetwork=https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME"

Python

python -m INPUT_PATH \
    --project HOST_PROJECT_ID \
    --region=REGION \
    --runner DataflowRunner \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --output gs://STORAGE_BUCKET/output \
    --subnetwork https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME

Go

wordcount
    --project HOST_PROJECT_ID \
    --region HOST_GCP_REGION \
    --runner dataflow \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --input INPUT_PATH \
    --output gs://STORAGE_BUCKET/output \
    --subnetwork https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME

API

Si vous exécutez un modèle Dataflow à l'aide de l'API REST, ajoutez un attribut network ou subnetwork, ou les deux, à environment.

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "JOB_NAME",
    "parameters": {
       "inputFile" : "INPUT_PATH",
       "output": "gs://STORAGE_BUCKET/output"
    },
    "environment": {
       "tempLocation": "gs://STORAGE_BUCKET/temp",
       "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME",
       "zone": "us-central1-f"
    }
}

Remplacez les éléments suivants :

  • JOB_NAME : nom de votre tâche Dataflow (API uniquement)
  • INPUT_PATH : chemin d'accès à votre source
  • HOST_PROJECT_ID : ID du projet hôte
  • REGION : région Dataflow (par exemple, us-central1)
  • STORAGE_BUCKET : bucket de stockage.
  • SUBNETWORK_NAME : nom de votre sous-réseau Compute Engine

Désactiver une adresse IP externe

Pour désactiver une adresse IP externe, consultez la section Configurer les règles d'accès à Internet et de pare-feu.