【问题标题】:How to parametrize Cloud Foundry service instance?如何参数化 Cloud Foundry 服务实例?
【发布时间】:2015-01-24 06:12:04
【问题描述】:

我的问题可以归结为这种情况: 我想要一个带有单个 REST 入口点的服务返回一些消息。因为它对我非常有用,所以我希望它的实例很少,但每个实例都返回我指定的不同消息。当然,这些服务实例中的每一个都将绑定到少数应用程序。所以我想知道如何完成这样的事情。

在我看来,最好的方法是在 create 调用代理 (http://docs.cloudfoundry.org/devguide/services/adding-a-service.html#create) 期间传递一些参数。但这样做是不可能的。您是否知道创建某些服务的多个实例的方法,这些实例与启动期间传递的某些参数不同?我想拥有完整的 CF 实例管理(如果它崩溃,它应该重新启动等),我想避免将它们创建为具有作为环境变量传递的不同参数的应用程序......

更新:不同消息(和实例)的数量可能非常大,并且它们的内容事先是未知的。这以某种方式取消了使用服务代理计划(每条消息一个计划)的资格。

【问题讨论】:

    标签: configuration cloud-foundry microservices


    【解决方案1】:

    路线图上的功能使用户能够指定配置属性以及 {create,bind,update} 服务实例操作。从平台的角度来看,这些属性是任意且不透明的,平台只会将它们与请求一起传递给代理。代理将负责验证并返回有意义的面向用户的错误消息。代理作者将负责与用户进行带外支持的属性通信。

    听起来您有一个应用程序,它实现了代理 API 端点,并且还提供了 message-endpoint-aaS。您的应用程序将如何在单个端点上提供不同的消息?或者您的应用会支持每个服务实例的端点吗?

    例如。

    对于绑定到服务实例 001 的应用,您的代理返回凭据“url”:“app.route/instances/001”

    获取 /instances/001/ { “消息”:“消息 001” }

    对于绑定到服务实例 002 的应用,您的代理返回凭据“url”:“app.route/instances/002”

    获取 /instances/002/ { “消息”:“消息 002” }

    在我们实现上述功能之前,我建议代理作者允许用户在配置后直接配置实例。

    您的应用可以通过用户可以直接 curl 的 PUT 端点或简单的 GUI (see our docs on service dashboard SSO) 来支持这一点。

    【讨论】:

    • 谢谢!你知道这个新功能什么时候可以使用吗?将服务供应与其初始化分开的问题是谁在调用初始化?看起来最后的某个地方意味着我必须复制 CF 中已经存在的逻辑 - 它正在处理服务代理和服务供应 + 一些容错持久性..
    【解决方案2】:

    不确定我是否正确理解您要执行的操作,但我认为您可能需要考虑为您要实施的服务创建多个 Service Plans。每个计划都将创建具有不同(预定义)参数的服务实例。您需要为此创建自己的service broker

    【讨论】:

    • 感谢您的建议,但我之前曾考虑过,在我的情况下,预定义的消息集不是一个选项。我会质疑这一点。添加新消息将意味着代理及其重新部署的更改。出于好奇:你知道这种重新部署是否会在已经运行的实例中弄乱一些东西(绑定/取消绑定等?)?
    • 只要服务代理跟踪它提供的任何资源和它为服务实例创建的凭据,并在代理应用程序重新启动时保留此信息,以便它与 CC 保持同步了解代理提供的服务实例,然后可以根据需要重新部署代理应用。
    猜你喜欢
    • 2021-12-16
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多