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 il bucket contenuti come file nel file system del container. Dopo aver montato il bucket come volume, accedi al bucket come se fosse una directory sul tuo file locale utilizzando le operazioni e le librerie del file system del tuo linguaggio di programmazione anziché utilizzare le librerie client delle API di Google.
Requisiti di memoria
I montaggi dei volumi Cloud Storage utilizzano Cloud Run memoria container per i seguenti attività:Per tutta la memorizzazione nella cache di Cloud Storage FUSE, Cloud Run utilizza per impostazione predefinita impostazione della cache delle statistiche con una durata (TTL) di 60 secondi. La dimensione massima predefinita della cache delle statistiche è 32 MB, mentre la dimensione massima predefinita del tipo di cache è 4 MB.
Durante la lettura, Cloud Storage FUSE consuma anche memoria diversa dalle cache stat e di tipo, ad esempio un array da 1 MiB per ogni file letto e per la goroutina.
Durante la scrittura in Cloud Storage, l'intero file viene memorizzato in Cloud Run prima che venga scritto in Cloud Storage.
Limitazioni
Cloud Run utilizza Cloud Storage FUSE per su questo montaggio del volume. Ci sono alcuni aspetti da tenere presenti quando si monta un Bucket Cloud Storage come volume:
- Cloud Storage FUSE non fornisce il controllo della contemporaneità per più scritture (blocco file) allo stesso file. Quando più scritture tentano di sostituire un file, l'ultima scrittura vince e tutte le scritture precedenti vanno perse.
- Cloud Storage FUSE non è un file system completamente compatibile con POSIX. Per maggiori informazioni consulta la documentazione di Cloud Storage FUSE.
Prima di iniziare
È necessario un bucket Cloud Storage da montare come volume.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare i montaggi dei volumi Cloud Storage, chiedi all'amministratore di concederti seguenti ruoli IAM:
-
Sviluppatore Cloud Run (
roles/run.developer
) sul job Cloud Run -
Utente account di servizio (
roles/iam.serviceAccountUser
) sull'identità del servizio
Per ottenere le autorizzazioni richieste dall'identità del servizio deve accedere al file e al bucket Cloud Storage, chiedi all'amministratore per concedere all'identità di servizio il seguente ruolo IAM:
- Storage Admin (
roles/storage.admin
)
Per maggiori dettagli su ruoli e autorizzazioni di Cloud Storage, consulta IAM per Cloud Storage.
Per un elenco di ruoli e autorizzazioni IAM associati Cloud Run, consulta Ruoli IAM di Cloud Run e le autorizzazioni IAM di Cloud Run. Se il tuo job Cloud Run si interfaccia con Le API Google Cloud, come le librerie client di Cloud, consultano guida alla configurazione dell'identità dei servizi. Per ulteriori informazioni sulla concessione dei ruoli, consulta autorizzazioni di deployment e gestire l'accesso.
Percorsi non consentiti
Cloud Run non consente di montare un volume su /dev
,
/proc
e /sys
o nelle relative sottodirectory.
Monta un volume Cloud Storage
Puoi montare più bucket in diversi percorsi di montaggio. Tu è anche possibile montare un volume in più di un container utilizzando lo stesso di montare percorsi tra container.
Se utilizzi più container, specifica prima i volumi, quindi il volume montato per ogni container.
Console
Nella console Google Cloud, vai alla pagina dei job Cloud Run:
Se stai configurando un nuovo job, fai clic sulla scheda Job e compila il la pagina iniziale delle impostazioni del job, se preferisci. Se stai configurando un'istanza job esistente, fai clic sul job e poi su Modifica.
Fai clic su Contenitore, variabili e secret, connessioni, sicurezza per espandere la pagina delle proprietà del job.
Fai clic sulla scheda Volumi.
- In Volumi:
- Fai clic su Aggiungi volume.
- Nel menu a discesa Tipo di volume, seleziona il 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 che vuoi utilizzare per il volume.
- (Facoltativo) Seleziona la casella di controllo Sola lettura per impostare il bucket come di sola lettura.
- Fai clic su Fine.
- Fai clic sulla scheda Contenitore, quindi espandi il contenitore che stai montando il volume per modificare il container.
- Fai clic sulla scheda Montaggi di volumi.
- Fai clic su Installa volume.
- Seleziona il volume di Cloud Storage dal menu.
- Specifica il percorso in cui vuoi montare il volume.
- Fai clic su Monta volume
- In Volumi:
Fai clic su Crea o Aggiorna.
gcloud
Per aggiungere un volume e montarlo:
gcloud beta run jobs update JOB \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
Sostituisci:
JOB
con il nome del tuo job.- 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 relativo montaggio.
- 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, quindi specifica i montaggi dei volumi per ogni container:
gcloud beta run jobs update JOB \ --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
Se stai creando un nuovo job, salta questo passaggio. Se stai aggiornando un job esistente, scarica la relativa configurazione YAML:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Aggiorna il MOUNT_PATH, VOLUME_NAME e BUCKET_NAME e IS_READ_ONLY in base alle esigenze.
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME spec: metadata: annotations: run.googleapis.com/launch-stage: BETA template: metadata: annotations: run.googleapis.com/execution-environment: gen2 spec: template: spec: containers: - image: IMAGE_URL volumeMounts: - mountPath: MOUNT_PATH name: VOLUME_NAME 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, per
ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la formaLOCATION-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 relativo montaggio.
- IS_READ_ONLY con
True
per rendere il volume di sola lettura oFalse
per consentire le scritture. - BUCKET_NAME con il nome del bucket Cloud Storage.
- IMAGE_URL con un riferimento all'immagine container, per
ad esempio
Sostituisci il servizio con la nuova configurazione utilizzando quanto segue :
gcloud beta run jobs replace job.yaml
Lettura e scrittura a volume
Se utilizzi la funzionalità di montaggio del volume di Cloud Run, accedi a un volume utilizzando le stesse librerie del linguaggio di programmazione che utilizzi per leggere e scrivere file sul file system locale.
Ciò è particolarmente utile se utilizzi un container esistente che prevede dati da archiviare sul file system locale e utilizza il normale file system operazioni per accedervi.
I seguenti snippet presuppongono un montaggio del volume con un valore mountPath
impostato su /mnt/my-volume
.
Node.js
Utilizzare il modulo File system per creare un nuovo file o aggiungerlo a un file
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 contenuto nel volume, /mnt/my-volume
:
f = open("/mnt/my-volume/sample-logfile.txt", "a")
Vai
Utilizza il pacchetto os
per creare un nuovo file contenuto 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");
Visualizza le impostazioni dei montaggi dei volumi
Console
Nella console Google Cloud, vai alla pagina dei job Cloud Run:
Fai clic sul lavoro che ti interessa per aprire la pagina Dettagli offerta di lavoro.
Fai clic sulla scheda Volumi.
Individua l'impostazione dei montaggi dei volumi nei volumi pagina dei dettagli.
gcloud
Utilizza questo comando:
gcloud run jobs describe JOB_NAME
Individua l'impostazione dei montaggi dei volumi nel modulo restituito configurazione.