Serviços fornecidos pelo usuário

É 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 da criação, as instâncias de serviço fornecidas pelo usuário se comportam como as instâncias de serviço criadas no 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 Space, incluindo aqueles criados por um agente de serviços.

Enviar credenciais de serviço para um aplicativo

Uma instância de serviço fornecida pelo usuário pode ser usada para enviar credenciais a um aplicativo. Por exemplo, um administrador de banco de dados pode ter um conjunto de credenciais para um banco de dados gerenciado fora do Kf, e essas credenciais incluem o URL, a porta, o nome de usuário e a senha usados para se conectar ao banco de dados.

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 aplicativo. Isso permite que as credenciais sejam compartilhadas sem sair da plataforma. A vinculação de uma instância de serviço a um aplicativo tem o mesmo efeito, e não importa se o serviço é fornecido pelo usuário ou pelo Marketplace.

O aplicativo é configurado com as credenciais fornecidas pelo usuário, e a variável de ambiente de execução do aplicativo 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 my-db de serviço fornecida pelo usuário 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 enviar as credenciais a um ou mais aplicativos, o usuário pode executar kf bind-service.

Imagine que você tem um aplicativo com um serviço vinculado, o serviço fornecido pelo usuário my-db definido acima. A variável de ambiente VCAP_SERVICES desse aplicativo 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, caso o usuário tenha criado o serviço fornecido pelo usuário my-db acima, chamado kf bind-service para vincular o serviço a um aplicativo e, em seguida, executado o comando.

kf uups my-db -p '{"username":"admin", "password":"new-pw", "new-key": "new-val"}'

As credenciais atualizadas só serão refletidas no aplicativo depois que o usuário desvincular e vincular novamente o serviço a ele. Não é necessário reiniciar o aplicativo. 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.