Cómo especificar la red y la subred

En esta página se explica cómo especificar una red y una subred cuando ejecuta trabajos de Dataflow.

VPC y VPC compartida

Una red de VPC, a veces llamada simplemente red, brinda conectividad para los recursos en un proyecto. Para obtener más información sobre las redes de VPC, consulta la Descripción general de las redes de la nube privada virtual (VPC).

Una red de VPC compartida es la que existe en un proyecto separado, denominado proyecto host, dentro de tu organización. Si un administrador de la VPC compartida te asignó la función de administrador de proyecto de servicio, tienes permiso para usar, al menos, algunas de las subredes en las redes del proyecto host. Para obtener información general sobre VPC compartida, consulta la Descripción general de la VPC compartida.

Controles del servicio de VPC

Los controles de servicio de VPC de Dataflow proporcionan seguridad adicional para los recursos y servicios de su canalización. Para obtener más información sobre los Controles del servicio de VPC, consulta la descripción general de los Controles del servicio de VPC.

Para obtener información sobre las limitaciones de usar Dataflow con los controles del servicio de VPC, consulta las limitaciones y los productos compatibles.

Cómo especificar una red y una subred

Cuando crea un trabajo de Dataflow, puede especificar una red o una subred. En las siguientes secciones, se describe cuándo debes usar cada parámetro.

Si omites los parámetros de red y subred, Google Cloud supone que pretendes usar una red de VPC de modo automático con el nombre default. Si omites parámetro de subred y de red y no tienes una red llamada default en tu proyecto, recibirás un error.

Parámetro de red

Puedes usar el parámetro de red para especificar una red de modo automático en tu proyecto.

También puedes utilizar el parámetro de red para seleccionar una red de VPC compartida solo si se cumplen las dos condiciones siguientes:

  • La red de VPC compartida que seleccionas es una red de modo automático.
  • Eres un administrador de proyectos de servicio con permisos a nivel del proyecto para todo el proyecto host de VPC compartida. Esto significa que un administrador de VPC compartida te otorgó la función de usuario de red para todo el proyecto host, por lo que puedes usar todas sus redes y subredes.

Para todos los demás casos, debes especificar una subred.

Parámetro de subred

Si necesitas seleccionar una subred específica en una red, especifica el parámetro subnetwork. Debe seleccionar una subred en la misma región que la zona donde ejecuta su trabajo de Dataflow. Por ejemplo, debes especificar el parámetro de subred en las siguientes situaciones:

  • La subred que necesitas está en una red de modo personalizado.
  • Eres un administrador de proyectos de servicio con permisos de nivel de subred para una subred específica en un proyecto host de VPC compartida.

Puedes especificar una subred con una URL completa o una ruta abreviada. Si la subred está ubicada en una red de VPC compartida, debes usar la URL completa.

  • URL completa:
    https://www.googleapis.com/compute/v1/projects/<HOST_PROJECT_ID>/regions/<REGION>/subnetworks/<SUBNETWORK>
  • Forma abreviada:
    regions/<REGION>/subnetworks/<SUBNETWORK>

Si especifica un subnetwork, Dataflow elige el network por usted. Por lo tanto, cuando especificas una subnetwork, puedes omitir el parámetro de network.

Parámetro de IP pública

El parámetro de IP pública le indica al servicio de Dataflow si debe asignar direcciones IP públicas a los trabajadores de Dataflow. De forma predeterminada, el servicio de Dataflow asigna a los trabajadores direcciones IP públicas y privadas. Cuando desactivas las direcciones IP públicas, la canalización de Dataflow puede acceder a los recursos solo en los siguientes lugares:

Con las IP públicas desactivadas, aún puedes realizar tareas administrativas y de supervisión. Puede acceder a sus trabajadores mediante SSH a través de las opciones que aparecen en la lista anterior. Sin embargo, la canalización no puede acceder a Internet ni a otras redes de Google Cloud, y los hosts de Internet no pueden acceder a los trabajadores de Dataflow.

Desactivar las IP públicas te permite proteger mejor tu infraestructura de procesamiento de datos. Si no usas direcciones IP públicas para tus trabajadores de Dataflow, también puedes reducir la cantidad de direcciones IP públicas que utilizas en la cuota de tu proyecto de Google Cloud.

JAVA

Para desactivar las IP públicas, realiza los siguientes pasos:

  1. Habilita el Acceso privado a Google para la red o subred.
  2. En los parámetros de tu trabajo de Cloud Dataflow, especifica --usePublicIps=false y --network=[NETWORK] o --subnetwork=[SUBNETWORK].

PYTHON

Para desactivar las IP públicas, realiza los siguientes pasos:

  1. Sigue las instrucciones de las dependencias de canalizaciones de Apache Beam para almacenar en etapas intermedias todas las dependencias de paquetes de Python.
  2. Habilita el Acceso privado a Google para la red o subred.
  3. En los parámetros de tu trabajo de Cloud Dataflow, especifica --no_use_public_ips y --network=[NETWORK] o --subnetwork=[SUBNETWORK].

Cómo ejecutar la canalización con la red y la subred especificadas

Los siguientes ejemplos muestran cómo ejecutar su canalización en el servicio de Dataflow con los parámetros network y subnetwork especificados.

Si eres un administrador de proyectos de servicio que solo tiene permiso para usar subredes específicas en una red de VPC compartida, debes especificar el parámetro de subnetwork con una subred que tengas permiso para usar.

Usa la línea de comandos

En el siguiente ejemplo, se muestra cómo ejecutar la canalización desde la línea de comandos, especificando la subred. Con esto, se especifica implícitamente la red.

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"
    

Uso de la API de REST

En el siguiente ejemplo, se muestra cómo ejecutar una plantilla y especificar una subred. Con esto, se especifica implícitamente la red.

Si está ejecutando una plantilla de Dataflow mediante la API de REST, agregue network y/o subnetwork al objeto environment. Por ejemplo:

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"
        }
    }