En esta página, se muestra cómo activar un bucket de Cloud Storage como un volumen de almacenamiento mediante el uso de activaciones de volúmenes de Cloud Run.
Activar el bucket como un volumen en Cloud Run presenta el contenido del bucket como archivos en el sistema de archivos del contenedor. Después de activar el bucket como un volumen, accedes al bucket 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 en lugar de usar las bibliotecas cliente de la API de Google.
Puedes activar tu volumen como de solo lectura y también especificar opciones de activación para él.
Requisitos de la memoria
Las activaciones de volúmenes de Cloud Storage usan la memoria del contenedor de Cloud Run para las siguientes actividades:Para todo el almacenamiento en caché de Cloud Storage FUSE, Cloud Run usa de forma predeterminada la configuración de caché de estadísticas con un tiempo de actividad (TTL) de 60 segundos. El tamaño máximo predeterminado de la caché de estadísticas es de 32 MB, el tamaño máximo predeterminado del tipo caché es 4 MB.
Cuando se realiza la lectura, Cloud Storage FUSE también consume memoria aparte de las cachés de estadísticas y tipos, por ejemplo, un array de 1 MiB por cada archivo que se lee y por goroutines.
Cuando se escribe en Cloud Storage, todo el archivo se almacena en etapa intermedia en la memoria de Cloud Run antes de que el archivo se escriba en Cloud Storage.
Limitaciones
Dado que Cloud Run usa Cloud Storage FUSE para esta activación de volumen, debes tener en cuenta lo siguiente cuando actives un bucket de Cloud Storage como un volumen:
- Cloud Storage FUSE no proporciona control de simultaneidad para varias operaciones de escritura (bloqueo de archivos) en el mismo archivo. Cuando varias operaciones de escritura intentan reemplazar un archivo, la última escritura gana y todas las escrituras anteriores se pierden.
- Cloud Storage FUSE no es un sistema de archivos compatible con POSIX. Si deseas obtener más información, consulta la documentación de Cloud Storage FUSE.
Rutas no permitidas
Cloud Run no te permite activar un volumen en /dev
,
/proc
o /sys
, ni en sus subdirectorios.
Antes de comenzar
Necesitas un bucket de Cloud Storage para activarlo como volumen.
Para obtener un rendimiento óptimo de lectura y escritura en Cloud Storage, consulta Cómo optimizar el rendimiento del ancho de banda de la red de Cloud Storage FUSE.
Roles obligatorios
Para obtener los permisos que necesitas para configurar activaciones de volúmenes de Cloud Storage, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Desarrollador de Cloud Run (
roles/run.developer
) en el servicio de Cloud Run -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad del servicio
A fin de obtener los permisos que tu identidad de servicio necesita para acceder al archivo y al bucket de Cloud Storage, pídele a tu administrador que otorgue a la identidad del servicio el siguiente rol de IAM:
- Administrador de almacenamiento (
roles/storage.admin
)
Si deseas obtener más detalles sobre los roles y los permisos de Cloud Storage, consulta IAM para Cloud Storage.
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 servicio de Cloud Run interactúa con las APIs deGoogle Cloud , 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 Cloud Storage
Puedes activar varios buckets en diferentes rutas de activación. También puedes activar un volumen en más de un contenedor con las mismas (o diferentes) rutas de activación en diferentes contenedores.
Si usas varios contenedores, primero especifica los volúmenes y, luego, especifica las activaciones de volúmenes de cada contenedor.
Las activaciones de volúmenes requieren 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 configura ningún entorno de ejecución de forma explícita.
Console
En la consola de Google Cloud , ve a Cloud Run:
Selecciona Servicios en el menú y haz clic en Implementar contenedor para configurar un servicio nuevo. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en implementar y editar la nueva revisión.
Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedores, volúmenes, Herramientas de redes y seguridad para expandir la página de configuración del servicio.
Haz clic en la pestaña Volúmenes.
- Haz clic en Agregar volumen.
- En el menú desplegable Tipo de volumen, selecciona el bucket de Cloud Storage como el tipo de volumen.
- En el campo Nombre del volumen, ingresa el nombre que deseas usar para el volumen.
- Explora y selecciona el bucket de Cloud Storage que se usará para el volumen o, de forma opcional, crea un bucket nuevo.
- Si deseas que el bucket sea de solo lectura, selecciona la casilla de verificación de solo lectura.
- Haz clic en Listo.
- Haz clic en la pestaña Contenedor:
- Haz clic en la pestaña Activaciones de volúmenes.
- Haz clic en Volumen de activación.
- Selecciona el volumen de almacenamiento en el menú.
- Especifica la ruta en la que deseas activar el volumen.
- Haz clic en Listo.
Haz clic en Crear o Implementar.
gcloud
Para agregar un volumen y activarlo, 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
Reemplaza lo siguiente:
- SERVICE por el nombre de tu servicio
- MOUNT_PATH por la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/mnt/my-volume
. - VOLUME_NAME por el nombre que quieras para el volumen. El valor VOLUME_NAME se usa para asignar el volumen a la activación de volúmenes.
- BUCKET_NAME por el nombre del bucket de Cloud Storage.
Para activar el volumen como un volumen de solo lectura, sigue estos pasos:
--add-volume=name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,readonly=true
Si usas varios contenedores, primero especifica los volúmenes y, luego, especifica las activaciones 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 creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:
gcloud run services describe SERVICE --format export > service.yaml
Realiza actualizaciones según sea necesario.
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
Reemplazar
- IMAGE_URL por una referencia a la imagen del contenedor, como
us-docker.pkg.dev/cloudrun/container/hello:latest
Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - MOUNT_PATH por la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/mnt/my-volume
. - VOLUME_NAME por el nombre que quieras para el volumen. El valor VOLUME_NAME se usa para asignar el volumen a la activación de volúmenes.
- IS_READ_ONLY por
True
para que el volumen sea de solo lectura oFalse
para permitir escrituras. - BUCKET_NAME con el nombre del bucket de Cloud Storage.
- IMAGE_URL por una referencia a la imagen del contenedor, como
Crea o actualiza el servicio con el siguiente comando:
gcloud run services replace service.yaml
Terraform
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Agrega 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"
}
Reemplaza lo siguiente:
- SERVICE por el nombre del servicio de Cloud Run
- REGION con la Google Cloud región.
- IMAGE_URL por una referencia a la imagen del contenedor, como
us-docker.pkg.dev/cloudrun/container/hello:latest
Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - VOLUME_NAME por el nombre que quieras para el volumen. El valor VOLUME_NAME se usa para asignar el volumen a la activación de volúmenes.
- MOUNT_PATH por la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/mnt/my-volume
. - IS_READ_ONLY por
True
para que el volumen sea de solo lectura oFalse
para permitir escrituras. - BUCKET_NAME con el nombre del bucket de Cloud Storage.
Leer y escribir en un volumen
Si usas la función de activación de volúmenes de Cloud Run, accedes a un volumen activado con las mismas bibliotecas en tu lenguaje de programación que usas para leer y escribir archivos en tu sistema de archivos local.
Esto es muy útil si usas un contenedor existente que espera que los datos se almacenen en el sistema de archivos local y usa operaciones regulares del sistema de archivos para acceder a él.
En los siguientes fragmentos, se supone una activación de volumen con una mountPath
configurada como /mnt/my-volume
.
Node.js
Usa el módulo del sistema de archivos para crear un archivo nuevo o agregarlo a uno existente 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 mantenido 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 mantenido 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 con opciones de activación
De manera opcional, puedes usar opciones de activación para configurar varias propiedades de la activación del volumen. Las opciones de activación disponibles te permiten configurar los parámetros de configuración de la caché, activar un directorio específico, habilitar el registro de depuración y otros comportamientos.
Cómo especificar opciones de activación
Puedes especificar opciones de montaje con Google Cloud CLI, YAML o Terraform. Las opciones de montaje se separan con punto y coma (;) en Google Cloud CLI y con comas en YAML, como se muestra en las siguientes pestañas:
gcloud
Para agregar un volumen y activarlo con opciones de activación, 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
Reemplaza lo siguiente:
- SERVICE por el nombre de tu servicio
- VOLUME_NAME por el nombre que quieras para el volumen. El valor VOLUME_NAME se usa para asignar el volumen a la activación de volúmenes.
- BUCKET_NAME por el nombre del bucket de Cloud Storage.
- OPTION_1 con la primera opción de activación. Ten en cuenta que puedes especificar tantas opciones de activación como necesites, con cada par de opción de activación y valor separado por un punto y coma.
- VALUE_1 con el parámetro de configuración que desees para la primera opción de activación.
- OPTION_N con la siguiente opción de activación.
- VALUE_N con el parámetro de configuración para la siguiente opción de activación.
- MOUNT_PATH por la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/cache
.
YAML
Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:
gcloud run services describe SERVICE --format export > service.yaml
Realiza actualizaciones según sea necesario.
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
Reemplazar
- IMAGE_URL por 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 por la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/cache
. - VOLUME_NAME por el nombre que quieras para el volumen. El valor VOLUME_NAME se usa para asignar el volumen a la activación de volúmenes.
- IS_READ_ONLY por
True
para que el volumen sea de solo lectura oFalse
para permitir escrituras. - BUCKET_NAME con el nombre del bucket de Cloud Storage.
- OPTION_1 con la primera opción de activación. Ten en cuenta que puedes especificar tantas opciones de montaje como necesites, con cada opción de montaje y par de valores separados por una coma.
- VALUE_1 con el parámetro de configuración que desees para la primera opción de activación.
- OPTION_N con la siguiente opción de activación.
- VALUE_N con el parámetro de configuración para la siguiente opción de activación.
- IMAGE_URL por 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
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Agrega 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"]
}
}
}
}
Reemplaza lo siguiente:
- SERVICE por el nombre del servicio de Cloud Run
- REGION con la Google Cloud región.
- IMAGE_URL por 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 por el nombre que quieras para el volumen. El valor VOLUME_NAME se usa para asignar el volumen a la activación de volúmenes.
- MOUNT_PATH por la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/mnt/my-volume
. - IS_READ_ONLY por
True
para que el volumen sea de solo lectura oFalse
para permitir escrituras. - BUCKET_NAME con el nombre del bucket de Cloud Storage.
- OPTION_1 con la primera opción de activación. Ten en cuenta que puedes especificar tantas opciones de montaje como necesites, con cada opción de montaje y par de valores separados por una coma.
- VALUE_1 con el parámetro de configuración que desees para la primera opción de activación.
- OPTION_N con la segunda opción de activación, si corresponde.
- VALUE_N con el parámetro de configuración para la segunda opción de activación.
- OPTION_O con la tercera opción de soporte, si corresponde. Algunas opciones de montaje no tienen un valor.
Opciones de montaje de uso común
Las opciones de montaje se suelen usar para lo siguiente:
- Establecer la configuración de la caché
- Activa solo un directorio específico del bucket de Cloud Storage
- Configura la propiedad del volumen (
uid
,gid
) - Cómo desactivar los directorios implícitos
- Especifica los niveles de registro de depuración.
Cómo configurar el almacenamiento en caché
Puedes cambiar la configuración de almacenamiento en caché de tu volumen configurando las opciones de montaje relacionadas con el almacenamiento en caché. En la siguiente tabla, se enumeran los parámetros de configuración, junto con los valores predeterminados de Cloud Run :
Configuración de caché | Descripción | Predeterminado |
---|---|---|
metadata-cache-ttl-secs |
Tiempo de actividad (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 un valor de 0 . Para usar siempre la versión almacenada en caché, especifica un valor de -1 . Para obtener más información, consulta Configura 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ística siempre se mantiene por completo en la memoria, lo que afecta el consumo de memoria. Especifica un valor de 32 si tu carga de trabajo involucra 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 6,000 archivos adicionales, en los que la caché de estadísticas usa un promedio de 1,500 MiB por archivo.Para permitir que la caché de estadísticas use tanta memoria como sea necesario, especifica un valor de -1 . Para inhabilitar la caché de estadísticas, especifica un valor de 0 . |
32 |
type-cache-max-size-mb |
El tamaño máximo en MiB por directorio que puede usar el tipo de caché. La caché de tipos siempre se mantiene por completo en la memoria, lo que afecta el consumo de memoria. Especifica un valor de 4 si la cantidad máxima de archivos dentro de un solo directorio del bucket que activas contiene 20,000 archivos o menos. Si la cantidad máxima de archivos dentro de un solo directorio que activas contiene más de 20,000 archivos, aumenta el valor en 1 por cada 5,000 archivos, que es un promedio de 200 bytes por archivo.Para permitir que la caché de tipos use tanta memoria como sea necesario, especifica un valor de -1 .Para inhabilitar la caché de tipos, especifica un valor de 0 . |
4 |
El siguiente comando de Google Cloud CLI establece 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
Reemplaza lo siguiente:
- SERVICE por el nombre de tu servicio
- VOLUME_NAME por el nombre que quieras para el volumen. El valor VOLUME_NAME se usa para asignar el volumen a la activación de volúmenes.
- BUCKET_NAME por el nombre del bucket de Cloud Storage.
- MOUNT_PATH por la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/cache
.
Habilita el registro de depuración
De forma predeterminada, Cloud Storage FUSE registra los eventos que tienen Info
o un nivel superior. Puedes cambiar la configuración de registro con cualquiera de los siguientes niveles de gravedad del registro, enumerados de menor a mayor:
trace
debug
info
warning
error
- Para desactivar todo el registro, especifica el valor
off
.
Cuando especificas un nivel de gravedad, Cloud Storage FUSE genera registros para eventos que tienen un nivel de gravedad igual o superior al especificado. Por ejemplo, cuando especificas el nivel warning
, Cloud Storage FUSE genera registros para advertencias y errores.
Establecer la gravedad del registro en niveles superiores a info
puede afectar el rendimiento y generar una gran cantidad de datos de registro, por lo que recomendamos hacerlo 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
Reemplaza lo siguiente:
- SERVICE por el nombre de tu servicio
- VOLUME_NAME por el nombre que quieras para el volumen. El valor VOLUME_NAME se usa para asignar el volumen a la activación de volúmenes.
- BUCKET_NAME por el nombre del bucket de Cloud Storage.
- MOUNT_PATH por la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/cache
.
Inhabilita los 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 cuando se activa un bucket de Cloud Storage. Puedes desactivar los directorios implícitos con la opción de montaje implicit-dirs
. Inhabilitar los directorios implícitos puede mejorar el rendimiento y el costo, pero conlleva compensaciones en cuanto a la compatibilidad.
La función de directorios implícitos permite que Cloud Run reconozca archivos preexistentes de Cloud Storage cuyos nombres de archivo imitan una estructura de directorio, como /mydir/myfile.txt
. Si inhabilitas los directorios implícitos, Cloud Run no podrá enumerar ni leer esos archivos.
Desactivar los directorios implícitos reduce la cantidad de solicitudes a Cloud Storage, lo que podría mejorar el rendimiento y el costo de tu aplicación. Lee la documentación de 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
Reemplaza lo siguiente:
- SERVICE por el nombre de tu servicio
- VOLUME_NAME por el nombre que quieras para el volumen. El valor VOLUME_NAME se usa para asignar el volumen a la activación de volúmenes.
- BUCKET_NAME por el nombre del bucket de Cloud Storage.
- MOUNT_PATH por la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/cache
.
Activa un directorio específico dentro de tu bucket de Cloud Storage
De forma predeterminada, Cloud Run activa todo el bucket de Cloud Storage, lo que les da a los servicios de Cloud Run acceso a todo su contenido. En algunos casos, es posible que desees activar solo un directorio específico. Por ejemplo, en el caso de que el bucket contenga una gran cantidad de archivos, activar un directorio específico puede mejorar el rendimiento.
También puedes implementar esto para fines de aislamiento, en los que necesitas que diferentes servicios tengan acceso a diferentes directorios en el bucket de almacenamiento.
La siguiente línea de comandos especifica el directorio que se activará:
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
Reemplaza lo siguiente:
- SERVICE por el nombre de tu servicio
- VOLUME_NAME por el nombre que quieras para el volumen. El valor VOLUME_NAME se usa para asignar el volumen a la activación de volúmenes.
- BUCKET_NAME por el nombre del bucket de Cloud Storage.
- MOUNT_PATH por la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/cache
.
Cómo establecer 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 es útil si deseas establecer la propiedad del archivo en 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 establece 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
Reemplaza lo siguiente:
- SERVICE por el nombre de tu servicio
- VOLUME_NAME por el nombre que quieras para el volumen. El valor VOLUME_NAME se usa para asignar el volumen a la activación de volúmenes.
- BUCKET_NAME por el nombre del bucket de Cloud Storage.
- MOUNT_PATH por la ruta de acceso relativa en la que activarás el volumen, por ejemplo,
/cache
.
Cómo establecer otras opciones de activación
A continuación, se incluye la lista completa de todas las opciones de montaje compatibles con Cloud Run.
Directorio
implicit-dirs
only-dir
rename-dir-limit
Debugger
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
Otro
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 obtener la documentación completa de las opciones de activación admitidas, consulta las opciones de activación de la línea de comandos de Cloud Storage FUSE.
Visualiza la configuración de activaciones de volúmenes
Console
En la consola de Google Cloud , ve a la página de servicios de Cloud Run:
En la lista de servicios, haz clic en el servicio que te interesa para abrir la página Detalles del servicio.
Haz clic en la pestaña Volúmenes.
Ubica la configuración de activaciones de volúmenes en la página de detalles de los volúmenes.
gcloud
Usa el siguiente comando:
gcloud run services describe SERVICE_NAME
Ubica la configuración de activaciones de volúmenes en la configuración que se muestra.
Optimiza el rendimiento del ancho de banda de la red de Cloud Storage FUSE
Para obtener un mejor rendimiento de lectura y escritura, conecta tu servicio de Cloud Run a una red de VPC con la VPC directa y enruta todo el tráfico saliente a través de tu red de VPC. Puedes hacerlo mediante cualquiera de las siguientes opciones.
- Habilita el Acceso privado a Google y asegúrate de establecer el parámetro
vpc-egress
enall-traffic
. - Usa una de las opciones que se describen 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 del contenedor y activaciones de Cloud Storage FUSE
El uso de Cloud Storage FUSE puede aumentar ligeramente el tiempo de inicio en frío de tu contenedor de Cloud Run, ya que Cloud Run inicia la activación de volumen antes de iniciar los contenedores. Tu contenedor se iniciará solo si Cloud Storage FUSE se activa correctamente.
Ten en cuenta que Cloud Storage FUSE activa un volumen correctamente solo después de establecer una conexión con Cloud Storage. Cualquier retraso en la red puede afectar el tiempo de inicio del contenedor. Del mismo modo, si falla el intento de conexión, no se activará Cloud Storage FUSE ni se iniciará el servicio de Cloud Run. Además, si Cloud Storage FUSE tarda más de 30 segundos en activarse, el servicio de Cloud Run no se iniciará porque tiene un tiempo de espera total de 30 segundos para realizar todas las activaciones.
Características de rendimiento de Cloud Storage FUSE
Si defines dos volúmenes, cada uno de los cuales apunta a un bucket diferente, se iniciarán dos procesos de Cloud Storage FUSE. Las activaciones y los procesos se realizan 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 a través de la API de Cloud Storage. Algunas operaciones, como enumerar el contenido de un bucket, 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 bucket, Cloud Storage FUSE coloca el objeto en etapa intermedia 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 bucket solo cuando realizas una operación close
o fsync
: luego, el objeto completo se sube al bucket. La única excepción a que un objeto se vuelva a subir por completo al bucket es en el caso de un archivo con contenido agregado cuando el archivo es de 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
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 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 activaciones de volúmenes:
gcloud run services update SERVICE \ --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 run services update SERVICE \ --remove-volume VOLUME_NAME \ --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH