Configurare i mount dei volumi Cloud Storage per i servizi Cloud Run

Questa pagina mostra come montare un bucket Cloud Storage come volume di archiviazione, utilizzando i montaggi dei volumi Cloud Run.

Il montaggio del bucket come volume in Cloud Run presenta i contenuti del bucket come file nel file system del container. Dopo aver montato il bucket come volume, puoi accedervi come se fosse una directory sul file system locale, utilizzando le operazioni e le librerie del file system del tuo linguaggio di programmazione anziché le librerie client delle API di Google.

Puoi montare il volume in sola lettura e specificare anche opzioni di montaggio per il volume.

Requisiti di memoria

I montaggi dei volumi Cloud Storage utilizzano la memoria del container Cloud Run per le seguenti attività:

  • Per tutta la memorizzazione nella cache di Cloud Storage FUSE, Cloud Run utilizza l'impostazione della cache stat con un time-to-live (TTL) di 60 secondi per impostazione predefinita. La dimensione massima predefinita della cache delle statistiche è 32 MB, mentre quella della cache dei tipi è 4 MB.

  • Durante la lettura, Cloud Storage FUSE consuma anche memoria diversa dalle cache di stat e di tipo, ad esempio un array di 1 MiB per ogni file letto e per le goroutine.

  • Quando si scrive in Cloud Storage, l'intero file viene eseguito il staging nella memoria di Cloud Run prima di essere scritto in Cloud Storage.

.

Limitazioni

Poiché Cloud Run utilizza Cloud Storage FUSE per questo montaggio del volume, ci sono alcune cose da tenere a mente quando monti un bucket Cloud Storage come volume:

  • Cloud Storage FUSE non fornisce controllo della contemporaneità per più scritture (blocco file) nello stesso file. Quando più scritture tentano di sostituire un file, l'ultima scrittura ha la precedenza e tutte le scritture precedenti vengono perse.
  • Cloud Storage FUSE non è un file system completamente conforme a POSIX. Per maggiori dettagli, consulta la documentazione di Cloud Storage FUSE.

Percorsi non consentiti

Cloud Run non consente di montare un volume in /dev, /proc o /sys o nelle relative sottodirectory.

Prima di iniziare

Per il montaggio come volume è necessario un bucket Cloud Storage.

Per prestazioni di lettura/scrittura ottimali su Cloud Storage, consulta Ottimizzazione delle prestazioni della larghezza di banda di rete di Cloud Storage FUSE.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare i montaggi dei volumi Cloud Storage, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per ottenere le autorizzazioni necessarie all'identità di servizio per accedere al file e al bucket Cloud Storage, chiedi all'amministratore di concedere all'identità di servizio il seguente ruolo IAM:

Per maggiori dettagli sui ruoli e sulle autorizzazioni di Cloud Storage, consulta IAM per Cloud Storage.

Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM Cloud Run e Autorizzazioni IAM Cloud Run. Se il tuo servizio Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestire l'accesso.

Montare un volume Cloud Storage

Puoi montare più bucket in percorsi di montaggio diversi. Puoi anche montare un volume su più container utilizzando percorsi di montaggio uguali o diversi nei vari container.

Se utilizzi più container, specifica prima i volumi, poi specifica i montaggi dei volumi per ogni container.

I montaggi dei volumi richiedono l'ambiente di esecuzione di seconda generazione. Cloud Run seleziona automaticamente l'ambiente di esecuzione di seconda generazione per il tuo servizio se non ne è stato configurato uno in modo esplicito.

Console

  1. Nella console Google Cloud , vai a Cloud Run:

    Vai a Cloud Run

  2. Seleziona Servizi dal menu e fai clic su Esegui il deployment del contenitore per configurare un nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio, quindi su Modifica ed esegui il deployment della nuova revisione.

  3. Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio, quindi fai clic su Container, volumi, networking, sicurezza per espandere la pagina di configurazione del servizio.

  4. Fai clic sulla scheda Volumi.

    immagine

    • Fai clic su Aggiungi volume.
    • Nel menu a discesa Tipo di volume, seleziona Bucket Cloud Storage come tipo di volume.
    • Nel campo Nome volume, inserisci il nome che vuoi utilizzare per il volume.
    • Sfoglia e seleziona il bucket Cloud Storage da utilizzare per il volume oppure, se vuoi, crea un nuovo bucket.
    • Se vuoi impostare il bucket in sola lettura, seleziona la casella di controllo Sola lettura.
    • Fai clic su Fine.
    • Fai clic sulla scheda Contenitore:
      • Fai clic sulla scheda Montaggi volumi.
      • Fai clic su Monta volume.
      • Seleziona il volume di archiviazione dal menu.
      • Specifica il percorso in cui vuoi montare il volume.
      • Fai clic su Fine.
  5. Fai clic su Crea o Esegui il deployment.

gcloud

  • Per aggiungere un volume e montarlo:

    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

    Sostituisci:

    • SERVICE con il nome del tuo servizio.
    • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /mnt/my-volume.
    • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al punto di montaggio del volume.
    • BUCKET_NAME con il nome del tuo bucket Cloud Storage.
  • Per montare il volume come volume di sola lettura:

    --add-volume=name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,readonly=true
  • Se utilizzi più container, specifica prima i volumi, poi i montaggi dei volumi per ogni container:

    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

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna se necessario.

    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

    Sostituisci

    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /mnt/my-volume.
    • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al punto di montaggio del volume.
    • IS_READ_ONLY con True per rendere il volume di sola lettura o False per consentire le scritture.
    • BUCKET_NAME con il nome del bucket Cloud Storage.
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una risorsa google_cloud_run_v2_service nella configurazione 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"
  }

Sostituisci:

  • SERVICE con il nome del tuo servizio Cloud Run.
  • REGION con la regione Google Cloud .
  • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al punto di montaggio del volume.
  • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /mnt/my-volume.
  • IS_READ_ONLY con True per rendere il volume di sola lettura oppure False per consentire le scritture.
  • BUCKET_NAME con il nome del bucket Cloud Storage.

Lettura e scrittura in un volume

Se utilizzi la funzionalità di montaggio del volume di Cloud Run, accedi a un volume montato utilizzando le stesse librerie nel tuo linguaggio di programmazione che utilizzi per leggere e scrivere file nel file system locale.

Ciò è particolarmente utile se utilizzi un container esistente che prevede che i dati vengano archiviati nel file system locale e utilizza operazioni regolari del file system per accedervi.

I seguenti snippet presuppongono un montaggio del volume con mountPath impostato su /mnt/my-volume.

Nodejs

Utilizza il modulo File System per creare un nuovo file o aggiungere contenuti a un file esistente nel volume, /mnt/my-volume:

var fs = require('fs');
fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });

Python

Scrivi in un file conservato nel volume, /mnt/my-volume:

f = open("/mnt/my-volume/sample-logfile.txt", "a")

Vai

Utilizza il pacchetto os per creare un nuovo file conservato nel volume /mnt/my-volume:

f, err := os.Create("/mnt/my-volume/sample-logfile.txt")

Java

Utilizza la classe Java.io.File per creare un file di log nel volume, /mnt/my-volume:

import java.io.File;
File f = new File("/mnt/my-volume/sample-logfile.txt");

Configurazione del volume utilizzando le opzioni di montaggio

Se vuoi, puoi utilizzare le opzioni di montaggio per configurare varie proprietà del montaggio del volume. Le opzioni di montaggio disponibili ti consentono di configurare le impostazioni della cache, montare una directory specifica, attivare la registrazione di debug e altri comportamenti.

Specificare le opzioni di montaggio

Puoi specificare le opzioni di montaggio utilizzando Google Cloud CLI, YAML o Terraform. Le opzioni di montaggio sono separate da punti e virgole (;) nella Google Cloud CLI e da virgole in YAML, come mostrato nelle seguenti schede:

gcloud

Per aggiungere un volume e montarlo con le opzioni di montaggio:

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

Sostituisci:

  • SERVICE con il nome del tuo servizio.
  • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al punto di montaggio del volume.
  • BUCKET_NAME con il nome del tuo bucket Cloud Storage.
  • OPTION_1 con la prima opzione di montaggio. Tieni presente che puoi specificare tutte le opzioni di montaggio che ti servono, con ogni opzione di montaggio e coppia di valori separata da un punto e virgola.
  • VALUE_1 con l'impostazione che vuoi per la prima opzione di montaggio.
  • OPTION_N con l'opzione di montaggio successiva.
  • VALUE_N con l'impostazione per l'opzione di montaggio successiva.
  • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /cache.

YAML

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna se necessario.

    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

    Sostituisci

    • IMAGE_URL con un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /cache.
    • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al punto di montaggio del volume.
    • IS_READ_ONLY con True per rendere il volume di sola lettura o False per consentire le scritture.
    • BUCKET_NAME con il nome del bucket Cloud Storage.
    • OPTION_1 con la prima opzione di montaggio. Tieni presente che puoi specificare tutte le opzioni di montaggio che ti servono, con ogni coppia opzione di montaggio e valore separata da una virgola.
    • VALUE_1 con l'impostazione che vuoi per la prima opzione di montaggio.
    • OPTION_N con l'opzione di montaggio successiva.
    • VALUE_N con l'impostazione per l'opzione di montaggio successiva.
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una risorsa google_cloud_run_v2_service nella configurazione 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"]
        }
      }
    }
  }

Sostituisci:

  • SERVICE con il nome del tuo servizio Cloud Run.
  • REGION con la regione Google Cloud .
  • IMAGE_URL con un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al punto di montaggio del volume.
  • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /mnt/my-volume.
  • IS_READ_ONLY con True per rendere il volume di sola lettura oppure False per consentire le scritture.
  • BUCKET_NAME con il nome del bucket Cloud Storage.
  • OPTION_1 con la prima opzione di montaggio. Tieni presente che puoi specificare tutte le opzioni di montaggio che ti servono, con ogni coppia opzione di montaggio e valore separata da una virgola.
  • VALUE_1 con l'impostazione che vuoi per la prima opzione di montaggio.
  • OPTION_N con la seconda opzione di montaggio, se applicabile.
  • VALUE_N con l'impostazione per la seconda opzione di montaggio.
  • OPTION_O con la terza opzione di montaggio, se applicabile. Alcune opzioni di montaggio non hanno un valore.

Opzioni di montaggio più usate

Le opzioni di montaggio vengono comunemente utilizzate per:

  • Configura impostazioni cache
  • Montare solo una directory specifica dal bucket Cloud Storage
  • Configura la proprietà del volume (uid, gid)
  • Disattivare le directory implicite
  • Specifica i livelli di logging di debug.

Configurare le impostazioni di memorizzazione nella cache

Puoi modificare le impostazioni di memorizzazione nella cache del volume impostando le opzioni di montaggio correlate alla memorizzazione nella cache. La tabella seguente elenca le impostazioni, insieme ai valori predefiniti di Cloud Run :

Impostazione della cache Descrizione Predefinito
metadata-cache-ttl-secs Durata (TTL) in secondi delle voci di metadati memorizzate nella cache. Ad esempio, metadata-cache-ttl-secs=120s. Per utilizzare il file più aggiornato, specifica un valore di 0. Per utilizzare sempre la versione memorizzata nella cache, specifica un valore di -1. Per saperne di più, consulta Configurare l'invalidazione della cache. 60
stat-cache-max-size-mb Dimensione massima in mebibyte (MiB) che la cache delle statistiche può utilizzare. La cache delle statistiche viene sempre mantenuta interamente in memoria, il che influisce sul consumo di memoria. Specifica un valore di 32 se il tuo carico di lavoro prevede fino a 20.000 file. Se il tuo carico di lavoro utilizza più di 20.000 file, aumenta le dimensioni di 10 per ogni 6000 file aggiuntivi, dove la cache delle statistiche utilizza una media di 1500 MiB per file.

Per consentire alla cache delle statistiche di utilizzare tutta la memoria necessaria, specifica un valore di -1. Per disattivare la cache delle statistiche, specifica un valore di 0.
32
type-cache-max-size-mb La dimensione massima in MiB per directory che la cache dei tipi può utilizzare. La cache dei tipi viene sempre mantenuta interamente in memoria, il che influisce sul consumo di memoria.

Specifica un valore di 4 se il numero massimo di file all'interno di una singola directory del bucket che stai montando contiene 20.000 file o meno. Se il numero massimo di file all'interno di una singola directory che stai montando contiene più di 20.000 file, aumenta il valore di 1 ogni 5000 file, ovvero una media di circa 200 byte per file.

Per consentire alla cache dei tipi di utilizzare tutta la memoria necessaria, specifica un valore di -1.

Per disattivare la cache dei tipi, specifica un valore di 0.
4

Il seguente comando Google Cloud CLI imposta metadata-cache-ttl-secs su 120 secondi e aumenta la capacità della cache di statistiche e tipi rispettivamente a 52 e 7 MiB:

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

Sostituisci:

  • SERVICE con il nome del tuo servizio.
  • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al punto di montaggio del volume.
  • BUCKET_NAME con il nome del tuo bucket Cloud Storage.
  • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /cache.

Attiva il logging di debug

Per impostazione predefinita, Cloud Storage FUSE registra gli eventi con gravità Info o superiore. Puoi modificare le impostazioni di registrazione utilizzando uno dei seguenti livelli di gravità del log, elencati in ordine dal più basso al più alto:

  • trace
  • debug
  • info
  • warning
  • error
  • Per disattivare tutta la registrazione, specifica il valore off.

Quando specifichi un livello di gravità, Cloud Storage FUSE genera log per gli eventi con un livello di gravità avseverity uguale o superiore a quello specificato. Ad esempio, quando specifichi il livello warning, Cloud Storage FUSE genera log per avvisi ed errori.

L'impostazione della gravità dei log su livelli superiori a info può influire sulle prestazioni e generare una grande quantità di dati di logging, pertanto ti consigliamo di farlo solo se necessario.

La seguente riga di comando attiva il logging di debug:

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

Sostituisci:

  • SERVICE con il nome del tuo servizio.
  • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al punto di montaggio del volume.
  • BUCKET_NAME con il nome del tuo bucket Cloud Storage.
  • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /cache.

Disabilita directory implicite

Per far sembrare Cloud Storage più simile a un file system standard, Cloud Run attiva le directory implicite per impostazione predefinita durante il montaggio di un bucket Cloud Storage. Puoi disattivare le directory implicite utilizzando l'opzione di montaggio implicit-dirs. La disattivazione delle directory implicite può migliorare le prestazioni e i costi, ma comporta compromessi in termini di compatibilità.

La funzionalità delle directory implicite consente a Cloud Run di riconoscere i file Cloud Storage preesistenti i cui nomi file imitano una struttura di directory, ad esempio /mydir/myfile.txt. Se disattivi le directory implicite, Cloud Run non sarà in grado di elencare o leggere questi file.

La disattivazione delle directory implicite riduce il numero di richieste a Cloud Storage, il che potrebbe migliorare le prestazioni e i costi dell'applicazione. Per saperne di più, leggi la documentazione di Cloud Storage FUSE relativa a file e directory.

La seguente riga di comando disattiva le directory implicite:

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

Sostituisci:

  • SERVICE con il nome del tuo servizio.
  • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al punto di montaggio del volume.
  • BUCKET_NAME con il nome del tuo bucket Cloud Storage.
  • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /cache.

Montare una directory specifica all'interno del bucket Cloud Storage

Per impostazione predefinita, Cloud Run monta l'intero bucket Cloud Storage, il che consente ai servizi Cloud Run di accedere a tutti i suoi contenuti. In alcuni casi potresti voler montare solo una directory specifica. Ad esempio, nel caso in cui il bucket contenga un numero elevato di file, il montaggio di una directory specifica può migliorare le prestazioni.

Puoi anche implementare questa soluzione per scopi di isolamento, quando hai bisogno che servizi diversi abbiano accesso a directory diverse nel bucket di archiviazione.

La seguente riga di comando specifica la directory da montare:

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

Sostituisci:

  • SERVICE con il nome del tuo servizio.
  • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al punto di montaggio del volume.
  • BUCKET_NAME con il nome del tuo bucket Cloud Storage.
  • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /cache.

Imposta il volume UID e GID

Utilizza le opzioni di montaggio uid e gid per modificare l'identificatore utente e l'identificatore gruppo per il volume. Questa operazione è utile se vuoi impostare la proprietà del file su un utente o un gruppo specifico che corrisponde all'identità di uno o più container in esecuzione. Per impostazione predefinita, i volumi sono di proprietà di root.

La seguente riga di comando imposta uid e 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

Sostituisci:

  • SERVICE con il nome del tuo servizio.
  • VOLUME_NAME con il nome che preferisci per il volume. Il valore VOLUME_NAME viene utilizzato per mappare il volume al punto di montaggio del volume.
  • BUCKET_NAME con il nome del tuo bucket Cloud Storage.
  • MOUNT_PATH con il percorso relativo in cui stai montando il volume, ad esempio /cache.

Impostare altre opzioni di montaggio

Di seguito è riportato l'elenco completo di tutte le opzioni di montaggio supportate da Cloud Run.

Directory

  • implicit-dirs
  • only-dir
  • rename-dir-limit

Debug

  • debug_fuse_errors
  • debug_fuse
  • debug_gcs
  • debug-invariants
  • debug_mutex

Cache

  • stat-cache-capacity
  • stat-cache-ttl
  • type-cache-ttl
  • enable-nonexistent-type-cache

Autorizzazioni

  • uid
  • gid
  • file-mode
  • dir-mode

Altro

  • 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

Per la documentazione completa delle opzioni di montaggio supportate, consulta la sezione Opzioni di montaggio della riga di comando FUSE di Cloud Storage.

Visualizzare le impostazioni dei punti di montaggio del volume

Console

  1. Nella console Google Cloud , vai alla pagina dei servizi Cloud Run:

    Vai a Cloud Run

  2. Nell'elenco dei servizi, fai clic sul servizio che ti interessa per aprire la pagina Dettagli servizio.

  3. Fai clic sulla scheda Volumi.

  4. Individua l'impostazione Montaggi di volumi nella pagina dei dettagli dei volumi.

gcloud

  1. Utilizza questo comando:

    gcloud run services describe SERVICE_NAME
  2. Individua l'impostazione Montaggi di volumi nella configurazione restituita.

Ottimizzazione delle prestazioni della larghezza di banda di rete di Cloud Storage FUSE

Per migliorare le prestazioni di lettura e scrittura, connetti il servizio Cloud Run a una rete VPC utilizzando il VPC diretto e indirizza tutto il traffico in uscita attraverso la rete VPC. Puoi farlo utilizzando una delle seguenti opzioni:

Tempo di avvio del container e montaggi di Cloud Storage FUSE

L'utilizzo di Cloud Storage FUSE può aumentare leggermente il tempo di avvio a freddo del container Cloud Run perché Cloud Run avvia il montaggio del volume prima di avviare i container. Il container verrà avviato solo se Cloud Storage FUSE viene montato correttamente.

Tieni presente che Cloud Storage FUSE monta correttamente un volume solo dopo aver stabilito una connessione a Cloud Storage. Eventuali ritardi di rete possono influire sul tempo di avvio del container. Di conseguenza, se il tentativo di connessione non va a buon fine, Cloud Storage FUSE non verrà montato e il servizio Cloud Run non verrà avviato. Inoltre, se Cloud Storage FUSE impiega più di 30 secondi per il montaggio, il servizio Cloud Run non verrà avviato perché Cloud Run ha un timeout totale di 30 secondi per eseguire tutti i montaggi.

Caratteristiche delle prestazioni di Cloud Storage FUSE

Se definisci due volumi, ognuno dei quali punta a un bucket diverso, verranno avviati due processi Cloud Storage FUSE. I montaggi e i processi avvengono in parallelo.

Le operazioni che utilizzano Cloud Storage FUSE sono influenzate dalla larghezza di banda di rete perché Cloud Storage FUSE comunica con Cloud Storage utilizzando l'API Cloud Storage. Alcune operazioni, come l'elenco dei contenuti di un bucket, possono essere lente se la larghezza di banda della rete è bassa. Allo stesso modo, la lettura di un file di grandi dimensioni può richiedere tempo, in quanto è limitata anche dalla larghezza di banda della rete.

Quando scrivi in un bucket, Cloud Storage FUSE esegue completamente lo staging dell'oggetto in memoria. Ciò significa che la scrittura di file di grandi dimensioni è limitata dalla quantità di memoria disponibile per l'istanza del container (il limite massimo di memoria del container è 32 GiB).

La scrittura viene scaricata nel bucket solo quando esegui un'operazione close o fsync: l'oggetto completo viene quindi caricato nel bucket. L'unica eccezione al caricamento completo di un oggetto nel bucket è il caso di un file con contenuti aggiunti quando il file è di almeno 2 MiB.

Per maggiori informazioni, consulta le seguenti risorse:

Cancella e rimuovi volumi e montaggi dei volumi

Puoi cancellare tutti i volumi e i relativi punti di montaggio oppure rimuovere singoli volumi e i relativi punti di montaggio.

Cancella tutti i volumi e i relativi punti di montaggio

Per cancellare tutti i volumi e i montaggi dei volumi dal servizio a singolo container, esegui questo comando:

gcloud run services update SERVICE \
    --clear-volumes
    --clear-volume-mounts

Se hai più container, segui le convenzioni della CLI sidecar per cancellare i volumi e i montaggi dei volumi:

gcloud run services update SERVICE \
    --container=container1 \
    --clear-volumes
    -–clear-volume-mounts \
    --container=container2 \
    --clear-volumes \
    -–clear-volume-mounts

Rimuovere singoli volumi e montaggi di volumi

Per rimuovere un volume, devi rimuovere anche tutti i relativi montaggi.

Per rimuovere singoli volumi o punti di montaggio dei volumi, utilizza i flag remove-volume e 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