Activaciones de volumen NFS para servicios

En esta página, se muestra cómo activar un archivo compartido NFS como un volumen en Cloud Run. Puedes usar cualquier servidor NFS, incluido tu propio servidor NFS alojado de forma local o en una VM de Compute Engine. Si aún no tienes un servidor NFS, te recomendamos Filestore, que es una oferta de NFS completamente administrada de Google Cloud.

Si quieres usar sistemas de archivos de red NBD, 9P, CIFS/Samba y Ceph, consulta cómo usar los sistemas de archivos de red NBD, 9P, CIFS/Samba y Ceph.

Limitaciones

  • Para escribir en un volumen NFS, el contenedor debe ejecutarse como raíz. Si el contenedor solo lee desde el sistema de archivos, puede ejecutarse como cualquier usuario.

  • Cloud Run no admite el bloqueo de NFS. Los volúmenes NFS se activan de forma automática en el modo sin bloqueo.

Antes de comenzar

Para activar un servidor NFS como un volumen en Cloud Run, asegúrate de tener lo siguiente:

  • Una red de VPC en la que se ejecuta tu servidor NFS o la instancia de Filestore.
  • Un servidor NFS que se ejecuta en una red de VPC, con el servicio de Cloud Run conectado a esa red de VPC. Si aún no tienes un servidor NFS, crea uno mediante la creación de una instancia de Filestore.
  • El servicio de Cloud Run está conectado a la red de VPC en la que se ejecuta el servidor NFS. Para obtener el mejor rendimiento, usa VPC directa en lugar de conectores de VPC.
  • Si usas un proyecto existente, asegúrate de que la configuración del firewall de VPC permita que Cloud Run llegue al servidor NFS. (Si comienzas desde un proyecto nuevo, esto es así de forma predeterminada). Si usas Filestore como tu servidor NFS, sigue la documentación de Filestore para crear una regla de salida de firewall a fin de permitir que Cloud Run llegue a Filestore.

Activa un volumen NFS

Puedes activar varios servidores NFS, instancias de Filestore y otros tipos de volúmenes en diferentes rutas de activación.

Si usas varios contenedores, primero especifica los volúmenes y, luego, especifica las activaciones de volúmenes de cada contenedor.

Línea de comandos

Nota: Mostramos el comando gcloud beta run services update, pero también puedes usar el comando gcloud beta run services deploy con los mismos parámetros que se muestran.

  • Para agregar un volumen y activarlo, sigue estos pasos:
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

Reemplaza lo siguiente:

  • SERVICE por el nombre de tu servicio
  • VOLUME_NAME por el nombre que deseas asignar al volumen.
  • IP_ADDRESS por la ubicación del archivo compartido NFS.
  • NFS_PATH por la ruta al archivo compartido NFS.
  • 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.

  • Para activar el volumen como un volumen de solo lectura, sigue estos pasos:

    --add-volume=name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH,readonly=true
  • Si usas varios contenedores, primero especifica los volúmenes y, luego, especifica las activaciones de volúmenes de cada contenedor:

    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

Puedes descargar y ver las configuraciones del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración, ejecuta el siguiente comando:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualiza MOUNT_PATH, VOLUME_NAME, IP_ADDRESS y NFS_PATHsegún sea necesario. Si tienes varias activaciones de volumen, tendrás múltiplos de estos atributos.

    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

    Reemplazar

    • SERVICE por el nombre del servicio de Cloud Run
    • 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.
    • IP_ADDRESS por la dirección del archivo compartido NFS.
    • NFS_PATH por la ruta al archivo compartido NFS.
    • IS_READ_ONLY por True para que el volumen sea de solo lectura o False para permitir escrituras.
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud beta run services replace service.yaml

Solución de problemas de NFS

Si tienes problemas, verifica lo siguiente:

  • Tu servicio de Cloud Run está conectado a la red de VPC en la que se encuentra el servidor NFS.
  • No hay reglas de firewall que impidan que Cloud Run llegue al servidor NFS.
  • Si el contenedor escribe en tu servidor NFS, asegúrate de que se ejecute como raíz.