É possível criar instâncias de serviço fornecidas pelo usuário para utilizar serviços que não estão disponíveis no marketplace. Depois de criadas, essas instâncias se comportam como instâncias de serviço criadas por meio do marketplace. O Kf permite a criação, listagem, atualização, exclusão, vinculação e desvinculação de serviços fornecidos pelo usuário.
Criar uma instância de serviço fornecida pelo usuário
O alias de kf create-user-provided-service é kf cups.
O nome dado a um serviço fornecido pelo usuário precisa ser exclusivo em todas as instâncias de serviço de um espaço, incluindo aqueles criados por um agente de serviços.
Enviar credenciais de serviço para um app
Uma instância de serviço fornecida pelo usuário pode ser usada para enviar credenciais a um app. Por exemplo, um administrador de banco de dados pode ter um conjunto de credenciais para um banco de dados gerenciado fora do Kf, em que estão incluídos o URL, a porta, o nome de usuário e a senha usados para se conectar a ele.
O administrador pode criar um serviço fornecido pelo usuário com essas credenciais, e o desenvolvedor pode vincular a instância de serviço ao app. Isso permite que as credenciais sejam compartilhadas sem sair da plataforma. A vinculação de uma instância de serviço a um app tem o mesmo efeito, não importa se o serviço é fornecido pelo usuário ou pelo marketplace.
O app é configurado com as credenciais fornecidas pelo usuário, e a variável de ambiente de execução do app VCAP_SERVICES é preenchida com informações sobre todos os serviços vinculados a ele.
Um serviço fornecido pelo usuário pode ser criado com credenciais e/ou uma lista de tags.
kf cups my-db -p '{"username":"admin", "password":"test123", "some-int-val": 1, "some-bool": true}' -t "comma, separated, tags"Isso cria a instância de serviço fornecida pelo usuário my-db com as credenciais e as tags fornecidas. As credenciais transmitidas à flag -p precisam estar em um formato JSON válido, seja inline ou carregadas de um caminho de arquivo.
Para entregar as credenciais a um ou mais apps, o usuário pode executar kf bind-service.
Imagine que você tem um app com um serviço vinculado, o serviço fornecido pelo usuário my-db que foi definido acima. A variável de ambiente VCAP_SERVICES desse app terá o seguinte conteúdo:
{
"user-provided": [
{
"name": "my-db",
"instance_name": "my-db",
"label": "user-provided",
"tags": [
"comma",
"separated",
"tags"
],
"credentials": {
"username": "admin",
"password": "test123",
"some-int-val": 1,
"some-bool": true
}
}
]
}
Atualizar uma instância de serviço fornecida pelo usuário
O alias de kf update-user-provided-service é kf uups.
Um serviço fornecido pelo usuário pode ser atualizado com o comando uups. As novas credenciais e/ou tags transmitidas substituem completamente as atuais. Por exemplo, o serviço fornecido pelo usuário my-db de nome kf bind-service foi criado acima para vinculação a um app. Em seguida, o usuário executou o comando.
kf uups my-db -p '{"username":"admin", "password":"new-pw", "new-key": "new-val"}'As credenciais atualizadas só serão refletidas no app depois que o usuário desvincular e vincular novamente o serviço a ele. Não é necessário reiniciar o app. A variável de ambiente VCAP_SERVICES atualizada terá o seguinte conteúdo:
{
"user-provided": [
{
"name": "my-db",
"instance_name": "my-db",
"label": "user-provided",
"tags": [
"comma",
"separated",
"tags"
],
"credentials": {
"username": "admin",
"password": "new-pw",
"new-key": "new-val"
}
}
]
}
As novas credenciais substituem as antigas, e as tags permanecem inalteradas, porque não foram especificadas no comando de atualização.