CloudFoundry用户提供的服务与环境变量

时间:2018-10-22 20:14:42

标签: cloudfoundry

全部

我正在寻找一种指定环境特定的配置值的方法。我正在努力了解何时使用用户提供的服务与环境变量。看来我可以通过任何一种方式完成我所需要的。

一些比较点...

用户提供的服务:

  • 仅限于空间
  • 由相同空间中的应用共享
  • 应用必须明确绑定到它
  • 逻辑上与组相关的属性(例如URL,用户名,密码)

环境变量:

  • 特定于应用程序

我的特定用例涉及连接到MQ。在CloudFoundry之外,我将拥有特定于环境的配置文件,其中包含主机名,队列名等。我认为CF环境变量是一个近似的模拟,但我认为对于数据库也是如此,但是我看到了许多使用用户的示例提供的数据库服务。

谢谢

3 个答案:

答案 0 :(得分:1)

如果您要存储凭据,我建议您使用Cloud Foundry的Credhub或Hashicorp的Vault之类的服务。

我认为,更简化的方法是Credhub,因为它是在考虑CF的情况下设计的。它具有一个服务代理,使应用程序可以获取凭据。

答案 1 :(得分:0)

您阐明的用例非常适合Spring Cloud Config。

特定于环境的设置将在配置库中外部化。

这是一篇很好的文章,解释了如何利用给定环境/配置文件的外部属性-https://www.baeldung.com/spring-cloud-configuration

接下来的问题是,您不想将凭证放入git仓库中。那是对的。

为避免损害这样的信誉,Spring Cloud Config允许与Vault集成。保险柜是HashiCorp提供的加密凭据存储。您将必须安装并设置它。

从DZone查看这篇文章,了解如何将Vault与SC Config集成-https://dzone.com/articles/integrating-vault-with-spring-cloud-config-server

关于您对用户提供的服务的疑问,您可以使用CUPS,但是更好的方法是使用Service Broker。 AWS,GCP和Azure提供了自己的Service Broker磁贴,Ops团队可以将其安装在PCF上。这样,您可以以安全的方式访问AWS / GCP / Azure提供的任何资源。

您始终可以编写自己的服务代理-https://pivotal.io/open-service-broker

答案 2 :(得分:0)

从根本上讲,用户提供的服务和环境变量是完全一样的。用户提供的服务只是与Cloud Foundry一起使用的另一种抽象,并为您的数据提供某种结构。最终,所有内容都会作为环境变量呈现给您的应用。

对我来说,最大的问题是如何在我的应用程序中使用这些信息。如果我使用的应用程序框架很容易从环境变量中提取配置,那么我将使用环境变量。我为我的Python / Flask应用程序执行此操作,听说它也适用于Ruby on Rails(尽管我不是Rails用户)。

我通常会使用Java / Spring应用程序的用户提供的服务,因为它们在Spring Cloud Connector中更容易使用。不过这有点麻烦,因为Spring Boot使得使用环境变量的值也非常容易。

我发现环境变量也更易于使用。在CF中,没有cli命令来查看用户提供的服务。您必须将服务绑定到某些东西,然后查看cf env,这很尴尬。

无论如何,不​​要过分强调。选择让您的应用更容易的方式。


仅供参考,@ poy的解决方案也很好。但是,这还需要更多工作,因此您必须确定您的项目是否真的需要它。