Introdução aos volumes NFS

O Kf suporta a montagem de volumes NFS através do kf marketplace.

Pré-requisitos

  1. Conclua a configuração da plataforma NFS.

Crie uma instância de serviço NFS

Execute o comando kf marketplace para ver os serviços disponíveis. O serviço NFS integrado aparece na lista se o NFS estiver ativado na plataforma.

Broker           Name  Namespace  Description
nfsvolumebroker  nfs              mount nfs shares

Monte um sistema de ficheiros externo

Crie uma instância de serviço

Para montar num serviço NFS existente:

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

Substitua as variáveis pelos seus valores.

  • SERVICE-INSTANCE-NAME é o nome que quer para esta instância do serviço de volume NFS.
  • SERVER/SHARE é o endereço NFS do seu servidor e partilha.
  • CAPACITY usa o formato de quantidade do Kubernetes.

Confirme que o serviço de volume NFS aparece na sua lista de serviços. Pode esperar um resultado semelhante a este exemplo:

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

Associe a instância do serviço a uma app

Para associar uma instância de serviço NFS a uma app, execute o seguinte comando:

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

Substitua as variáveis pelos seus valores.

  • YOUR-APP-NAME é o nome da app para a qual quer usar o serviço de volume.

  • SERVICE-NAME é o nome da instância do serviço de volume que criou no passo anterior.

  • uid:UID e gid:GID especificam as autorizações de diretório da partilha de montagem.

  • MOUNT-PATH é o caminho para o qual o volume deve ser montado na sua app.

  • (Opcional) "readonly":true é uma string JSON opcional que cria uma montagem só de leitura. Por predefinição, os serviços de volume montam um sistema de ficheiros de leitura/escrita.

Pode listar todas as associações num espaço através do comando kf bindings. Vai ver um resultado semelhante a este exemplo:

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

Aceda ao serviço de volume a partir da sua app

Para aceder ao serviço de volume a partir da sua app, tem de saber que caminho do ficheiro usar no seu código. Pode ver o caminho do ficheiro nos detalhes da associação de serviços, que são visíveis nas variáveis de ambiente da sua app.

Veja as variáveis de ambiente da sua app.

kf vcap-services YOUR-APP-NAME

Substitua YOUR-APP-NAME pelo nome da sua app.

Segue-se um exemplo do resultado do 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"
        }
      ]
    }
  ]
}

Use as propriedades em volume_mounts para qualquer informação exigida pela sua app.

Propriedade Descrição
container_dir String que contém o caminho para o volume montado que associou à sua app.
device_type A libertação do volume NFS. Atualmente, esta funcionalidade só é compatível com dispositivos partilhados. Um dispositivo partilhado representa um sistema de ficheiros distribuído que pode ser montado em todas as instâncias da app em simultâneo.
mode String que informa que tipo de acesso a sua app tem ao NFS, ro (só de leitura) ou rw (leitura e escrita).