Configuración de la red de un clúster de Cloud Dataproc

Descripción general

Las instancias de máquina virtual de Compute Engine en un clúster de Cloud Dataproc, que consta de VM principales y de trabajador, requieren el acceso total a redes de IP internas entre sí.

Las redes heredadas usan una regla de firewall predeterminada con un rango de IP de origen de 10.0.0.0/8 para permitir la comunicación interna en el clúster, mientras que las redes más nuevas predeterminadas habilitadas por subred usan un rango de IP de origen de 10.128.0.0/9 un poco más restringido, ya que tienen rangos de IP limitados por subredes regionales.

Además de usar los rangos de IP de origen que se acaban de mencionar, la regla de firewall típica (y default-allow-internal) en la red de Compute Engine de un clúster de Cloud Dataproc abre los puertos udp:0-65535;tcp:0-65535;icmp.

Especifica un rango de IP de origen para las reglas de firewall de la subred

Si tu regla de firewall de subred allows TCP traffic,

gcloud compute firewall-rules create my-subnet-firewall-rule --allow tcp
pero no usa las marcas --source-ranges o --source-tags para especificar las direcciones IP de origen o las instancias de origen que pueden conectarse a la subred, tu regla tendrá un rango de IP de origen de 0.0.0.0/0 de forma predeterminada, que abre tu subred a todas las direcciones IP, una vulnerabilidad de seguridad crítica.

Cómo establecer el rango de IP de origen

Puedes establecer el rango de IP de origen cuando creas una regla de firewall de subred desde Google Cloud Platform Console o con la herramienta de línea de comandos de gcloud.

Console

Usa la página Create a firewall rule (Crear una regla de firewall) de GCP Console para crear una regla de firewall con un rango de IP de origen específico.

Comando de Gcloud

Usa el comando de gcloud compute firewall-rules create para crear una regla de firewall con un rango de IP de origen específico.
gcloud compute firewall-rules create "tcp-rule" --allow tcp:80 
    --source-ranges="10.0.0.0/22,10.0.0.0/14"
    --description="Narrowing TCP traffic"

Configuración de la red predeterminada de un clúster de Cloud Dataproc

Cuando creas un clúster de Cloud Dataproc, puedes aceptar la red predeterminada para este.

Red predeterminada

En esta instantánea de Google Cloud Platform Console, se muestra la red predeterminada seleccionada de la página Create a cluster (Crear un clúster) de Cloud Dataproc.

Luego de crear el clúster, en la página Instancias de VM→Detalles de la red de GCP Console, se muestran las reglas de firewall predeterminadas para las instancias en el clúster, incluida la regla de firewall default-allow-internal que abre los puertos udp:0-65535;tcp:0-65535;icmp. Ten en cuenta que, aunque las reglas de firewall de red heredada especifican un rango de dirección IP 10.0.0.0/8, las redes más nuevas habilitadas por las subredes proporcionan rangos de direcciones IP regionales más restringidos (la regla default-allow-internal, que se muestra a continuación, especifica un rango de direcciones IP 10.128.0.0/9).

Crea una red de VPC

Puedes especificar tu propia red de nube privada virtual (VPC) cuando creas un clúster de Cloud Dataproc. Para ello, primero debes crear una red de VPC con las reglas de firewall. Luego, cuando creas el clúster, asocia tu red con el clúster.

Crea una red de VPC

Puedes crear una red de VPC desde GCP Console o con la herramienta de línea de comandos de gcloud compute networks create. Puedes crear una red de VPC en modo automático o una red de VPC en modo personalizado (denominadas redes “automáticas” y “personalizadas”, respectivamente, a continuación). Una red automática se configura con las subredes en cada región de Compute Engine de manera automática. Las redes personalizadas no se configuran de forma automática con las subredes; debes crear una o más subredes en una o más regiones de Compute Engine cuando creas la red personalizada. Para obtener más información, consulta Tipos de redes de VPC.

Veamos las opciones disponibles cuando creas una red automática o personalizada desde GCP Console.

Automáticas

En la captura de pantalla a continuación, se muestran los campos de GCP Console que se propagaron para la creación Automatic (Automática) de subredes (una red de VPC en modo automático). Tienes que seleccionar una o más reglas de firewall. La regla network-name-allow-internal, que abre los puertos udp:0-65535;tcp:0-65535;icmp, debe seleccionarse para habilitar el acceso interno total a la red de IP interna entre las instancias de VM en la red. También puedes seleccionar la regla network-name-allow-ssh para abrir el puerto SSH estándar 22 a fin de permitir las conexiones SSH a la red.

Personalizadas

Si eliges las subredes Custom (Personalizadas) cuando creas una red (una red de VPC en modo personalizado), debes especificar la región y el rango de direcciones IP privadas para cada subred. Para habilitar el acceso interno total entre las VM en la red, puedes especificar un rango de direcciones IP de 10.0.0.0/8 (o un rango más restringido, si fuera necesario, como 10.128.0.0/16).
Ten en cuenta que proporcionas las reglas de firewall para las subredes personalizadas después de crear la red. Una vez más, para habilitar el acceso total a la red entre las VM en tu red, selecciona o crea una regla de firewall que abra los puertos udp:0-65535;tcp:0-65535;icmp (como se muestra en la captura de pantalla de GCP Console a continuación).

Crea un clúster que use tu red de VPC

Comando de gcloud

El comando de gcloud dataproc clusters create del SDK de Cloud con las marcas ‑‑network o ‑‑subnet es ideal para crear un clúster que usará una subred automática o personalizada.

Usa la marca ‑‑network
La marca ‑‑network sirve para crear un clúster que usará una subred con el mismo nombre que la red en la región en la que se creará el clúster.

gcloud beta dataproc clusters create my-cluster \
    --network network-name
    ... other args ...

Por ejemplo, dado que las redes automáticas se crean con subredes en cada región con el mismo nombre que la red automática, puedes pasar el nombre de esta a la marca ‑‑network (‑‑network auto-net-name) para crear un clúster que usará la subred automática en la región del clúster.

Usa la marca ‑‑subnet
La marca ‑‑subnet es ideal para crear un clúster que usará una subred automática o personalizada en la región en la que se creará el clúster. Debes pasar la marca ‑‑subnet a la ruta completa del recurso de la subred que usará tu clúster.

gcloud beta dataproc clusters create cluster-name \
    --subnet projects/project-id/region/region/subnetworks/subnetwork-name
    ... other args ...

API de REST

Puedes especificar el campo GceClusterConfig networkUri o subnetworkUri como parte de una solicitud clusters.create.

Ejemplo

POST /v1/projects/my-project-id/regions/global/clusters/
{
  "projectId": "my-project-id",
  "clusterName": "example-cluster",
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": "custom-subnet-1",
      "zoneUri": "us-central1-b"
    },
    ...

Console

Después de crear una red de VPC con reglas de firewall que permiten a las VM tener acceso completo al rango de direcciones IP privadas de la red, puedes crear un clúster desde la página GCP Console→Create cluster (Crear clúster). Una vez allí, selecciona tu red desde el selector de red. Para acceder a él, expande los encabezados de las opciones Preemptible workers (Trabajadores interrumpibles), Bucket (Depósito), Network (Red), Version (Versión), Initialization (Inicialización) y Access (Acceso). Después de elegir la red, el selector de subred muestra las subredes disponibles en la región que seleccionaste para la creación del clúster. Si una subred no está disponible en la región, se muestra “No existen subredes en esta región” en el selector de subredes.

A continuación, se muestra una captura de pantalla de los selectores de red y subred en la página Create a cluster de Cloud Dataproc en GCP Console. Cómo se puede ver, se ha seleccionado una subred personalizada en una red personalizada.

Crea un clúster que use una red de VPC en otro proyecto

Un clúster de Cloud Dataproc puede usar una red de VPC compartida si participa como un proyecto de servicio. Con la VPC compartida, la red compartida de VPC se define en un proyecto diferente, que se llama proyecto host. El proyecto host está disponible para que los miembros de IAM la usen en proyectos de servicio adjuntos. Consulta la Descripción general de la VPC compartida para obtener información de referencia.

Crearás tu clúster de Cloud Dataproc en un proyecto. En una situación de VPC compartida, este proyecto será un proyecto de servicio. Deberás hacer referencia al número del proyecto de este. Aquí te mostramos una manera de encontrar el número del proyecto:

  1. Dirígete a la pestaña Settings (Configuración) de la página IAM & Admin (IAM y Administración).

  2. Selecciona el proyecto que usarás para crear el clúster de Cloud Dataproc desde la lista desplegable en la parte superior de la página.

  3. Toma nota del número del proyecto:

Un miembro de IAM que es un Administrador de VPC compartida debe realizar los siguientes pasos. Consulta instrucciones para configurar la VPC compartida a fin de obtener información de referencia.

  1. Asegúrate de que se habilitó el proyecto host de la VPC compartida.

  2. Adjunta el proyecto de Cloud Dataproc al proyecto host.

  3. Configura una o ambas de las siguientes cuentas de servicio a fin de tener la función Usuario de red para el proyecto host. Cloud Dataproc intentará usar la primera cuenta de servicio o recurrir a la cuenta de servicio de las API de Google, si es necesario.

  4. Dirígete a la pestaña IAM de la página IAM & Admin.

  5. Usa la lista desplegable del proyecto en la parte superior de la página para seleccionar el proyecto host.

  6. Haz clic en ADD (AGREGAR). Repite estos pasos para agregar ambas cuentas de servicio:

    1. Agrega la cuenta de servicio al campo Members (Miembros).

    2. En el menú Roles (Funciones), selecciona Compute Engine > Compute Network User (Usuario de la red de Compute).

    3. Haz clic en Add.

Una vez que ambas cuentas de servicio tengan la función de Usuario de red para el proyecto host, sigue las instrucciones a fin de crear un clúster con la línea de comandos, mediante las marcas --subnet o --network y el paso del nombre completo de la red o subred.

Crea un clúster de Cloud Dataproc solo con direcciones IP internas

Puedes crear un clúster de Cloud Dataproc que esté aislado de la Internet pública cuyas instancias de VM se comuniquen a través de una subred IP privada (las instancias de VM no tendrán direcciones IP públicas). Para ello, la subred del clúster debe tener habilitado el acceso privado a Google a fin de permitirles a los nodos del clúster acceder a las API y los servicios de Google, como Cloud Storage, desde IP internas.

Comando de gcloud

Puedes crear un clúster de Cloud Dataproc con las direcciones IP internas solo mediante el comando de gcloud clusters create con la marca ‑‑no-address.

Usa las marcas ‑‑no-address y ‑‑network
Usa la marca ‑‑no-address con la marca ‑‑network para crear un clúster que usará una subred con el mismo nombre de la red en la región en la que se creará el clúster.

gcloud beta dataproc clusters create my-cluster \
    --no-address \
    --network network-name \
    ... other args ...

Por ejemplo, dado que las redes automáticas se crean con subredes en cada región con el mismo nombre que la red automática, puedes pasar el nombre de esta a la marca ‑‑network (‑‑network auto-net-name) para crear un clúster que usará la subred automática en la región del clúster.

Usa las marcas ‑‑no-address y ‑‑subnet
Usa la marca ‑‑no-address con las marcas ‑‑subnet para crear un clúster que usará una subred automática o personalizada en la región en la que se creará el clúster. Debes pasar la marca ‑‑subnet a la ruta completa del recurso de la subred que usará tu clúster.

gcloud beta dataproc clusters create cluster-name \
    --no-address \
    --subnet projects/project-id/region/region/subnetworks/subnetwork-name \
    ... other args ...

API de REST

Puedes establecer el campo internalIpOnly GceClusterConfig como “true” (verdadero) como parte de una solicitud clusters.create para habilitar solo direcciones IP internas.

Ejemplo

POST /v1beta2/projects/my-project-id/regions/global/clusters/
{
  "projectId": "my-project-id",
  "clusterName": "example-cluster",
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": "custom-subnet-1",
      "zoneUri": "us-central1-b",
      "internalIpOnly": true
    },
    ...

Console

Puedes crear un clúster de Cloud Dataproc con el acceso privado a Google habilitado de la página Create a cluster de Cloud Dataproc en GCP Console. Expande el vínculo de las opciones Preemptible workers, Bucket, Network Version, Initialization y Access en la parte inferior de la página y, a continuación, haz clic en Internal IP only (Solo IP interna) a fin de habilitar esta característica para tu clúster.
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Cloud Dataproc
¿Necesitas ayuda? Visita nuestra página de asistencia.