提问者:小点点

如何通过类似于库伯内特斯的CloudFoundry清单挂载文件?


使用库伯内特斯,我曾经挂载一个包含特性标志的文件作为键/值对。我们的UI将简单地获取文件并读取值。

像这样:将一个文件共享/挂载到pod中的最佳方法是什么?

现在我想对CloudFoundry的清单文件做同样的事情。如何挂载文件以便在部署时在/dist文件夹中可用?

要添加更多信息,当我们挂载文件时,UI可以下载文件并读取内容。我们使用的是React,对服务器的任何调用都必须通过Apigee层。


共1个答案

匿名用户

将文件挂载到CloudFoundry应用程序的典型方法称为卷服务。这需要一个远程文件系统,如NFS或SMB,并将其挂载到您的应用程序容器中。

我不认为这是你想要的。在一个文件中安装可能太过分了。不过你完全可以走这条路。

也就是说,CloudFoundry没有类似于库伯内特斯的内置概念,您可以在其中获取配置并将其挂载为文件。使用CloudFoundry,您确实有一些类似的选项。尽管它们并不完全相同,但您必须确定一个是否适合您的需求。

>

  • 您可以通过环境变量传递config(或者通过用户提供的服务绑定,但也可以通过环境变量VCAP_SERVICES来传递)。这不是一个文件,但也许您可以让您的UI读取它(您没有提到UI如何获取该文件,因此我无法进一步评论。如果您详细说明这一点,例如它是HTTP还是从磁盘读取,我也许可以扩展此选项)。

    如果它绝对需要是一个文件,你的应用程序可以读取环境变量的内容,并在它启动时将其写入磁盘。如果你的应用程序不能像使用Nginx一样做到这一点,你可以在应用程序的根目录中包含一个. profile脚本来读取它并生成文件。例如:ech"$CFG_VAR"

    使用环境变量时还有一些注意事项。其中可以包含多少信息是有限制的(抱歉,我不知道我脑海中的确切值,但我认为它大约在128K左右)。它也不适合二进制配置,在这种情况下,您需要首先对数据进行base64编码。

    您可以从配置服务器中提取配置文件并将其缓存在本地。这可能非常简单。您的应用程序启动时做的第一件事就是伸出手下载文件,将其放在磁盘上,文件将在应用程序的生命周期内持续存在。

    如果你没有像运行Nginx那样的服务器端应用程序,你可以在应用程序的根目录中包含一个. profile脚本(可以是任何可执行脚本),它可以使用curl或其他工具来下载和设置该配置。

    您可以将“配置服务器”替换为HTTP服务器、Git存储库、Vault服务器、CredHub、数据库或任何可以持久存储数据的地方。

    不推荐,但您也可以将配置文件与应用程序一起推送。这就像将其包含在您推送的目录或存档中一样简单。这有一个明显的缺点,即将您的配置与您推送的应用程序位相耦合。这取决于您的工作地点、您必须遵循的策略以及您使用的工具可能重要,也可能不重要。

    您可能还可以使用其他变体。在应用程序启动时或通过. profile脚本加载文件非常灵活。