Configurar volumes NFS

O Kf é compatível com a montagem de volumes do NFS usando o kf marketplace.

Pré-requisitos

Conclua a configuração da plataforma do NFS.

Criar uma instância de serviço do NFS

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

Broker           Name  Namespace  Description
nfsvolumebroker  nfs              mount nfs shares

Montar um sistema de arquivos externo

Criar uma instância de serviço

Para montar um serviço do 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 você quer para essa instância de serviço de volume do NFS.
  • SERVER/SHARE é o endereço do NFS do servidor e compartilhamento.
  • CAPACITY usa o formato de quantidade do Kubernetes.

Confirme se o serviço de volume do NFS aparece na sua lista de serviços. Você verá uma saída 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>
...

Vincular sua instância de serviço a um aplicativo

Para vincular uma instância de serviço do NFS a um aplicativo, execute:

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 do aplicativo com que você quer usar o serviço de volume.

  • SERVICE-NAME é o nome da instância de serviço de volume que você criou na etapa anterior.

  • uid:UID e gid:GID especificam as permissões do diretório do compartilhamento de montagem.

  • MOUNT-PATH é o caminho em que o volume precisa ser montado no seu aplicativo.

  • (Opcional) "readonly":true é uma string JSON opcional que cria uma montagem somente leitura. Por padrão, os serviços de volume montam um sistema de arquivos de leitura e gravação.

Use o comando kf bindings para listar todas as vinculações em um Space: Você 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
...

Acessar o serviço de volume no aplicativo

Para acessar o serviço de volume do seu aplicativo, é preciso saber qual caminho de arquivo usar no código. Veja o caminho do arquivo nos detalhes da vinculação de serviço, que são visíveis nas variáveis de ambiente do seu aplicativo.

Veja as variáveis de ambiente do aplicativo:

kf vcap-services YOUR-APP-NAME

Substitua YOUR-APP-NAME pelo nome do aplicativo.

Veja a seguir um exemplo de saída 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 pelo aplicativo.

Propriedade Descrição
container_dir String que contém o caminho para o volume montado que você vincula ao seu aplicativo.
device_type A versão do volume do NFS. No momento, só é compatível com dispositivos compartilhados. Um dispositivo compartilhado representa um sistema de arquivos distribuído que pode ser montado em todas as instâncias do aplicativo simultaneamente.
mode String que informa que tipo de acesso seu aplicativo tem para o NFS: ro (somente leitura) ou rw (leitura e gravação).