Cloud Foundry 中用户提供的服务

User provided service in cloud foundry

我阅读了有关用户提供的服务的 Cloud Foundry 文档,但不确定我是否了解它以及如何真正使用它。

> 1. my question is what is the use case for it?

(我知道该服务在市场上不可用...)

> 2.when it recommended to use it and when not ?
>  
> 3. There is some real world example for it which I can use to create, I mean some  E2E guide ?
  1. my question is what is the use case for it?

它基本上是一个包罗万象的东西。它旨在处理您环境中服务代理未涵盖的任何内容。此外,它还为您提供了将信息传递到您的应用程序的额外灵活性。

2.when it recommended to use it and when not ?

如果您有可用的服务代理,请使用它。服务代理对 CF 开发人员来说更容易使用,它们还可以提供额外的元数据,例如您无法使用用户提供的服务设置的标签和标记。此附加元数据使应用程序更容易检测和处理服务。

Ex:如果您的应用程序正在寻找绑定的 MySQL 服务(即搜索所有绑定的服务以查找特定类型的服务),您通常会查看标签和标记以在通用方式。如果绑定用户提供的服务,则无法获得此信息,因此您必须查看服务数据(即是否有 URL、它看起来像什么等)或模式匹配名称区分一下。

  1. There is some real world example for it which I can use to create, I mean some E2E guide ?

使用用户提供的服务的最简单和最常见的情况是绑定没有可用服务代理的服务。这可能是您创建的自定义服务,也可能只是 CF 安装/提供程序不支持的内容。

因为用户提供的服务是一种将数据绑定到应用程序的通用机制,您也可以将其用于其他用途。

例如:

  1. 服务实例的范围限定为一个组织 & space。如果您想从一个组织 & space 共享服务到另一个组织 & space,您可以在第二个组织 & space 中创建用户提供的服务,并从第一个组织 & space.

  2. 将应用程序变成服务。也许您在 PCF 上将微服务部署为应用程序。如果你想让另一个应用程序使用你的微服务,你可以创建一个用户提供的服务并将你的微服务的 URL 传递给消费应用程序。当然,您也可以通过其他方式执行此操作,但这是在 CF 上实现它的一种非常简单的方法。

  3. 将任何数据传递给多个应用程序。假设您有一个密钥或通用设置要传递给您在 CF 上部署的 10 个应用程序。您可以通过为所有 10 个应用程序设置相同的环境变量来实现此目的,或者您可以将数据放入服务并将该服务绑定到所有 10 个应用程序。这使得更改数据更容易(更新一项服务与 10 个应用程序)并且它的扩展性更好(考虑为 100 个应用程序更新环境变量)。

我相信还有其他用例。重点是它们是 CF 的灵活部分,您可以使用它们在您的应用程序之间共享数据。

使用 CLI 在 Pivotal Cloud Foundry 中创建用户提供的服务

cf cups oracle-db -p "url, username, password"
url> jdbc:oracle:thin:@database_host_name:port/sid    
username> admin
password> admin
Creating user provided service oracle-db in org
OK

访问 spring 启动应用程序中的服务

 datasource:
    url: ${vcap.services.oracle-db.credentials.url}
    username: ${vcap.services.oracle-db.credentials.username}
    password: ${vcap.services.oracle-db.credentials.password}

同时将服务名称放在清单文件中

services: 
   - oracle-db

如果您需要完整的演示 spring 下面的启动应用程序是 link https://github.com/rathore-girdharsingh/pcf-oracle-user-provided-service