Questa pagina mostra come montare una condivisione file NFS come volume in Cloud Run. Puoi utilizzare qualsiasi server NFS, incluso il tuo server NFS ospitato on-premise, o su una VM di Compute Engine. Se non disponi già di un server NFS, ti consigliamo Filestore, che è un'offerta NFS completamente gestita di Google Cloud.
Se vuoi utilizzare i file system di rete NBD, 9P, CIFS/Samba e Ceph, fai riferimento all'articolo sull'utilizzo dei file system di rete NBD, 9P, CIFS/Samba e Ceph.
Limitazioni
Per scrivere in un volume NFS, il container deve essere eseguito come root. Se il container legge solo dal file system, può essere eseguito come qualsiasi utente.
Cloud Run non supporta il blocco NFS. I volumi NFS vengono montati automaticamente in modalità no-lock.
Prima di iniziare
Per montare un server NFS come volume in Cloud Run, assicurati di disporre di quanto segue:
- Una rete VPC in cui è in esecuzione il server NFS o l'istanza Filestore.
- Un server NFS in esecuzione in una rete VPC, con il servizio Cloud Run connesso a tale rete VPC. Se non hai ancora un server NFS, creane uno creando un'istanza Filestore.
- Il tuo servizio Cloud Run è collegato alla rete VPC in cui è in esecuzione il server NFS. Per prestazioni ottimali, utilizza un VPC diretto anziché i connettori VPC.
- Se utilizzi un progetto esistente, assicurati che la configurazione del firewall VPC consenta a Cloud Run di raggiungere il server NFS. Se inizi da un nuovo progetto, il valore è true per impostazione predefinita. Se utilizzi Filestore come server NFS, segui la documentazione di Filestore per creare una regola firewall in uscita per consentire a Cloud Run di raggiungere Filestore.
Monta un volume NFS
Puoi montare più server NFS, istanze Filestore o altri tipi di volume in percorsi di montaggio diversi.
Se utilizzi più container, specifica prima i volumi, quindi quelli montati per ogni container.
Riga di comando
Nota: mostriamo il comando gcloud beta run services update
, ma puoi anche utilizzare
il comando gcloud beta run services deploy
con gli stessi parametri mostrati.
- Per aggiungere un volume e montarlo:
gcloud beta run services update SERVICE \ --add-volume=name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \ --add-volume-mount=volume=VOLUME_NAME,mount-path=MOUNT_PATH
Sostituisci:
- SERVICE con il nome del tuo servizio.
- VOLUME_NAME con il nome che vuoi assegnare al tuo volume.
- IP_ADDRESS con la posizione della condivisione file NFS.
- NFS_PATH con il percorso della condivisione file NFS che inizia con una barra, ad esempio
/example-directory
. - 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 relativo montaggio.
Per montare il volume come volume di sola lettura:
--add-volume=name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH,readonly=true
Se utilizzi più container, specifica prima i volumi, quindi specifica i montaggi dei volumi per ogni container:
gcloud beta run services update SERVICE \ --add-volume=name VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \ --container CONTAINER_1 \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH \ --container CONTAINER_2 \ --add-volume-mount volume= VOLUME_NAME,mount-path=MOUNT_PATH2
YAML
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
Aggiorna MOUNT_PATH, VOLUME_NAME, IP_ADDRESS e NFS_PATH in base alle esigenze. Se hai più montaggi di volumi, avrai multipli di questi attributi.
apiVersion: run.googleapis.com/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 nfs: server: IP_ADDRESS path: NFS_PATH readOnly: IS_READ_ONLY
Sostituisci
- SERVICE con il nome del tuo servizio Cloud Run
- 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 relativo montaggio.
- IP_ADDRESS con l'indirizzo della condivisione file NFS.
- NFS_PATH con il percorso della condivisione file NFS che inizia con una barra, ad esempio
/example-directory
. - IS_READ_ONLY con
True
per rendere il volume di sola lettura oFalse
per consentire le scritture.
Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:
gcloud beta run services replace service.yaml
Risoluzione dei problemi di NFS
Se riscontri problemi, controlla quanto segue:
- Il tuo servizio Cloud Run è connesso alla rete VPC su cui si trova il server NFS.
- Non esistono regole firewall che impediscano a Cloud Run di raggiungere il server NPS.
- Se il container scrive sul server NFS, assicurati che sia in esecuzione come root.