我们使用 Pivotal Cloud Foundry 的 YML 文件来设置环境。一切都很好。根据 DEVOPS,如果我们必须修改/创建环境变量,我们必须修改 YML 并再次推送应用程序。我想知道是否可以在 PCF 应用程序运行时修改/创建环境变量。如果无需重新部署应用程序就可以完成,那将是非常酷的。如果做不到,是不是因为Java处理环境的方式?
谢谢
我们使用 Pivotal Cloud Foundry 的 YML 文件来设置环境。一切都很好。根据 DEVOPS,如果我们必须修改/创建环境变量,我们必须修改 YML 并再次推送应用程序。我想知道是否可以在 PCF 应用程序运行时修改/创建环境变量。如果无需重新部署应用程序就可以完成,那将是非常酷的。如果做不到,是不是因为Java处理环境的方式?
谢谢
我们可以在运行时更改/修改 PCF(Pivotal Cloud Foundy)中的环境吗?
是和不是。
cf set-env
您可以在应用程序运行时使用(设置或更新)和cf unset-env
(删除)修改与应用程序关联的环境变量。
这将在您运行命令时更新 Cloud Controller 中的环境变量。但是,这不会更新正在运行的应用程序容器内的环境变量。为了让您的应用程序看到您所做的更改,您cf restart
必须cf restage
或cf push
。
这与语言细节无关(即,您使用的语言无关紧要)。这是一个要求,因为运行应用程序的容器是使用一组固定的环境变量创建的。当这些变化时,必须重新创建容器。也就是说,即使容器可以在运行时更改,在 Linux 中,进程的环境变量也不能在运行时从外部更新(技术上有一些方法可以做到这一点,但实际上你不太可能这样做)。应该重新启动进程本身以更改环境变量。
如果你想在运行时更新你的配置,你可以看看Spring Cloud Config server & its refresh capabilities 之类的东西。也就是说,事实证明,大多数应用程序和框架都假定在应用程序启动时读取一次配置,因此您的应用程序还需要支持在运行时更改您想要更改的配置。