Configura activaciones de volúmenes de NFS para grupos de trabajadores

En esta página, se muestra cómo activar un archivo compartido NFS como un volumen en Cloud Run. Puedes usar cualquier servidor NFS, incluido tu propio servidor NFS alojado de forma local o en una VM de Compute Engine. Si aún no tienes un servidor NFS, te recomendamos Filestore, que es una oferta de NFS completamente administrada de Google Cloud.

Activar el archivo compartido NFS como un volumen en Cloud Run presenta el archivo compartido como archivos en el sistema de archivos del contenedor. Después de activar el uso compartido de archivos como un volumen, puedes acceder a él como si fuera un directorio en tu sistema de archivos local, mediante las operaciones y bibliotecas del sistema de archivos de tu lenguaje de programación.

Rutas no permitidas

Cloud Run no te permite activar un volumen en /dev, /proc o /sys, ni en sus subdirectorios.

Limitaciones

  • Cloud Run no admite el bloqueo de NFS. Los volúmenes NFS se activan de forma automática en modo sin bloqueo.

Antes de comenzar

Para activar un servidor NFS como volumen en Cloud Run, asegúrate de tener lo siguiente:

  • Una red de VPC en la que se ejecuta el servidor NFS o la instancia de Filestore.
  • Un servidor NFS que se ejecuta en una red de VPC, con tu grupo de trabajadores de Cloud Run conectado a esa red de VPC. Si aún no tienes un servidor NFS, crea uno mediante la creación de una instancia de Filestore.
  • Tu grupo de trabajadores de Cloud Run está conectado a la red de VPC en la que se ejecuta tu servidor NFS. Para obtener el mejor rendimiento, usa VPC directa en lugar de conectores de VPC.
  • Si usas un proyecto existente, asegúrate de que la configuración de firewall de VPC permita que Cloud Run acceda al servidor NFS. (Si comienzas desde un proyecto nuevo, esto es así de forma predeterminada). Si usas Filestore como tu servidor NFS, sigue la documentación de Filestore para crear una regla de salida de firewall a fin de permitir que Cloud Run llegue a Filestore.
  • Establece los permisos en tu recurso compartido de archivos NFS remoto para permitir el acceso al usuario del contenedor. De forma predeterminada, Filestore proporciona acceso de lectura a todos los usuarios, pero restringe el acceso de escritura al usuario raíz (uid 0). Si tu contenedor requiere acceso de escritura y no se ejecuta como usuario raíz, debes usar un cliente conectado (que se ejecute como raíz) para modificar los permisos de uso compartido. Por ejemplo, puedes usar el comando chown para cambiar la propiedad de los archivos o directorios al ID de usuario específico con el que se ejecuta tu contenedor.

Roles requeridos

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu grupo de trabajadores de Cloud Run interactúa con lasGoogle Cloud APIs, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta permisos de implementación y administra el acceso.

Activa un volumen de NFS

Puedes activar varios servidores NFS, instancias de Filestore y otros tipos de volúmenes en diferentes rutas de activación.

Si usas varios contenedores, primero especifica los volúmenes y, luego, especifica las activaciones de volúmenes de cada contenedor.

Configura un volumen de NFS con la consola de Google Cloud , Google Cloud CLI o Terraform.

Console

  1. En la consola de Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Selecciona Grupos de trabajadores en el menú y haz clic en Implementar contenedor para configurar un grupo de trabajadores nuevo. Si quieres configurar un grupo de trabajadores existente, haz clic en el grupo de trabajadores y, luego, en Implementar y editar una nueva revisión.

  3. Si configuras un grupo de trabajadores nuevo, completa la página inicial del grupo de trabajadores y, luego, haz clic en Contenedores, volúmenes, Herramientas de redes y seguridad para expandir la página de configuración del grupo de trabajadores.

  4. Haz clic en la pestaña Volúmenes.

    imagen

    • En Volúmenes, haz clic en Agregar volumen.
      • En el menú desplegable Tipo de volumen, selecciona NFS.
      • En el campo Nombre del volumen, ingresa el nombre que deseas usar para el volumen.
      • En el campo Servidor NFS, ingresa el nombre o la ubicación de dominio (en el formato IP_ADDRESS) del archivo compartido NFS.
      • En el campo Ruta de acceso, ingresa la ruta al directorio del servidor NFS que deseas activar.
      • Haz clic en Listo.
    • Haz clic en la pestaña Contenedor, busca el contenedor que deseas activar y expande los detalles del contenedor.
    • Haz clic en la pestaña Activaciones de volúmenes.
    • Haz clic en Volumen de activación.
      • Selecciona el volumen de NFS en el menú.
      • Especifica la ruta en la que deseas activar el volumen.
      • Haz clic en Volumen de activación.
      • Haz clic en Listo.
  5. Haz clic en Crear o Implementar.

gcloud

  • Para agregar un volumen y activarlo, sigue estos pasos:

    gcloud beta run worker-pools update WORKER_POOL \
    --add-volume name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

    Reemplaza lo siguiente:

    • WORKER_POOL: El nombre de tu grupo de trabajadores.
    • VOLUME_NAME: Es el nombre que deseas darle a tu volumen.
    • IP_ADDRESS: Es la ubicación del archivo NFS compartido.
    • NFS_PATH: Es la ruta de acceso al archivo NFS compartido que comienza con una barra diagonal, por ejemplo, /example-directory.
    • MOUNT_PATH: Es la ruta de acceso relativa en la que activarás el volumen, por ejemplo, /mnt/my-volume.
  • Para activar el volumen como un volumen de solo lectura, sigue estos pasos:

    --add-volume name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH,readonly=true
  • Si usas varios contenedores, primero especifica los volúmenes y, luego, especifica las activaciones de volúmenes de cada contenedor:

    gcloud beta run worker-pools update WORKER_POOL \
    --add-volume name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \
    --container=CONTAINER_1 \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH \
    --container=CONTAINER_2 \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH2

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

resource "google_cloud_run_v2_worker_pool" "default" {
  name = "WORKER_POOL"
  location = "REGION"
  launch_stage = "BETA"

  template {
    containers {
      image = "IMAGE_URL"
      volume_mounts {
        name       = "VOLUME_NAME"
        mount_path = "MOUNT_PATH"
      }
    }
    vpc_access {
      network_interfaces {
        network    = "default"
        subnetwork = "default"
      }
    }

    volumes {
      name = "VOLUME_NAME"
      nfs {
        server    = google_filestore_instance.default.networks[0].ip_addresses[0]
        path      = "NFS_PATH"
        read_only = "IS_READ_ONLY"
      }
    }
  }
}

resource "google_filestore_instance" "default" {
  name     = "cloudrun-worker-pool"
  location = "REGION"
  tier     = "BASIC_HDD"

  file_shares {
    capacity_gb = 1024
    name        = "share1"
  }

  networks {
    network = "default"
    modes   = ["MODE_IPV4"]
  }
}

Reemplaza lo siguiente:

  • WORKER_POOL: El nombre del grupo de trabajadores.
  • REGION: La región Google Cloud , por ejemplo,europe-west1.
  • IMAGE_URL: Es una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • VOLUME_NAME: Es el nombre del volumen. El valor VOLUME_NAME se usa para asignar el volumen a la activación de volúmenes.
  • MOUNT_PATH: Es la ruta de acceso relativa en la que activarás el volumen, por ejemplo, /mnt/my-volume.
  • NFS_PATH: Es la ruta de acceso al recurso compartido de archivos NFS.
  • IS_READ_ONLY: True para que el volumen sea de solo lectura o False para permitir escrituras.

Visualiza la configuración de variable de entorno para el grupo de trabajadores

  1. En la consola de Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en Grupos de trabajadores para ver la lista de grupos de trabajadores implementados.

  3. Haz clic en el grupo de trabajadores que deseas examinar para mostrar su panel de detalles.

  4. Haz clic en la pestaña Contenedores para mostrar la configuración del contenedor del grupo de trabajadores.

Solución de problemas de NFS

Si tienes problemas, verifica lo siguiente:

  • Tu grupo de trabajadores de Cloud Run está conectado a la red de VPC en la que se encuentra el servidor NFS.
  • No hay reglas de firewall que impidan que Cloud Run llegue al servidor NFS.
  • Si tu contenedor necesita escribir datos, asegúrate de que los permisos del recurso compartido de NFS estén configurados para permitir escrituras del usuario del contenedor.

Tiempo de inicio del contenedor y activaciones de volúmenes de NFS

El uso de activaciones de volumen NFS puede aumentar ligeramente el tiempo de inicio en frío de tu contenedor de Cloud Run, ya que la activación de volumen se inicia antes de iniciar los contenedores. Tu contenedor se iniciará solo si NFS se activa correctamente.

Ten en cuenta que NFS activa un volumen correctamente solo después de establecer una conexión con el servidor y recuperar un identificador de archivo. Si Cloud Run no puede establecer una conexión con el servidor, no se iniciará el grupo de trabajadores de Cloud Run.

Además, cualquier retraso en la red puede afectar el tiempo de inicio del contenedor, ya que Cloud Run tiene un tiempo de espera total de 30 segundos para todas las activaciones. Si NFS tarda más de 30 segundos en activarse, no se podrá iniciar el grupo de trabajadores de Cloud Run.

Características de rendimiento de NFS

Si creas más de un volumen NFS, todos los volúmenes se activarán de forma paralela.

Dado que NFS es un sistema de archivos de red, está sujeto a límites de ancho de banda, y el acceso al sistema de archivos puede verse afectado por un ancho de banda limitado.

Cuando escribes en tu volumen NFS, la operación se almacena en la memoria de Cloud Run hasta que se borran los datos. Los datos se vacían en las siguientes circunstancias:

  • Tu aplicación vacía los datos de archivo de forma explícita con sync(2), msync(2) o fsync(3).
  • Tu aplicación cierra un archivo con close(2).
  • La presión de la memoria obliga a la recuperación de los recursos de memoria del sistema.

Para obtener más información, consulta la documentación de Linux sobre NFS.

Cómo borrar y quitar volúmenes y activaciones de volúmenes

Puedes borrar todos los volúmenes y los puntos de montaje, o bien quitar volúmenes y puntos de montaje individuales.

Borra todos los volúmenes y las activaciones de volúmenes

Para borrar todos los volúmenes y los puntos de montaje de volúmenes de tu grupo de trabajadores de un solo contenedor, ejecuta el siguiente comando:

gcloud beta run worker-pools update WORKER_POOL \
    --clear-volumes
    --clear-volume-mounts

Si tienes varios contenedores, sigue las convenciones de la CLI de sidecars para borrar volúmenes y activaciones de volúmenes:

gcloud beta run worker-pools update WORKER_POOL \
    --container=container1 \
    --clear-volumes
    -–clear-volume-mounts \
    --container=container2 \
    --clear-volumes \
    -–clear-volume-mounts

Cómo quitar volúmenes individuales y sus activaciones

Para quitar un volumen, también debes quitar todos los puntos de montaje que lo usen.

Para quitar volúmenes individuales o activaciones de volumen, usa las marcas remove-volume y remove-volume-mount:

gcloud beta run worker-pools update WORKER_POOL \
    --remove-volume VOLUME_NAME \
    --container=container1 \
    --remove-volume-mount MOUNT_PATH \
    --container=container2 \
    --remove-volume-mount MOUNT_PATH