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

Requisitos de conectividad de Dataproc

Las instancias de máquina virtual (VM) de Compute Engine en un clúster de Dataproc, que consta de VM principales y de trabajador, deben poder comunicarse entre sí mediante ICMP, TCP (todos los puertos) y los protocolos 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 VM de la red de VPC tienen las siguientes características:

Regla Red Dirección Prioridad Rango de origen Protocolos:Puertos
default-allow-internal default entrada 65534 10.128.0.0/9 tcp:0-65535, udp:0-65535 y icmp

Si borras la regla de firewall default-allow-internal, el tráfico implícito 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 aplicarla a la VPC de tu clúster red.

Cree una regla de firewall de entrada

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

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

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

  • 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 ICMP. Dataproc usa servicios que se ejecutan en varios puertos. especificar todos los puertos ayudará a que los servicios se ejecuten correctamente.

Diagnostica las 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 las reglas de firewall para estas reglas a fin de determinar si necesitas crear o modificar reglas de mayor prioridad a fin de permitir paquetes. Por ejemplo, si se descartan paquetes enviados entre instancias de clústeres de Dataproc, esto puede indicar que debes ajustar las reglas de firewall.

Crear red de VPC

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

Crea un clúster que use tu red de VPC

Comando de gcloud

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

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

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

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

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

Selecciona tu red en la sección Configuración de la red del panel Personalizar clúster. Después de elegir la red, el selector de subredes 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 su uso en proyectos de servicio conectados. Consulta la descripción general de la VPC compartida para obtener información de referencia.

Debes crear tu clúster de Dataproc en un proyecto. En la situación de VPC compartida, el proyecto será un proyecto de servicio. Debes hacer referencia al número del proyecto. Para encontrar el número de proyecto, sigue estos pasos:

  1. Abre la página Configuración de IAM y administración en Cloud Console. Selecciona el proyecto en el que crearás el clúster de Dataproc y copia el ID del proyecto.

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 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 el selector de proyectos 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 Nuevos principales.

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

    3. Haz clic en Guardar.

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.

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 que la red en la región en la que 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 la red automática a ‑‑network flag para crear un clúster que Usa 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. Pasa la marca ‑‑subnet en 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 a habilitar solo 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.

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 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: