O Kf é compatível com a montagem de volumes do NFS usando o kf marketplace
.
Pré-requisitos
Criar uma instância de serviço do NFS
Execute kf marketplace
para mostrar os serviços disponíveis. O serviço integrado do NFS vai aparecer 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 em um serviço NFS:
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 atribuir a 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. O resultado será 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 egid
:GID especificam as permissões do diretório do compartilhamento de montagem.MOUNT-PATH é o caminho em que o volume precisa ser montado no app.
(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: O resultado será 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 pelo app, é preciso saber qual caminho de arquivo usar no código. Confira o caminho do arquivo nos detalhes da vinculação de serviço, que aparecem nas variáveis de ambiente do app.
Confira as variáveis de ambiente do aplicativo.
kf vcap-services YOUR-APP-NAME
Substitua YOUR-APP-NAME pelo nome do app.
Confira um exemplo de 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 pelo app.
Propriedade | Descrição |
---|---|
container_dir |
String que contém o caminho para o volume montado que você vincula ao app. |
device_type |
A versão do volume do NFS. No momento, só há suporte a dispositivos compartilhados. Um dispositivo compartilhado representa um sistema de arquivos distribuído que pode ser montado em todas as instâncias do app simultaneamente. |
mode |
String que informa que tipo de acesso o app tem no NFS: ro (somente leitura) ou rw (leitura e gravação). |