Configuración de red del clúster de Managed Service para Apache Spark

Descripción: Comprende la configuración de red del clúster de Dataproc. Implementar rutas de VPC, reglas de firewall, Acceso privado a Google y VPC compartida para implementaciones seguras solo con IP internas

En esta página, se explican los requisitos y las opciones de configuración de red de los clústeres de Managed Service para Apache Spark.

Requisitos de conectividad de Managed Service para Apache Spark

Tu clúster de Managed Service para Apache Spark debe estar en una red de nube privada virtual que cumpla con los requisitos de ruta y firewall para acceder de forma segura a las APIs de Google y a otros recursos.

Requisitos de ruta

Para establecer la comunicación entre el agente de Managed Service para Apache Spark que se ejecuta en las VMs del clúster y la API de control de Dataproc, la red de VPC del clúster debe tener una ruta a la puerta de enlace de Internet. Esto también es obligatorio para los clústeres que solo tienen IP interna.

De forma predeterminada, los clústeres de la versión de imagen 2.2 y posteriores de Managed Service para Apache Spark aprovisionan VMs solo con direcciones IP internas. Managed Service para Apache Spark habilita automáticamente el Acceso privado a Google (PGA) en la subred del clúster para permitir que las VMs del clúster con direcciones IP internas accedan a las APIs y los servicios de Google con una ruta predeterminada generada por el sistema a la puerta de enlace de Internet predeterminada.

Regla Tipo Rango de IP de destino Prioridad Límites de permisos Próximo salto
default-route-[id] Estática 0.0.0.0/0 1000 - Puerta de enlace de Internet predeterminada

El PGA garantiza que el tráfico del clúster no atraviese la Internet pública ni salga de los centros de datos de Google (consulta el diagrama de ejemplo de PGA).

No se recomienda borrar la ruta predeterminada a la puerta de enlace de Internet. Si quieres controlar el acceso de red a Internet, usa reglas o políticas de firewall en su lugar.

Si borraste la ruta predeterminada a la puerta de enlace de Internet, debes agregar una ruta predeterminada. El rango de IP de destino debe ser 0.0.0.0/0, ya que los rangos de IP de la API de control de Dataproc no son estáticos.

Requisitos del firewall

La red de VPC de tu clúster de Managed Service para Apache Spark debe permitir de forma explícita el siguiente tráfico:

  • Tráfico iniciado desde las VMs del clúster de Managed Service para Apache Spark a la API de control de Dataproc y a otras VMs del clúster de Managed Service para Apache Spark. Este tráfico se permite de forma predeterminada desde la regla implícita de permitir todo de salida de la red de VPC. Si agregaste reglas de firewall de denegación de salida que anulan las anteriores, crea una regla de firewall de permiso de salida.

  • El tráfico de respuesta de la API de control de Dataproc a las VMs del clúster de Managed Service para Apache Spark se permite de forma predeterminada debido a la con estado del firewall de la red de VPC.

  • Tráfico que reciben las VMs del clúster de Managed Service para Apache Spark de otras VMs del clúster de Managed Service para Apache Spark. Este tráfico se rechazará de forma predeterminada desde la regla de firewall implícita de rechazo de entrada de la red de VPC. Debes crear una regla de firewall de permiso de entrada.

Prácticas recomendadas:

  • Usa etiquetas de red para las VMs del clúster de Managed Service para Apache Spark, de modo que puedas restringir la aplicabilidad de las reglas de firewall requeridas solo a las VMs del clúster de Managed Service para Apache Spark. Si no usas etiquetas de red, puedes especificar los destinos por la cuenta de servicio que se usa para las VMs del clúster. De lo contrario, puedes configurar reglas de firewall para que se apliquen a todas las VMs de la red de VPC.
  • Para obtener un acceso y una conectividad de red más seguros, usa etiquetas seguras en lugar de etiquetas de red para definir los orígenes y destinos de las reglas de firewall.

Crea una regla de firewall de permiso 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 Managed Service para Apache Spark, esta debe tener las siguientes características:

  • El parámetro sources especifica las fuentes de los paquetes. Todas las VMs del clúster de Managed Service para Apache Spark deben poder comunicarse entre sí. Puedes identificar las VMs del clúster por rango de direcciones IP (el rango principal de la subred del clúster de Managed Service para Apache Spark), etiquetas de red o cuentas de servicio asociadas con las VMs.

  • Los destinos de la regla deben identificar las VMs del clúster. Los destinos pueden ser todas las VMs de la red de VPC, o puedes identificar las VMs por etiqueta de red de destino o cuenta de servicio de destino.

  • La regla debe incluir los siguientes protocolos y puertos:

    • TCP (todos los puertos, del 0 al 65535)
    • UDP (todos los puertos, del 0 al 65535)
    • ICMP

    Managed Service para Apache Spark usa servicios que se ejecutan en varios puertos. Especificar todos los puertos ayuda a que los servicios se ejecuten correctamente.

  • La prioridad de la regla debe ser mayor que la de cualquier regla de firewall de denegación de entrada que se aplique a los mismos orígenes y destinos.

Crea una regla de firewall de permiso de salida

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

  • El parámetro destinations especifica los destinos de los paquetes. Todas las VMs del clúster de Managed Service para Apache Spark deben poder iniciar el tráfico entre sí y con la API de control de Dataproc. Debido a que las direcciones IP de la API de control no son estáticas, el destino se debe especificar por el rango de IP 0.0.0.0/0.

  • Los destinos de la regla deben identificar las VMs del clúster. Los destinos pueden ser todas las VMs de la red de VPC, o puedes identificar las VMs por etiqueta de red de destino o cuenta de servicio de destino.

  • La regla debe incluir los siguientes protocolos y puertos:

    • TCP (todos los puertos, del 0 al 65535)
    • UDP (todos los puertos, del 0 al 65535)
    • ICMP

    Managed Service para Apache Spark usa servicios que se ejecutan en varios puertos. Especificar todos los puertos ayuda a que los servicios se ejecuten correctamente.

  • La prioridad de la regla debe ser mayor que la prioridad de cualquier regla de firewall de denegación de salida que se aplique a los mismos destinos y objetivos.

Diagnostica las reglas de firewall de red de VPC

Para auditar los paquetes que no procesan las reglas de firewall de mayor prioridad, puedes crear las siguientes dos reglas de firewall de denegación 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 los paquetes que no se procesaron con reglas de firewall de prioridad más alta y, posiblemente, más específicas. 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 y determina si deseas 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 Managed Service para Apache Spark, esto puede ser un indicador de que se deben 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 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 de reglamentaciones, 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

Consola deGoogle Cloud

Para configurar la red, sigue estos pasos:

  1. Abre la página Crear clúster.
  2. Haz clic en Configuración adicional para expandir esa sección.
  3. Edita la configuración de red.
  4. En el panel que se abre, selecciona tu red y subred. La casilla de verificación Solo IP internas está habilitada de forma predeterminada.

gcloud 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 en la que se crea el clúster.

--network example. Como las redes automáticas se crean con subredes en cada región, y cada subred recibe el nombre de la red, puedes pasar el nombre de la red de VPC en modo automático a la marca ‑‑network. El clúster usará la subred de VPC en 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 una subred de red de VPC en modo automático o personalizado en la región del clúster. Especifica la ruta de acceso completa al 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 Managed Service para Apache Spark 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 Managed Service para Apache Spark se denomina proyecto de servicio.

  1. Busca el número de proyecto del clúster de Managed Service para Apache Spark:

    1. Abre la página Configuración de IAM y administración en la consola deGoogle Cloud . Selecciona el proyecto en el que crearás el clúster de Managed Service para Apache Spark. 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. Conecta el proyecto con el clúster de Managed Service para Apache Spark al proyecto host.

    3. Configura la cuenta de servicio del agente de servicio de Managed Service para Apache Spark (service-[project-number]@dataproc-accounts.) para que tenga el rol de Usuario de red en 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 elegir el nuevo proyecto host.

      3. Haz clic en Otorgar acceso.

      4. Completa el formulario Otorgar acceso:

        1. Agregar principales: Ingresa la cuenta de servicio.

        2. Asigna roles: Inserta "Compute Network" en el cuadro de filtro y, luego, selecciona el rol Usuario de red de Compute.

        3. Haz clic en Guardar.

  3. Después de 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 Managed Service para Apache Spark 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 Managed Service para Apache Spark se denomina proyecto de servicio.

  1. Busca el número de proyecto del clúster de Managed Service para Apache Spark:

    1. Abre la página Configuración de IAM y administración en la consola deGoogle Cloud . Selecciona el proyecto en el que crearás el clúster de Managed Service para Apache Spark. 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. Conecta el proyecto con el clúster de Managed Service para Apache Spark al proyecto host.

    3. Configura la cuenta de servicio del agente de servicio de Managed Service para Apache Spark (service-[project-number]@dataproc-accounts.) para que tenga el rol de Usuario de red en el proyecto host:

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

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

      3. Haz clic en la red que contiene la subred que usará tu clúster de Managed Service para Apache Spark.

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

          1. Agregar principales: Ingresa la cuenta de servicio.

          2. Asigna roles: Inserta "Compute Network" en el cuadro de filtro y, luego, selecciona el rol Usuario de red de Compute.

          3. Haz clic en Guardar.

  3. Después de 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 solo de IP interna

Esta sección se aplica a los clústeres de versiones de imágenes anteriores a 2.2. Las VMs de clúster con direcciones solo de IP interna están habilitadas de forma predeterminada cuando se crean clústeres de Managed Service para Apache Spark con versiones de imagen 2.2 y posteriores.

Puedes usar la consola de Google Cloud , gcloud CLI o la API de Dataproc para crear un clúster solo con direcciones IP internas. Ten en cuenta que Managed Service para Apache Spark habilita automáticamente el Acceso privado a Google en la subred regional del clúster cuando se habilita solo la IP interna para permitir las conexiones a las APIs y los servicios de Google.

Consola deGoogle Cloud

Para configurar solo direcciones IP internas, sigue estos pasos:

  1. Abre la página Crear clúster.
  2. Haz clic en Configuración adicional para expandir esa sección.
  3. Edita la configuración de red.
  4. En el panel que se abre, selecciona tu red y subred. Selecciona la casilla de verificación Solo IP internas.

gcloud CLI

Puedes crear un clúster solo con direcciones IP internas con el comando gcloud dataproc clusters create y la marca ‑‑no-address.

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

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 usará la subred automática en la región del clúster.

Como alternativa, puedes usar la marca ‑‑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 con 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 usar el campo GceClusterConfig.internalIpOnly como parte de una solicitud clusters.create para crear un clúster que habilite 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
    },
    ...

Descarga dependencias con clústeres de solo IP interna

De forma predeterminada, los clústeres que solo tienen IP internas no tienen acceso a Internet. Por lo tanto, fallarán los trabajos que descarguen dependencias de Internet, como los que descargan paquetes de dependencias de Spark desde Maven Central. 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.

Managed Service para Apache Spark y redes de 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 Managed Service para Apache Spark:

¿Qué sigue?