Configurar volúmenes NFS

Kf admite la activación de volúmenes NFS mediante el kf marketplace.

Requisitos previos

Completa la configuración de la plataforma NFS.

Crea una instancia de servicio de NFS

Ejecuta kf marketplace para ver los servicios disponibles. El servicio NFS integrado aparecerá en la lista si NFS está habilitado en la plataforma.

Broker           Name  Namespace  Description
nfsvolumebroker  nfs              mount nfs shares

Activa un sistema de archivos externo

Crea una instancia de servicio

Para activar un servicio NFS existente, sigue estos pasos:

kf create-service nfs existing SERVICE-INSTANCE-NAME -c '{"share":"SERVER/SHARE", "capacity":"CAPACITY"}'

Reemplaza las variables con tus valores.

  • SERVICE-INSTANCE-NAME es el nombre que deseas para esta instancia de servicio de volumen de NFS.
  • SERVER/SHARE es la dirección NFS del servidor y el archivo compartido.
  • CAPACITY usa el formato de cantidad de Kubernetes.

Confirma que el servicio de volumen de NFS aparezca en tu lista de servicios. Puedes esperar un resultado similar a este ejemplo:

$ kf services
...
Listing services in Space: demo-space
Name                Type      ClassName         PlanName  Age    Ready  Reason
filestore-nfs       volume    nfs               existing  6s     True   <nil>
...

Vincula una instancia de servicio a una app

Para vincular una instancia de servicio NFS a una app, ejecuta el siguiente comando:

kf bind-service YOUR-APP-NAME SERVICE-NAME -c '{"uid":"2000","gid":"2000","mount":"MOUNT-PATH","readonly":true}'

Reemplaza las variables con tus valores.

  • YOUR-APP-NAME es el nombre de la app para la que deseas usar el servicio de volumen.

  • SERVICE-NAME es el nombre de la instancia de servicio de volumen que creaste en el paso anterior.

  • uid:UID y gid:GID especifican los permisos de directorio del recurso compartido de activación.

  • MOUNT-PATH es la ruta en la que se debe activar el volumen dentro de la app.

  • "readonly":true es una string JSON opcional que crea una activación de solo lectura (opcional). De forma predeterminada, los servicios de volumen activan un sistema de archivos de lectura y escritura.

Puedes enumerar todas las vinculaciones de un espacio con el comando kf bindings. Verás un resultado similar a este ejemplo:

$ kf bindings
...
Listing bindings in Space: demo-space
Name                                     App           Service             Age  Ready
binding-spring-music-filestore-nfs       spring-music  filestore-nfs       71s  True
...

Accede al servicio de volumen desde tu app

Para acceder al servicio de volumen desde tu app, debes saber qué ruta de archivo usar en tu código. Puedes ver la ruta del archivo en los detalles de la vinculación del servicio, que se pueden ver en las variables de entorno de tu aplicación.

Visualiza las variables de entorno de tu aplicación:

kf vcap-services YOUR-APP-NAME

Reemplaza YOUR-APP-NAME por el nombre de tu conector.

El siguiente es un resultado de ejemplo del comando kf vcap-services:

kf vcap-services *YOUR-APP-NAME*
{
  "nfs": [
    {
      "instance_name": "nfs-instance",
      "name": "nfs-instance",
      "label": "nfs",
      "tags": [],
      "plan": "existing",
      "credentials": {
        "capacity": "1Gi",
        "gid": 2000,
        "mount": "/test/mount",
        "share": "10.91.208.210/test",
        "uid": 2000
      },
      "volume_mounts": [
        {
          "container_dir": "/test/mount",
          "device_type": "shared",
          "mode": "rw"
        }
      ]
    }
  ]
}

Usa las propiedades que se encuentran en volume_mounts para cualquier información que requiera la app.

Propiedad Descripción
container_dir String que contiene la ruta de acceso al volumen activado que vinculaste a la app.
device_type La versión del volumen de NFS. Por el momento, solo se admiten dispositivos compartidos. Un dispositivo compartido representa un sistema de archivos distribuido que se puede activar en todas las instancias de la app al mismo tiempo.
mode String que informa qué tipo de acceso tiene la app a NFS, ya sea ro (de solo lectura) o rw (de lectura y escritura).