En esta página se muestra cómo montar un recurso compartido de archivos NFS como un volumen en Cloud Run. Puedes usar cualquier servidor NFS, incluido tu propio servidor NFS alojado on-premise o en una VM de Compute Engine. Si aún no tienes un servidor NFS, te recomendamos Filestore, que es una oferta de NFS totalmente gestionada de Google Cloud.
Al montar el recurso compartido de archivos NFS como un volumen en Cloud Run, el recurso compartido de archivos se presenta como archivos en el sistema de archivos del contenedor. Una vez que hayas montado el recurso compartido de archivos como un volumen, podrás acceder a él como si fuera un directorio de 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 montar 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 montan automáticamente en modo sin bloqueo.
Antes de empezar
Para montar un servidor NFS como volumen en Cloud Run, asegúrate de que tienes lo siguiente:
- Una red de VPC en la que se ejecute tu servidor NFS o tu 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 creando una instancia de Filestore.
- Tu grupo de trabajadores de Cloud Run está asociado a la red 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 que ya tengas, asegúrate de que la configuración del cortafuegos de tu VPC permita que Cloud Run acceda a tu servidor NFS. Si empiezas con un proyecto nuevo, esta opción está activada de forma predeterminada. Si usas Filestore como servidor NFS, sigue la documentación de Filestore para crear una regla de salida de firewall que permita a Cloud Run acceder a Filestore.
- Define los permisos en tu sistema de archivos compartido 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 la unidad compartida. Por ejemplo, puedes usar el comandochown
para cambiar la propiedad de los archivos o directorios al ID de usuario específico con el que se ejecuta tu contenedor.
Roles obligatorios
Para ver una lista de los roles y permisos de gestión de identidades y accesos asociados a Cloud Run, consulta los artículos sobre roles de gestión de identidades y accesos de Cloud Run y permisos de gestión de identidades y accesos de Cloud Run. Si tu grupo de trabajadores de Cloud Run interactúa con APIs deGoogle Cloud , como las bibliotecas de cliente de Cloud, consulta la guía de configuración de identidades de servicio. Para obtener más información sobre cómo conceder roles, consulta los artículos sobre permisos de implementación y gestión del acceso.
Montar un volumen NFS
Puedes montar varios servidores NFS, instancias de Filestore u otros tipos de volúmenes en diferentes rutas de montaje.
Si usas varios contenedores, primero especifica los volúmenes y, a continuación, los puntos de montaje de volumen de cada contenedor.
Configura un montaje de volumen NFS con la Google Cloud consola, la CLI de Google Cloud o Terraform.
Consola
En la Google Cloud consola, ve a Cloud Run:
Selecciona Grupos de trabajadores en el menú y haz clic en Implementar contenedor para configurar un nuevo grupo de trabajadores. Si vas a configurar un grupo de trabajadores que ya existe, haz clic en él y, a continuación, en Editar y desplegar nueva revisión.
Si vas a configurar un grupo de trabajadores, rellena la página inicial del grupo de trabajadores y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del grupo de trabajadores.
Haz clic en la pestaña Volúmenes.
- En Volúmenes, haz clic en Añadir volumen.
- En el desplegable Tipo de volumen, selecciona NFS.
- En el campo Nombre del volumen, introduce el nombre que quieras usar para el volumen.
- En el campo Servidor NFS, introduce el nombre de dominio o la ubicación (en el formato
IP_ADDRESS
) del recurso compartido de archivos NFS. - En el campo Ruta, introduce la ruta al directorio del servidor NFS que quieras montar.
- Haz clic en Listo.
- Haga clic en la pestaña Contenedor, busque el contenedor que quiera montar y despliegue sus detalles.
- Haz clic en la pestaña Montajes de volúmenes.
- Haz clic en Montar volumen.
- Selecciona el volumen NFS en el menú.
- Especifica la ruta en la que quieres montar el volumen.
- Haz clic en Montar volumen.
- Haz clic en Listo.
- En Volúmenes, haz clic en Añadir volumen.
Haz clic en Crear o en Implementar.
gcloud
Para añadir un volumen y montarlo, 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
Haz los cambios siguientes:
- WORKER_POOL: el nombre del grupo de trabajadores.
- VOLUME_NAME: el nombre que quieras darle al volumen.
- IP_ADDRESS: la ubicación del recurso compartido de archivos NFS.
- NFS_PATH: la ruta al recurso compartido de archivos NFS que empieza por una barra inclinada (por ejemplo,
/example-directory
). - MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo,
/mnt/my-volume
.
Para montar tu volumen como volumen de solo lectura, haz lo siguiente:
--add-volume name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH,readonly=true
Si usas varios contenedores, primero especifica los volúmenes y, a continuación, especifica los montajes de volumen 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
Para saber cómo aplicar o quitar una configuración de Terraform, consulta 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"]
}
}
Haz los cambios siguientes:
- WORKER_POOL: el nombre del grupo de trabajadores.
- REGION: la región Google Cloud , por ejemplo,
europe-west1
. - IMAGE_URL: referencia a la imagen del contenedor que contiene el grupo de trabajadores, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. - VOLUME_NAME: el nombre del volumen. El valor VOLUME_NAME se usa para asignar el volumen al punto de montaje del volumen.
- MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo,
/mnt/my-volume
. - NFS_PATH: la ruta al sistema de archivos compartidos NFS.
- IS_READ_ONLY:
True
para que el volumen sea de solo lectura oFalse
para permitir escrituras.
Ver la configuración de las variables de entorno del grupo de trabajadores
En la Google Cloud consola, ve a Cloud Run:
Haz clic en Grupos de trabajadores para ver la lista de grupos de trabajadores implementados.
Haz clic en el grupo de trabajadores que quieras examinar para que se muestre su panel de detalles.
Haz clic en la pestaña Contenedores para ver la configuración de los contenedores del grupo de trabajadores.
Solucionar problemas de NFS
Si tienes algún problema, comprueba lo siguiente:
- Tu grupo de trabajadores de Cloud Run está conectado a la red VPC en la que se encuentra el servidor NFS.
- No hay reglas de cortafuegos que impidan que Cloud Run acceda al servidor NFS.
- Si tu contenedor necesita escribir datos, asegúrate de que los permisos de la carpeta compartida NFS estén configurados para permitir que el usuario de tu contenedor escriba datos.
Tiempo de inicio del contenedor y montajes de volúmenes NFS
Si usas montajes de volúmenes NFS, el tiempo de arranque en frío de tu contenedor de Cloud Run puede aumentar ligeramente, ya que el montaje del volumen se inicia antes de que se inicien los contenedores. El contenedor solo se iniciará si NFS se monta correctamente.
Ten en cuenta que NFS solo monta un volumen correctamente después de establecer una conexión con el servidor y obtener un identificador de archivo. Si Cloud Run no puede establecer una conexión con el servidor, el grupo de trabajadores de Cloud Run no se iniciará.
Además, cualquier retraso en la red puede afectar al tiempo de inicio del contenedor, ya que Cloud Run tiene un tiempo de espera total de 30 segundos para todos los montajes. Si el montaje de NFS tarda más de 30 segundos, el grupo de trabajadores de Cloud Run no se iniciará.
Características de rendimiento de NFS
Si crea más de un volumen NFS, todos los volúmenes se montarán en paralelo.
Como 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 escritura se almacena en la memoria de Cloud Run hasta que se vacían los datos. Los datos se vacían en las siguientes circunstancias:
- Tu aplicación vacía los datos de los archivos de forma explícita mediante sync(2), msync(2) o fsync(3).
- Tu aplicación cierra un archivo con close(2).
- La presión de memoria obliga a reclamar recursos de memoria del sistema.
Para obtener más información, consulta la documentación de Linux sobre NFS.
Borrar y quitar volúmenes y montajes de volúmenes
Puedes borrar todos los volúmenes y los puntos de montaje, o bien quitar volúmenes y puntos de montaje concretos.
Borrar todos los volúmenes y los puntos de montaje de volúmenes
Para borrar todos los volúmenes y los montajes de volúmenes de tu grupo de trabajo 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 montajes 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
Eliminar volúmenes y montajes de volúmenes concretos
Para quitar un volumen, también debes quitar todos los montajes de volumen que lo usen.
Para quitar volúmenes o montajes de volúmenes concretos, 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