Configurer des installations de volume NFS pour les jobs

Cette page explique comment installer un partage de fichiers NFS en tant que volume dans Cloud Run. Vous pouvez utiliser n'importe quel serveur NFS, y compris votre propre serveur NFS hébergé sur site ou sur une VM Compute Engine. Si vous ne disposez pas encore de serveur NFS, nous vous recommandons d'utiliser Filestore, une offre NFS entièrement gérée de Google Cloud.

Si vous souhaitez utiliser les systèmes de fichiers réseau NBD, 9P, CIFS/Samba et Ceph, consultez la section Utiliser les systèmes de fichiers réseau NBD, 9P, CIFS/Samba et Ceph.

Limites

  • Pour écrire sur un volume NFS, votre conteneur doit s'exécuter en tant qu'utilisateur racine. Si le conteneur ne lit qu'à partir du système de fichiers, il peut s'exécuter comme n'importe quel utilisateur.

  • Cloud Run n'est pas compatible avec le verrouillage NFS. Les volumes NFS sont automatiquement installés en mode sans verrouillage.

Avant de commencer

Pour installer un serveur NFS en tant que volume dans Cloud Run, assurez-vous de disposer des éléments suivants :

  • Un réseau VPC où votre serveur NFS ou votre instance Filestore est en cours d'exécution.
  • Un serveur NFS s'exécutant dans un réseau VPC, avec votre service Cloud Run connecté à ce réseau VPC. Si vous ne disposez pas encore d'un serveur NFS, créez-en un en créant une instance Filestore.
  • Votre service Cloud Run est associé au réseau VPC sur lequel votre serveur NFS est exécuté. Pour obtenir de meilleures performances, utilisez le VPC direct plutôt que les connecteurs VPC.
  • Si vous utilisez un projet existant, assurez-vous que la configuration du pare-feu VPC permet à Cloud Run d'accéder à votre serveur NFS. (Si vous démarrez à partir d'un nouveau projet, cette option est activée par défaut.) Si vous utilisez Filestore comme serveur NFS, suivez la documentation Filestore pour créer une règle de sortie de pare-feu afin de permettre à Cloud Run d'accéder à Filestore.

Installer un volume NFS

Vous pouvez installer plusieurs serveurs NFS, instances Filestore ou autres types de volumes avec différents chemins d'installation.

Si vous utilisez plusieurs conteneurs, spécifiez les volumes, puis spécifiez les installations de volume pour chaque conteneur.

Ligne de commande

  • Pour ajouter un volume et l'installer, procédez comme suit :

    gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

    Remplacez :

    • JOB par le nom de votre tâche.
    • VOLUME_NAME par le nom que vous souhaitez donner à votre volume.
    • IP_ADDRESS par l'emplacement du partage de fichiers NFS.
    • NFS_PATH par le chemin d'accès au partage de fichiers NFS.
    • MOUNT_PATH par le chemin d'accès au système de fichiers du conteneur sur lequel vous souhaitez installer ce volume.
  • Pour installer votre volume en tant que volume en lecture seule, procédez comme suit :

    --add-volume name VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH,readonly=true
  • Si vous utilisez plusieurs conteneurs, spécifiez les volumes, puis spécifiez les installations de volume pour chaque conteneur :

    gcloud beta run jobs update JOB \
    --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

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Mettez à jour les attributs MOUNT_PATH, VOLUME_NAME, IP_ADDRESS et NFS_PATH si nécessaire. Si vous disposez de plusieurs installations de volume, vous aurez plusieurs de ces attributs.

    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:
                - name: VOLUME_NAME
                  mountPath: MOUNT_PATH
              volumes:
              - name: VOLUME_NAME
                nfs:
                  server: IP_ADDRESS
                  path: NFS_PATH
                  readonly: IS_READ_ONLY

    Remplacer

    • JOB par le nom de votre job Cloud Run.
    • MOUNT_PATH par le chemin relatif où vous installez le volume, par exemple, /cache.
    • VOLUME_NAME par le nom que vous souhaitez pour votre volume. La valeur VOLUME_NAME permet de mapper le volume à l'installation du volume.
    • IP_ADDRESS par l'adresse du partage de fichiers NFS.
    • NFS_PATH par le chemin d'accès au partage de fichiers NFS.
    • IS_READ_ONLY par True pour passer le volume en lecture seule ou False pour autoriser les écritures.
  3. Remplacez la configuration du service en exécutant la commande suivante :

    gcloud beta run jobs replace job.yaml

Résoudre les problèmes liés à NFS

Si vous rencontrez des problèmes, vérifiez les points suivants :

  • Votre service Cloud Run est connecté au réseau VPC sur lequel le serveur NFS est activé.
  • Aucune règle de pare-feu n'empêche Cloud Run d'atteindre le serveur NFS.
  • Si votre conteneur écrit sur votre serveur NFS, assurez-vous qu'il s'exécute en tant qu'utilisateur racine.