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

Descripción general

Las instancias de máquina virtual de Compute Engine en un clúster de Dataproc que constan de VM principales y de trabajador deben poder comunicarse entre sí mediante ICMP, TCP (todos los puertos) y UDP (todos los puertos).

Requisito de la regla de firewall

Dataproc requiere que crees una regla de firewall de permiso de entrada con las siguientes características:

  • El origen de la regla debe incluir las VM del clúster. Puedes definir un origen mediante rangos de direcciones IP o puedes identificar VM con etiquetas de origen o cuentas de servicio de origen. Si omites una especificación de origen, la regla de firewall usará el rango 0.0.0.0/0 (cualquier dirección IP) como el origen. Si tus VM de Dataproc tienen direcciones IP externas, significa que pueden aceptar tráfico desde cualquier lugar de Internet. En consecuencia, debes definir el origen para que sea lo más limitado posible a fin de satisfacer tus necesidades y proteger tu clúster.

  • El destino de la regla debe identificar las VM del clúster. El destino pueden ser todas las VM en la red de VPC, o puedes identificar VM de destino específicas mediante etiquetas de destino o cuentas de servicio de destino.

  • La regla debe incluir los siguientes protocolos y puertos: TCP (todos los puertos, de 0 a 65535), UDP (todos los puertos, de 0 a 65535) y también con ICMP.

    gcloud compute firewall-rules create my-subnet-firewall-rule --allow tcp
    
    Es mejor especificar una regla de firewall de entrada permitida con un rango de fuente específico o para identificar las VM de Google Cloud por etiqueta de red o cuenta de servicio. Consulta la descripción general de las reglas de firewall para obtener más información.

Cómo establecer el rango de IP de origen

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

Console

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

Comando de gcloud

Usa el comando gcloud compute firewall-rules create para crear una regla de firewall con un rango de IP de origen especificado.

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"

En la página de detalles de instancias de VM→Red de Google Cloud Console, se muestran las reglas de firewall que se pueden aplicar a las instancias en un clúster de Dataproc. Si usas la red predeterminada, esta incluye una regla de firewall de default-allow-internal propagada previamente que permite la entrada desde el rango de origen 10.128.0.0/9. Si borras esta regla de firewall propagada previamente o usas una red de VPC distinta de la red predeterminada, el tráfico de entrada estará bloqueado por regla implícita de denegación de entrada. En esas situaciones, debes crear una regla de firewall de entrada permitida que permita el tráfico a todos los puertos TCP y UDP de las instancias en el clúster. Tu administrador de red o seguridad puede hacer referencia a la descripción general de las reglas de firewall para obtener más información.

Crea una red de VPC

Puedes especificar tu propia red de nube privada virtual (VPC) cuando creas un clúster de 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 Cloud Console o mediante la herramienta de línea de comandos 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 y personalizada desde Cloud Console.

Automática

La captura de pantalla de Cloud Console, a continuación, muestra los campos de Cloud Console que se propagan para la creación automática de subredes (una red de VPC en modo automático). Tienes que seleccionar una o más reglas de firewall. Se debe seleccionar la regla network-name-allow-internal, que abre los puertos udp:0-65535;tcp:0-65535;icmp, para habilitar el acceso completo de red 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 conexiones SSH a la red.

Personalizada

Si eliges las subredes 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. Para habilitar el acceso total a la red entre las VM de 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 Cloud Console a continuación).

Crea un clúster que use tu red de VPC

Comando de gcloud

Puedes usar el comando gcloud dataproc clusters create del SDK de Cloud con la marca ‑‑network o ‑‑subnet para crear un clúster que use una subred automática o personalizada.

Uso de la marca --network
Puedes usar la marca ‑‑network para crear un clúster que usará una subred con el mismo nombre que la red en la región donde se creará el clúster.

gcloud dataproc clusters create my-cluster \
    --network network-name \
    --region=region \
    ... 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.

Uso de la marca --subnet
Puedes usar la marca ‑‑subnet para crear un clúster que usará una subred automática o personalizada en la región donde 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 dataproc clusters create cluster-name \
    --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \
    --region=region \
    ... other args ...

API de REST

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

Ejemplo

POST /v1/projects/my-project-id/regions/us-central1/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 permitan el acceso completo de las VM en el rango de direcciones IP privadas de la red, puedes crear un clúster desde la página Dataproc Crear un clúster en Cloud Console. Selecciona tu red principal en la sección Configuración de la red en el panel Personalizar clúster. 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.

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

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

Crearás tu clúster de 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. En la lista desplegable de proyectos en la parte superior de la página, selecciona el proyecto que usarás para crear el clúster de Dataproc.

  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 las 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. Conecta el proyecto de 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. Dataproc intentará usar la primera cuenta de servicio, recurriendo 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 AGREGAR (ADD). Repite estos pasos para agregar ambas cuentas de servicio:

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

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

    3. Haz clic en Agregar (Add).

Una vez que ambas cuentas de servicio tengan la función de usuario de red para el proyecto host, puedes crear un clúster que use tu red de VPC.

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

Puedes crear un clúster de Dataproc aislado de la Internet pública con instancias de VM que se comuniquen a través de una subred de 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

Solo puedes crear un clúster de Dataproc con direcciones IP internas mediante el comando gcloud dataproc clusters create con la marca ‑‑no-address.

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

gcloud dataproc clusters create my-cluster \
    --no-address \
    --network network-name \
    --region=region \
    ... 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.

Uso de las marcas --no-address y --subnet
Usa la marca ‑‑no-address con las marcas ‑‑subnet para crear un clúster que use una subred automática o personalizada en la región donde 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 dataproc clusters create cluster-name \
    --no-address \
    --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \
    --region=region \
    ... other args ...

API de REST

Puedes configurar el campo GceClusterConfig internalIpOnly como "verdadero" como parte de una solicitud clusters.create para habilitar solo las direcciones IP internas.

Ejemplo

POST /v1/projects/my-project-id/regions/us-central1/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 Dataproc con el Acceso privado a Google habilitado en la página Crear un clúster de Dataproc en Cloud Console. Haz clic en la IP interna solo en el panel Personalizar clúster para habilitar esta función en tu clúster.

Redes de Dataproc y VPC-SC

Los Controles del servicio de VPC permiten a los administradores definir un perímetro de seguridad alrededor de los recursos de los servicios administrados por Google para controlar la comunicación entre esos servicios.

Ten en cuenta las siguientes limitaciones y estrategias cuando uses redes de VPC-SC con clústeres de Dataproc: