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

En esta página, se explican los requisitos y las opciones de configuración de red del clúster de Dataproc.

Requisitos de conectividad de Dataproc

Tu clúster de Dataproc debe estar en una red de VPC que cumpla con los requisitos de enrutamiento y firewall para acceder de forma segura a las APIs de Google y otros recursos.

Requisitos de la ruta

El agente de Dataproc que se ejecuta en las VMs del clúster necesita una ruta a Internet para acceder a la API de control de Dataproc y obtener trabajos y estados de informes. Cuando se crean, las redes de VPC contienen una ruta predeterminada generada por el sistema a Internet. No se recomienda borrar la ruta predeterminada a Internet. En su lugar, usa firewalls para controlar el acceso a la red. Ten en cuenta que los clústeres de solo IP interna también requieren esta ruta predeterminada a Internet para acceder a las APIs de control de Dataproc y a otros servicios de Google, como Cloud Storage, pero su tráfico no sale de los centros de datos de Google.

Requisitos del firewall

Las máquinas virtuales (VM) del clúster de Dataproc deben poder comunicarse entre sí mediante los protocolos ICMP, TCP (todos los puertos) y UDP (todos los puertos).

La regla de firewall default-allow-internal de la red de VPC default cumple con los requisitos de conectividad del clúster de Dataproc y permite la entrada desde el rango de origen 10.128.0.0/9 desde todas las VMs de la red de VPC de la siguiente manera:

Regla Red Dirección Prioridad Rango de origen Protocolos:Puertos
default-allow-internal default ingress 65534 10.128.0.0/9 tcp:0-65535,udp:0-65535,icmp
  • Si borras la regla de firewall de default-allow-internal, la regla implícita de rechazo de entrada bloquea el tráfico de entrada en la red default.

  • Si borras la regla de firewall default-allow-internal o no usas la red de VPC default, debes crear tu propia regla que cumpla con los requisitos de conectividad de Dataproc y, luego, aplicarla a la red de VPC de tu clúster.

Práctica recomendada: Crea una regla de firewall de entrada para la red de VPC del clúster que permita la conectividad de entrada solo entre las VMs del clúster mediante un rango de IP de origen o identificando las VMs del clúster por etiqueta de red o cuenta de servicio.

Crea una regla de firewall de entrada

Si tú o tu administrador de red o seguridad crean una regla de firewall de entrada para aplicarla a una red de VPC de clúster de Dataproc, esta debe tener las siguientes características:

  • El parámetro sources especifica las fuentes de los paquetes. Todas las VMs del clúster de Dataproc deben poder comunicarse entre sí. Puedes identificar las VMs del clúster por rango de direcciones IP, etiquetas de origen o cuentas de servicio asociadas con las VMs.

  • El destino de la regla debe identificar las VMs del clúster. El objetivo puede ser todas las VMs de la red de VPC, o bien puedes identificar las VMs por rango de direcciones IP, etiqueta de destino o cuenta 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)
    • ICMP

    Dataproc usa servicios que se ejecutan en varios puertos. Especificar todos los puertos ayuda a que los servicios se ejecuten correctamente.

Cómo diagnosticar reglas de firewall de VPC

Para auditar los paquetes que no procesaron las reglas de firewall de mayor prioridad, puedes crear dos reglas de firewall de prioridad baja (65534). A diferencia de las reglas de firewall implícitas, puedes habilitar el registro de reglas de firewall en cada una de estas reglas de prioridad baja:

  1. Una regla de denegación de entrada (orígenes 0.0.0.0/0, todos los protocolos, todos los destinos de la red de VPC)

  2. Una regla de denegación de salida (destinos 0.0.0.0/0, todos los protocolos, todos los destinos de la red de VPC)

  • Con estas reglas de prioridad baja y el registro de reglas de firewall, puedes registrar paquetes que las reglas de firewall de mayor prioridad (y potencialmente más específicas) no procesaron. Estas dos reglas de prioridad baja también se alinean con las prácticas recomendadas de seguridad mediante la implementación de una estrategia de “paquetes de descarte final”.

  • Examina los registros de reglas de firewall para estas reglas a fin de determinar si necesitas crear o modificar reglas de mayor prioridad para permitir paquetes. Por ejemplo, si se descartan los paquetes enviados entre las VMs del clúster de Dataproc, esto puede indicar que se deben ajustar las reglas de firewall.

Crear red de VPC

En lugar de usar la red de VPC de default, puedes crear tu propia red de VPC en modo automático o personalizado. Cuando creas el clúster, asocias tu red con el clúster.

Entorno de Assured Workloads: Cuando usas un entorno de Assured Workloads para el cumplimiento normativo, el clúster, su red de VPC y sus buckets de Cloud Storage deben estar contenidos en el entorno de Assured Workloads.

Crea un clúster que use tu red de VPC

Console

Selecciona tu red en la sección Configuración de 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 el clúster.

Google Cloud CLI

Usa gcloud dataproc clusters create con la marca ‑‑network o ‑‑subnet para crear un clúster en una subred de tu red. Si usas la marca --network, el clúster usará una subred con el mismo nombre que la red especificada en la región donde se crea el clúster.

--network example. Dado que las redes automáticas se crean con subredes en cada región, y cada subred tiene el nombre de la red, puedes pasar el nombre de la red de VPC de modo automático a la marca ‑‑network. El clúster usará la subred de VPC de modo automático en la región especificada con la marca ‑‑region.

gcloud dataproc clusters create CLUSTER_NAME \
    --network NETWORK_NAME \
    --region=REGION \
    ... other args ...

--subnet example. Puedes usar la marca ‑‑subnet para crear un clúster que use un modo automático o una subred de red de VPC personalizada en la región del clúster. Especifica la ruta de acceso completa del recurso de la subred.

gcloud dataproc clusters create CLUSTER_NAMEW \
    --subnet projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_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": "PROJECT_ID",
  "clusterName": CLUSTER_NAME,
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": SUBNET_NAME,
    },
    ...

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 que se define en un proyecto host. El proyecto en el que se crea el clúster de Dataproc se conoce como proyecto de servicio.

  1. Busca el número de proyecto del clúster de Dataproc:

    1. Abre la página IAM y administración Configuración en la consola de Google Cloud. Selecciona el proyecto en el que crearás el clúster de Dataproc. Copia el ID del proyecto.
  2. Un principal con la función de administrador de la 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 el proyecto host de la VPC compartida esté habilitado.

    2. Adjunta el proyecto con el clúster de Dataproc al proyecto host.

    3. Configura la cuenta de servicio del agente de servicio de Dataproc (service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) para que tenga el rol de Usuario de red para el proyecto host:

      1. Abre la página IAM y administración en la consola de Google Cloud.

      2. Usa el selector de proyectos para seleccionar el nuevo proyecto host.

      3. Haz clic en Otorgar acceso.

      4. Completa el formulario para otorgar acceso:

        1. Agregar principales: Ingresa la cuenta de servicio.

        2. Asignar roles: Ingresa "Red de Compute" en el cuadro de filtro y, luego, selecciona el rol Usuario de la red de Compute.

        3. Haz clic en Guardar.

  3. Una vez que la cuenta de servicio tenga el rol Network User para el proyecto host, crea un clúster que use la red de VPC compartida.

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

Un clúster de Dataproc puede usar una subred de VPC compartida que se define en un proyecto host. El proyecto en el que se crea el clúster de Dataproc se conoce como proyecto de servicio.

  1. Busca el número de proyecto del clúster de Dataproc:

    1. Abre la página IAM y administración Configuración en la consola de Google Cloud. Selecciona el proyecto en el que crearás el clúster de Dataproc. Copia el ID del proyecto.
  2. Un principal con la función de administrador de la 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 el proyecto host de la VPC compartida esté habilitado.

    2. Adjunta el proyecto con el clúster de Dataproc al proyecto host.

    3. Configura la cuenta de servicio del agente de servicio de Dataproc (service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) para que tenga el rol de Usuario de red para el proyecto host:

      1. Abre la página Redes de VPC en la consola de Google Cloud.

      2. Usa el selector de proyectos para seleccionar el proyecto host.

      3. Haz clic en la red que contiene la subred que usará tu clúster de Dataproc.

      4. En la página Detalles de la red de VPC, haz clic en la casilla de verificación junto al nombre de la subred que usará tu clúster.

      5. Si el panel de información no está abierto, haz clic en Mostrar panel de información.

      6. Sigue estos pasos para cada cuenta de servicio:

        1. En el panel de información, haz clic en Agregar principal.

        2. Completa el formulario para otorgar acceso:

          1. Agregar principales: Ingresa la cuenta de servicio.

          2. Asignar roles: Ingresa "Red de Compute" en el cuadro de filtro y, luego, selecciona el rol Usuario de la red de Compute.

          3. Haz clic en Guardar.

  3. Una vez que la cuenta de servicio tenga el rol Network User para el proyecto host, crea un clúster que use la subred de VPC compartida.

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 (a las VMs del clúster no se les asignan direcciones IP públicas). Para ello, la subred debe tener habilitado el Acceso privado a Google para permitir que los nodos del clúster accedan a las APIs y los servicios de Google, como Cloud Storage, desde IP internas.

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 la consola de Google Cloud. Haz clic en Solo IP interna en el panel Personalizar clúster para habilitar esta función en tu clúster.

gcloud CLI

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 usará una subred con el mismo nombre que la red en la región donde se creará el clúster.

gcloud dataproc clusters create CLUSTER_NAME \
    --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 ‑‑network flag 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 usará una subred automática o personalizada en la región donde se creará el clúster. Pasa la marca ‑‑subnet a la ruta de acceso completa del recurso de la subred.

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 true 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
    },
    ...

Debido a que los clústeres que tienen solo IP internas no cuentan con acceso a Internet, los trabajos que descargan dependencias de Internet, por ejemplo, una descarga de paquetes de dependencia de Spark desde Maven Central, fallarán de forma predeterminada. Hay varias soluciones para evitar el problema:

  1. Usa Cloud NAT para habilitar el acceso del clúster a Internet.

  2. Crea una imagen personalizada que incluya las dependencias (por ejemplo, paquetes de dependencia de Spark en /usr/lib/spark/jars/).

  3. Sube las dependencias a un bucket de Cloud Storage y, luego, usa una acción de inicialización para descargar las dependencias del bucket durante la creación del clúster.

Redes de Dataproc y Controles del servicio de VPC

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 Controles del servicio de VPC con clústeres de Dataproc: