用户可以通过创建用户提供的服务实例来利用市场中未提供的服务。创建后,用户提供的服务实例的行为类似于通过市场创建的服务实例。Kf 支持创建、列出、更新、删除、绑定和取消绑定用户提供的服务。
创建用户提供的服务实例
kf create-user-provided-service
的别名为 kf cups
。
赋予用户提供的服务的名称在空间中的所有服务实例(包括通过 Service Broker 创建的服务)中必须具有唯一性。
将服务凭据传送到应用
用户提供的服务实例可用于向应用传送凭据。例如,数据库管理员可以为在 Kf 外管理的现有数据库设置一组凭据,这些凭据包括用于连接到数据库的网址、端口、用户名和密码。
管理员可以使用凭据创建用户提供的服务,而开发者可以将服务实例绑定到应用。这样,无需离开平台即可共享凭据。将服务实例绑定到应用后,无论服务是用户提供的服务还是市场服务,会产生相同的效果。
应用可使用用户提供的凭据进行配置,应用运行时环境变量 VCAP_SERVICES
会填充该应用的所有绑定服务的相关信息。
可以使用凭据和/或标记列表创建用户提供的服务。
kf cups my-db -p '{"username":"admin", "password":"test123", "some-int-val": 1, "some-bool": true}' -t "comma, separated, tags"
这将使用提供的凭据和标记创建用户提供的服务实例 my-db
。传递给 -p
标志的凭据必须是有效的 JSON(内嵌或从文件路径加载)。
要向一个或多个应用传送凭据,用户可以运行 kf bind-service
。
假设我们有一个具有一项绑定服务的应用,该服务是上面定义的用户提供的服务 my-db
。该应用的 VCAP_SERVICES
环境变量将包含以下内容:
{
"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
}
}
]
}
更新用户提供的服务实例
kf update-user-provided-service
的别名为 kf uups
。
您可以使用 uups
命令更新用户提供的服务。新传入的新凭据和/或标记会完全覆盖现有凭据和/或标记。例如,如果用户创建了上述用户提供的服务 my-db
(名为 kf bind-service
),用于将服务绑定到应用,然后运行以下命令。
kf uups my-db -p '{"username":"admin", "password":"new-pw", "new-key": "new-val"}'
只有在用户取消绑定服务并将其重新绑定到应用后,更新后的凭据才会反映在应用上。无需重启或重新暂存应用。更新后的 VCAP_SERVICES
环境变量将包含以下内容:
{
"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"
}
}
]
}
新凭据会覆盖旧凭据,并且未更改标记,因为未在更新命令中指定它们。