【问题标题】:CF - Working with Apps and changing env variablesCF - 使用应用程序和更改环境变量
【发布时间】:2021-08-26 19:31:08
【问题描述】:

我是这项技术的新手(目前正在学习),我对如何正确使用这些应用程序有疑问。

例如,我有一个带有 2 个实例 (Traefik) 的 app-gateway,我在其中使用了诸如 RESTRICTED_NETWORK_01RESTRICTED_NETWORK_02。

我想替换 RESTRICTED_NETWORK_02 的 de IP 值并应用更改而不影响网关/重定向用户服务。

我应该只使用命令吗:

cf set-env app-gateway RESTRICTED_NETWORK_02 [ipvalue]/24

然后

cf restart-app-instance app-gateway 0
wait until the instance restarts and apply
cf restart-app-instance app-gateway 1

对于这种情况,我应该采取正确的步骤吗?

有什么帮助吗?

【问题讨论】:

    标签: devops manifest cloud-foundry


    【解决方案1】:

    cf restart-app-instance app-gateway 0

    这可能不会做你想要的,至少不可靠。此命令通过终止您的应用程序实例来工作,然后允许它重新启动。如果您的应用实例处于不良状态但未崩溃或未通过健康检查(或者对于需要使应用崩溃的演示),这通常很有用。

    就环境变量而言,它的效果并不好。这是因为您所做的环境变量更改驻留在 Cloud Controller 中,但您的应用程序在调度程序 (Diego) 上运行。调度程序有一份来自云控制器的数据副本,告诉它如何运行应用程序,包括应该设置的环境变量。您引用的命令不会导致云控制器更新它已发送到调度程序 (Diego) 的应用程序定义。它只会导致进程被调度程序使用相同的定义终止和重新启动。

    您的里程可能会有所不同,因为我听说有人说cf restart-app-instance 可用于更新环境变量(我真的不明白它会如何,但我也没有调查他们的说法)。你可以试试看,但我看到的故事通常以问题告终。 tl-dr 它并不能始终如一地工作。

    要可靠地更新环境变量,您需要使用cf restart。这将重新启动所有应用程序实例。

    要在不停机的情况下重新启动应用程序实例,您应该使用cf restart --strategy=rolling 选项(在 cf cli 的版本 7 中可用)。这将推出更改,只要您有多个应用程序实例,就不会导致停机。

    【讨论】:

    • 非常感谢!很多关于 CF 的宝贵信息我都不知道。我需要将我的 cf 版本 (v6.42) 更新到 v7。我使用 cf v3-zdt-restart 进行了测试,但我的应用程序处于永久部署状态,我不得不使用 cf v3-cancel-zdt-push 来停止它。奇怪的是,我什至在此过程中“丢失”了一个实例。与之前的 2/2 相比,应用程序网关减少到 1/1(即使重新启动也无法恢复第二个实例)。非常感谢丹尼尔的帮助!
    • 您可能还想与您的平台运营商交谈,看看他们部署了哪个版本的 CF。几乎所有最近的版本都应该对滚动部署有很好的支持,但是如果您发现它存在问题并且您使用的是旧版本,那么您的运营团队可能需要升级。虽然拥有 cf7 很重要,但拥有最新版本的云控制器和其他后端服务也很重要。
    • 我能理解。最糟糕的是,他们使用的是相同的版本(2019 年的 v6.42),不幸的是真的已经过时了。我会与主要团队确认他们是否有升级 CF、云控制器和后端服务的计划。再次感谢,因为我是新人,所以这些信息对我来说非常重要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    相关资源
    最近更新 更多