O Kf suporta a montagem de volumes NFS através do kf marketplace
.
Pré-requisitos
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 egid
: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). |