Serviços fornecidos pelos utilizadores

Os utilizadores podem tirar partido de serviços que não estão disponíveis no mercado criando instâncias de serviços fornecidas pelos utilizadores. Depois de criadas, as instâncias de serviços fornecidas pelo utilizador comportam-se como instâncias de serviços criadas através do mercado. A criação, a listagem, a atualização, a eliminação, a associação e a desassociação de serviços fornecidos pelo utilizador são suportadas no Kf.

Crie uma instância de serviço fornecida pelo utilizador

O alias de kf create-user-provided-service é kf cups.

O nome atribuído a um serviço fornecido pelo utilizador tem de ser exclusivo em todas as instâncias de serviço num espaço, incluindo os serviços criados através de um agente de serviços.

Forneça credenciais de serviço a uma app

Pode usar uma instância de serviço fornecida pelo utilizador para fornecer credenciais a uma app. Por exemplo, um administrador de base de dados pode ter um conjunto de credenciais para uma base de dados existente gerida fora do Kf, e estas credenciais incluem o URL, a porta, o nome de utilizador e a palavra-passe usados para estabelecer ligação à base de dados.

O administrador pode criar um serviço fornecido pelo utilizador com as credenciais e o programador pode associar a instância do serviço à app. Isto permite que as credenciais sejam partilhadas sem nunca sair da plataforma. A associação de uma instância de serviço a uma app tem o mesmo efeito, independentemente de o serviço ser um serviço fornecido pelo utilizador ou um serviço de mercado.

A app está configurada com as credenciais fornecidas pelo utilizador, e a variável de ambiente de tempo de execução da app VCAP_SERVICES é preenchida com informações sobre todos os serviços associados a essa app.

Pode criar um serviço fornecido pelo utilizador com credenciais e/ou uma lista de etiquetas.

kf cups my-db -p '{"username":"admin", "password":"test123", "some-int-val": 1, "some-bool": true}' -t "comma, separated, tags"

Isto cria a instância de serviço fornecida pelo utilizador my-db com as credenciais e as etiquetas fornecidas. As credenciais transmitidas ao parâmetro -p têm de ser um JSON válido (incorporado ou carregado a partir de um caminho de ficheiro).

Para fornecer as credenciais a uma ou mais apps, o utilizador pode executar kf bind-service.

Suponhamos que temos uma app com um serviço associado, o serviço fornecido pelo utilizador my-db definido acima. A variável de ambiente VCAP_SERVICES para essa app vai 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
      }
    }
  ]
}

Atualize uma instância de serviço fornecida pelo utilizador

O alias de kf update-user-provided-service é kf uups.

Um serviço fornecido pelo utilizador pode ser atualizado com o comando uups. As novas credenciais e/ou etiquetas transmitidas substituem completamente as existentes. Por exemplo, se o utilizador criou o serviço fornecido pelo utilizador my-db acima, denominado kf bind-service, para associar o serviço a uma app e, em seguida, executou o comando.

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

As credenciais atualizadas só são refletidas na app depois de o utilizador desassociar e voltar a associar o serviço à app. Não é necessário reiniciar nem voltar a implementar a app. A VCAP_SERVICESvariável de ambiente 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 etiquetas permanecem inalteradas porque não foram especificadas no comando de atualização.