【问题标题】:User provided service in cloud foundryCloud Foundry 中的用户提供服务
【发布时间】:2016-12-14 08:32:32
【问题描述】:

我阅读了有关用户提供服务的 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 ?

【问题讨论】:

    标签: cloud cloud-foundry


    【解决方案1】:
    1. 我的问题是它的用例是什么?

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

    2.什么时候推荐使用,什么时候不推荐使用?

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

    例如:如果您的应用程序正在寻找绑定的 MySQL 服务(即在所有绑定的服务中搜索特定类型的服务),您通常会查看标签和标签以通用方式找到它。如果您绑定用户提供的服务,则不会获得此信息,因此您必须查看服务数据(即是否有 URL、它的外观等)或模式匹配名称以进行区分。

    1. 我可以使用一些真实世界的示例来创建它,我的意思是一些 E2E 指南?

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

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

    例如:

    1. 服务实例的范围为组织和空间。如果您想将服务从一个组织和空间共享到另一个组织和空间,您可以在第二个组织和空间中创建用户提供的服务,并传递来自第一个组织和空间的凭据。

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

    3. 将任何数据传递给多个应用程序。假设您有一个密钥或通用设置,您希望将其传递给您在 CF 上部署的 10 个应用程序。您可以通过为所有 10 个应用程序设置相同的环境变量来做到这一点,或者您可以将数据放入服务并将服务绑定到所有 10 个应用程序。这使得更改数据变得更容易(更新一个服务而不是 10 个应用程序)并且它可以更好地扩展(想想为 100 个应用程序更新 env 变量)。

    我敢肯定还有其他用例。关键是它们是 CF 的一个灵活部分,您可以使用它在您的应用之间共享数据。

    【讨论】:

    • 非常感谢+1,一个问题,假设我想将它用作用户提供的服务,例如暴露用户实体,我应该怎么做?你能举个例子吗?谢谢!
    • 我的意思是这个 api jsonplaceholder.typicode.com 例如...公开用户实体...
    • 不确定我是否理解您的问题。但是对于您链接到的 Web 服务,您通常会执行类似cf cups -p "url, user, pass" service-name 的操作。然后,您可以提供 API 的 URL 和凭据。其他服务可能有一个令牌或访问密钥和密钥。你可以用那些代替。
    • 谢谢丹尼尔,但是你可以看到这个api没有任何用户和通过,在这种情况下我该怎么办?
    • 你的意思是这样的吗? cf cups -p "jsonplaceholder.typicode.com/users,?,?" myService ,请问用户和密码怎么看? 2. 如果有几个应用程序需要使用这个API,使用这样的东西作为杯子有意义吗?
    【解决方案2】:

    使用 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 boot应用中访问服务

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

    同样将服务名称放在 Manifest 文件中

    services: 
       - oracle-db
    

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

    【讨论】:

    • 我已经尝试对我的 dockerised Django 应用程序采用相同的方法。但是 ${vcap.service...} 变量从未设置,我的应用程序失败。也没有故障排除选项。
    猜你喜欢
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2016-11-10
    相关资源
    最近更新 更多