En esta página se muestra cómo montar un segmento de Cloud Storage como volumen de almacenamiento mediante montajes de volumen de Cloud Run.
Al montar el segmento como un volumen en Cloud Run, el contenido del segmento se presenta como archivos en el sistema de archivos del contenedor. Después de montar el bucket como un volumen, puedes acceder a él como si fuera un directorio de tu sistema de archivos local. Para ello, utiliza las operaciones y bibliotecas del sistema de archivos de tu lenguaje de programación en lugar de las bibliotecas de cliente de la API de Google.
Puedes montar tu volumen como de solo lectura y también puedes especificar opciones de montaje para tu volumen.
Requisitos de memoria
Los montajes de volúmenes de Cloud Storage usan la memoria del contenedor de Cloud Run para las siguientes actividades:En todo el almacenamiento en caché de Cloud Storage FUSE, Cloud Run usa el ajuste de caché de estadísticas con un tiempo de vida (TTL) de 60 segundos de forma predeterminada. El tamaño máximo predeterminado de la caché de estadísticas es de 32 MB y el de la caché de tipos es de 4 MB.
Al leer, Cloud Storage FUSE también consume memoria que no es de las cachés de estadísticas y tipos, como una matriz de 1 MiB por cada archivo que se lee y por cada goroutine.
Cuando se escribe en Cloud Storage, todo el archivo se almacena en la memoria de Cloud Run antes de que se escriba en Cloud Storage.
Limitaciones
Como Cloud Run usa Cloud Storage FUSE para montar este volumen, hay algunas cosas que debes tener en cuenta al montar un segmento de Cloud Storage como volumen:
- Cloud Storage FUSE no proporciona control de simultaneidad para varias escrituras (bloqueo de archivos) en el mismo archivo. Cuando varios procesos de escritura intentan sustituir un archivo, se aplica el último y se pierden todos los anteriores.
- Cloud Storage FUSE no es un sistema de archivos totalmente compatible con POSIX. Para obtener más información, consulta la documentación de FUSE de Cloud Storage.
Rutas no permitidas
Cloud Run no te permite montar un volumen en /dev
,
/proc
o /sys
, ni en sus subdirectorios.
Antes de empezar
Necesitas un segmento de Cloud Storage para montarlo como volumen.
Para obtener un rendimiento óptimo de lectura/escritura en Cloud Storage, consulta Optimizar el rendimiento del ancho de banda de la red de FUSE de Cloud Storage.
Roles obligatorios
Para obtener los permisos que necesitas para configurar los montajes de volúmenes de Cloud Storage, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Desarrollador de Cloud Run (
roles/run.developer
) en el servicio Cloud Run -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad de servicio
Para obtener los permisos que necesita tu identidad de servicio para acceder al archivo y al segmento de Cloud Storage, pide a tu administrador que le conceda a la identidad de servicio el rol Lector de objetos de almacenamiento (roles/storage.objectViewer
). Si la identidad de servicio también necesita realizar operaciones de escritura en un segmento, asigna el rol Usuario de objetos de almacenamiento (roles/storage.objectUser
).
Para obtener más información sobre los roles y permisos de Cloud Storage, consulta Gestión de identidades y accesos para Cloud Storage.
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 servicio de Cloud Run interactúa con APIs, como las bibliotecas de cliente de Cloud, consulta la guía de configuración de la identidad del servicio.Google Cloud 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 de Cloud Storage
Puedes montar varios contenedores en diferentes rutas de montaje. También puedes montar un volumen en más de un contenedor usando la misma ruta de montaje o rutas diferentes en los contenedores.
Si usas varios contenedores, primero especifica los volúmenes y, a continuación, los montajes de volumen de cada contenedor.
Para montar volúmenes, se necesita el entorno de ejecución de segunda generación. Cloud Run selecciona automáticamente el entorno de ejecución de segunda generación para tu servicio si no se ha configurado ningún entorno de ejecución explícitamente.
Consola
En la Google Cloud consola, ve a Cloud Run:
Seleccione Servicios en el menú y haga clic en Implementar contenedor para configurar un nuevo servicio. Si vas a configurar un servicio que ya tienes, haz clic en él y, a continuación, en Editar y desplegar nueva revisión.
Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.
Haz clic en la pestaña Volúmenes.
- Haz clic en Añadir volumen.
- En el menú desplegable Tipo de volumen, selecciona Segmento de Cloud Storage como tipo de volumen.
- En el campo Nombre del volumen, introduce el nombre que quieras usar para el volumen.
- Busca y selecciona el segmento de Cloud Storage que se va a usar para el volumen o, si quieres, crea un segmento.
- Si quieres que el contenedor sea de solo lectura, selecciona la casilla Solo lectura.
- Haz clic en Listo.
- Haga clic en la pestaña Contenedor:
- Haz clic en la pestaña Montajes de volúmenes.
- Haz clic en Montar volumen.
- Selecciona el volumen de almacenamiento en el menú.
- Especifica la ruta en la que quieres montar el volumen.
- Haz clic en Hecho.
Haz clic en Crear o en Implementar.
gcloud
Para añadir un volumen y montarlo, sigue estos pasos:
gcloud run services update SERVICE \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio.
- MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo,
/mnt/my-volume
. - VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
- BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
Para montar tu volumen como volumen de solo lectura, haz lo siguiente:
--add-volume=name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,readonly=true
Si usas varios contenedores, primero especifica los volúmenes y, a continuación, los puntos de montaje de volumen de cada contenedor:
gcloud run services update SERVICE \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \ --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
YAML
Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:
gcloud run services describe SERVICE --format export > service.yaml
Haga los cambios necesarios.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/execution-environment: gen2 spec: containers: - image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATH volumes: - name: VOLUME_NAME csi: driver: gcsfuse.run.googleapis.com readOnly: IS_READ_ONLY volumeAttributes: bucketName: BUCKET_NAME
Haz los cambios siguientes:
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo,
/mnt/my-volume
. - VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
- IS_READ_ONLY:
True
para que el volumen sea de solo lectura oFalse
para permitir escrituras. - BUCKET_NAME: el nombre del segmento de Cloud Storage.
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
Crea o actualiza el servicio con el siguiente comando:
gcloud run services replace service.yaml
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Añade lo siguiente a un recursogoogle_cloud_run_v2_service
en tu configuración de Terraform: resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
gcs {
bucket = google_storage_bucket.default.name
read_only = IS_READ_ONLY
}
}
}
}
resource "google_storage_bucket" "default" {
name = "BUCKET_NAME"
location = "REGION"
}
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio de Cloud Run.
- REGION: la Google Cloud región.
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - VOLUME_NAME: el nombre que quieras darle al 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
. - IS_READ_ONLY:
True
para que el volumen sea de solo lectura oFalse
para permitir escrituras. - BUCKET_NAME: el nombre del segmento de Cloud Storage.
Leer y escribir en un volumen
Si usas la función de montaje de volúmenes de Cloud Run, puedes acceder a un volumen montado con las mismas bibliotecas de tu lenguaje de programación que usas para leer y escribir archivos en tu sistema de archivos local.
Esto es especialmente útil si usas un contenedor que espera que los datos se almacenen en el sistema de archivos local y que utiliza operaciones normales del sistema de archivos para acceder a ellos.
En los siguientes fragmentos se presupone que se ha montado un volumen con mountPath
definido como /mnt/my-volume
.
Nodejs
Usa el módulo File System para crear un archivo o añadir contenido a un archivo ya creado
en el volumen, /mnt/my-volume
:
var fs = require('fs'); fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });
Python
Escribe en un archivo que se encuentra en el volumen, /mnt/my-volume
:
f = open("/mnt/my-volume/sample-logfile.txt", "a")
Go
Usa el paquete os
para crear un archivo nuevo que se guarde en el volumen /mnt/my-volume
:
f, err := os.Create("/mnt/my-volume/sample-logfile.txt")
Java
Usa la clase Java.io.File
para crear un archivo de registro en el volumen /mnt/my-volume
:
import java.io.File; File f = new File("/mnt/my-volume/sample-logfile.txt");
Configuración de volúmenes mediante opciones de montaje
También puedes usar opciones de montaje para configurar varias propiedades del montaje de tu volumen. Las opciones de montaje disponibles te permiten configurar los ajustes de la caché, montar un directorio específico, habilitar el registro de depuración y otros comportamientos.
Especificar las opciones de montaje
Puedes especificar opciones de montaje con la CLI de Google Cloud, YAML o Terraform. Las opciones de montaje se separan con puntos y comas (;) en la CLI de Google Cloud y con comas en YAML, tal como se muestra en las siguientes pestañas:
gcloud
Para añadir un volumen y montarlo con opciones de montaje, sigue estos pasos:
gcloud beta run services update SERVICE \ --execution-environment gen2 \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="OPTION_1=VALUE_1;OPTION_N=VALUE_N" \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio.
- VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
- BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
- OPTION_1: la primera opción de montaje. Ten en cuenta que puedes especificar tantas opciones de montaje como necesites. Cada par de opciones de montaje y valor debe estar separado por un punto y coma.
- VALUE_1: el ajuste que quieras para la primera opción de montaje.
- OPTION_N: la siguiente opción de montaje.
- VALUE_N: la opción de montaje siguiente.
- MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo,
/cache
.
YAML
Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:
gcloud run services describe SERVICE --format export > service.yaml
Haga los cambios necesarios.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: annotations: run.googleapis.com/execution-environment: gen2 spec: containers: - image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATH volumes: - name: VOLUME_NAME csi: driver: gcsfuse.run.googleapis.com readOnly: IS_READ_ONLY volumeAttributes: bucketName: BUCKET_NAME mountOptions: OPTION_1=VALUE_1,OPTION_N=VALUE_N
Haz los cambios siguientes:
- IMAGE_URL: una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
- MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo,
/cache
. - VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
- IS_READ_ONLY:
True
para que el volumen sea de solo lectura oFalse
para permitir escrituras. - BUCKET_NAME: el nombre del segmento de Cloud Storage.
- OPTION_1: la primera opción de montaje. Ten en cuenta que puedes especificar tantas opciones de montaje como necesites. Cada par de opción de montaje y valor debe estar separado por una coma.
- VALUE_1: el ajuste que quieras para la primera opción de montaje.
- OPTION_N: la siguiente opción de montaje.
- VALUE_N: la opción de montaje siguiente.
- IMAGE_URL: una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como
Crea o actualiza el servicio con el siguiente comando:
gcloud run services replace service.yaml
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Añade lo siguiente a un recursogoogle_cloud_run_v2_service
en tu configuración de Terraform: resource "google_cloud_run_v2_service" "default" {
provider = google-beta
name = "SERVICE"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
gcs {
bucket = google_storage_bucket.default.name
read_only = IS_READ_ONLY
mount_options = ["OPTION_1=VALUE_1", "OPTION_N=VALUE_N", "OPTION_O"]
}
}
}
}
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio de Cloud Run.
- REGION: la Google Cloud región.
- IMAGE_URL: 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: el nombre que quieras darle al 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
. - IS_READ_ONLY:
True
para que el volumen sea de solo lectura oFalse
para permitir escrituras. - BUCKET_NAME: el nombre del segmento de Cloud Storage.
- OPTION_1: la primera opción de montaje. Ten en cuenta que puedes especificar tantas opciones de montaje como necesites. Cada par de opción de montaje y valor debe estar separado por una coma.
- VALUE_1: el ajuste que quieras para la primera opción de montaje.
- OPTION_N: la segunda opción de montaje, si procede.
- VALUE_N: el ajuste de la segunda opción de montaje.
- OPTION_O: la tercera opción de montaje, si procede. Algunas opciones de montaje no tienen ningún valor.
Opciones de montaje habituales
Las opciones de montaje se suelen usar para lo siguiente:
- Configurar los ajustes de caché
- Montar solo un directorio específico del segmento de Cloud Storage
- Configurar la propiedad del volumen (
uid
,gid
) - Desactivar directorios implícitos
- Especifica los niveles de registro de depuración.
Configurar los ajustes de almacenamiento en caché
Puedes cambiar los ajustes de almacenamiento en caché de tu volumen configurando las opciones de montaje relacionadas con el almacenamiento en caché. En la siguiente tabla se muestran los ajustes y los valores predeterminados de Cloud Run :
Configuración de la caché | Descripción | Predeterminado |
---|---|---|
metadata-cache-ttl-secs |
Tiempo de vida (TTL) en segundos de las entradas de metadatos almacenadas en caché. Por ejemplo, metadata-cache-ttl-secs=120s . Para usar el archivo más actualizado, especifica el valor 0 . Para usar siempre la versión almacenada en caché, especifica el valor -1 . Para obtener más información, consulta Configurar la invalidación de caché. |
60 |
stat-cache-max-size-mb |
Tamaño máximo en mebibytes (MiB) que puede usar la caché de estadísticas. La caché de estadísticas siempre se mantiene por completo en la memoria, lo que afecta al consumo de memoria. Especifica el valor 32 si tu carga de trabajo incluye hasta 20.000 archivos. Si tu carga de trabajo usa más de 20.000 archivos, aumenta el tamaño en valores de 10 por cada 6000 archivos adicionales, donde la caché de estadísticas usa una media de 1500 MiB por archivo.Para permitir que la caché de estadísticas use toda la memoria que necesite, especifica un valor de -1 . Para inhabilitar la caché de estadísticas, especifica el valor 0 . |
32 |
type-cache-max-size-mb |
Tamaño máximo en MiB por directorio que puede usar la caché de tipos. La caché de tipos siempre se mantiene por completo en la memoria, lo que afecta al consumo de memoria. Especifica el valor 4 si el número máximo de archivos de un mismo directorio del bucket que vas a montar es de 20.000 o menos. Si el número máximo de archivos de un directorio que vas a montar es superior a 20.000, aumenta el valor en 1 por cada 5000 archivos, lo que supone una media de unos 200 bytes por archivo.Para que la caché de tipos use toda la memoria que necesite, especifica el valor -1 .Para inhabilitar la caché de tipos, especifica el valor 0 . |
4 |
El siguiente comando de la CLI de Google Cloud define el valor de metadata-cache-ttl-secs
en 120 segundos y aumenta la capacidad de la caché de estadísticas y de tipos a 52
y 7
MiB, respectivamente:
gcloud beta run services update SERVICE \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="metadata-cache-ttl-secs=120;stat-cache-max-size-mb=52;type-cache-max-size-mb=7" \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio.
- VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
- BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
- MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo,
/cache
.
Habilitar el registro de depuración
De forma predeterminada, Cloud Storage FUSE registra los eventos que tienen Info
o más. Puede cambiar la configuración de registro con cualquiera de los siguientes niveles de gravedad de registro, que se indican en orden de menor a mayor:
trace
debug
info
warning
error
- Para desactivar todos los registros, especifica el valor
off
.
Cuando especifica un nivel de gravedad, Cloud Storage FUSE genera registros de eventos que tienen un nivel de gravedad igual o superior al especificado. Por ejemplo, si especificas el nivel warning
, Cloud Storage FUSE genera registros de advertencias y errores.
Si se define la gravedad de los registros en niveles superiores a info
, el rendimiento puede verse afectado y se puede generar una gran cantidad de datos de registro, por lo que te recomendamos que lo hagas solo cuando sea necesario.
La siguiente línea de comandos activa el registro de depuración:
gcloud beta run services update SERVICE \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="log-severity=debug" \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio.
- VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
- BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
- MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo,
/cache
.
Inhabilitar directorios implícitos
Para que Cloud Storage se parezca más a un sistema de archivos estándar, Cloud Run habilita los directorios implícitos de forma predeterminada al montar un segmento de Cloud Storage. Puedes desactivar los directorios implícitos con la opción de montaje implicit-dirs
. Si inhabilitas los directorios implícitos, puedes mejorar el rendimiento y reducir los costes, pero esto conlleva ciertas concesiones en cuanto a la compatibilidad.
La función de directorios implícitos permite a Cloud Run reconocer archivos de Cloud Storage que ya existan y cuyos nombres de archivo imiten una estructura de directorios, como /mydir/myfile.txt
. Si inhabilitas los directorios implícitos, Cloud Run no podrá enumerar ni leer esos archivos.
Si desactivas los directorios implícitos, se reduce el número de solicitudes a Cloud Storage, lo que puede mejorar el rendimiento y el coste de tu aplicación. Consulta la documentación sobre archivos y directorios de Cloud Storage FUSE para obtener más información.
La siguiente línea de comandos inhabilita los directorios implícitos:
gcloud beta run services update SERVICE \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="implicit-dirs=false" \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio.
- VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
- BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
- MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo,
/cache
.
Montar un directorio específico de tu segmento de Cloud Storage
De forma predeterminada, Cloud Run monta todo el segmento de Cloud Storage, lo que da a los servicios de Cloud Run acceso a todo su contenido. En algunos casos, puede que solo quieras montar un directorio específico. Por ejemplo, si el contenedor contiene un gran número de archivos, montar un directorio específico puede mejorar el rendimiento.
También puedes implementar esta opción para aislar los servicios, de forma que cada uno tenga acceso a un directorio diferente del segmento de almacenamiento.
La siguiente línea de comandos especifica el directorio que se va a montar:
gcloud beta run services update SERVICE \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="only-dir=images" \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio.
- VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
- BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
- MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo,
/cache
.
Pon el volumen UID
y GID
Usa las opciones de montaje uid
y gid
para cambiar el identificador de usuario y el identificador de grupo del volumen. Esto resulta útil si quieres asignar la propiedad del archivo a un usuario o grupo específico que coincida con la identidad de uno o varios contenedores en ejecución. De forma predeterminada, los volúmenes son propiedad de la raíz.
La siguiente línea de comandos define uid
y gid
:
gcloud beta run services update SERVICE \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="uid=UID;gid=GID" \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio.
- VOLUME_NAME: el nombre que quieras darle al volumen. El valor VOLUME_NAME se usa para asignar el volumen al montaje del volumen.
- BUCKET_NAME: el nombre de tu segmento de Cloud Storage.
- MOUNT_PATH: la ruta relativa en la que vas a montar el volumen. Por ejemplo,
/cache
.
Definir otras opciones de montaje
A continuación, se muestra la lista completa de todas las opciones de montaje compatibles con Cloud Run.
Directorio
implicit-dirs
only-dir
rename-dir-limit
Depuración
debug_fuse_errors
debug_fuse
debug_gcs
debug-invariants
debug_mutex
Caché
stat-cache-capacity
stat-cache-ttl
type-cache-ttl
enable-nonexistent-type-cache
Permisos
uid
gid
file-mode
dir-mode
Otros
billing-project
client-protocol
experimental-enable-json-read
experimental-opentelemetry-collector-address
http-client-timeout
limit-bytes-per-sec
limit-ops-per-sec
max-conns-per-host
max-idle-conns-per-host
max-retry-sleep
-o
retry-multiplier
sequential-read-size-mb
stackdriver-export-interval
Para consultar la documentación completa de las opciones de montaje admitidas, consulta las opciones de montaje de la línea de comandos de FUSE de Cloud Storage.
Ver los ajustes de montajes del volumen
Consola
En la Google Cloud consola, ve a la página de servicios de Cloud Run:
En la lista de servicios, haz clic en el servicio que te interese para abrir la página Detalles del servicio.
Haz clic en la pestaña Volúmenes.
Busca el ajuste Montajes del volumen en la página de detalles de los volúmenes.
gcloud
Usa el siguiente comando:
gcloud run services describe SERVICE_NAME
Busca el ajuste Volume mounts en la configuración devuelta.
Optimizar el rendimiento del ancho de banda de la red de Cloud Storage FUSE
Para mejorar el rendimiento de lectura y escritura, conecta tu servicio de Cloud Run a una red de VPC mediante VPC directa y enruta todo el tráfico saliente a través de tu red de VPC. Puedes hacerlo de cualquiera de las siguientes formas:
- Habilita Acceso privado de Google y asegúrate de que el parámetro
vpc-egress
tenga el valorall-traffic
. - Usa una de las opciones descritas en la página de prácticas recomendadas de redes, en la sección Tráfico interno a una API de Google.
Tiempo de inicio de los contenedores y montajes de Cloud Storage FUSE
Usar Cloud Storage FUSE puede aumentar ligeramente el tiempo de arranque en frío de tu contenedor de Cloud Run, ya que Cloud Run inicia el montaje del volumen antes de iniciar los contenedores. El contenedor solo se iniciará si Cloud Storage FUSE se monta correctamente.
Ten en cuenta que Cloud Storage FUSE solo monta un volumen correctamente después de establecer una conexión con Cloud Storage. Cualquier retraso en la red puede influir en el tiempo de inicio del contenedor. Por lo tanto, si el intento de conexión falla, Cloud Storage FUSE no se montará y el servicio de Cloud Run no se iniciará. Además, si Cloud Storage FUSE tarda más de 30 segundos en montarse, el servicio de Cloud Run no se iniciará porque Cloud Run tiene un tiempo de espera total de 30 segundos para realizar todos los montajes.
Características de rendimiento de Cloud Storage FUSE
Si defines dos volúmenes, cada uno de ellos apuntando a un segmento diferente, se iniciarán dos procesos de Cloud Storage FUSE. Los montajes y los procesos se producen en paralelo.
Las operaciones que usan Cloud Storage FUSE se ven afectadas por el ancho de banda de la red, ya que Cloud Storage FUSE se comunica con Cloud Storage mediante la API de Cloud Storage. Algunas operaciones, como enumerar el contenido de un contenedor, pueden ser lentas si el ancho de banda de la red es bajo. Del mismo modo, leer un archivo grande puede llevar tiempo, ya que también está limitado por el ancho de banda de la red.
Cuando escribes en un segmento, Cloud Storage FUSE almacena el objeto por completo en la memoria. Esto significa que la escritura de archivos grandes está limitada por la cantidad de memoria disponible para la instancia del contenedor (el límite máximo de memoria del contenedor es de 32 GiB).
La escritura se vacía en el segmento solo cuando realizas una close
o una fsync
: el objeto completo se sube al segmento. La única excepción a la regla de que un objeto se vuelve a subir por completo al segmento es el caso de un archivo con contenido añadido cuando el archivo tiene 2 MiB o más.
Para obtener más información, consulta los siguientes recursos:
- Documentación de Cloud Storage FUSE
- Rendimiento de Cloud Storage FUSE
- Semántica de Cloud Storage FUSE
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 servicio de un solo contenedor, ejecuta el siguiente comando:
gcloud run services update SERVICE \ --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 run services update SERVICE \ --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 run services update SERVICE \ --remove-volume VOLUME_NAME \ --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH