【问题标题】:How to set environment variables on the VMs at managed instance group level如何在托管实例组级别的 VM 上设置环境变量
【发布时间】:2018-08-13 00:41:24
【问题描述】:

我们正在使用queue based managed instance scaling。我们需要通过实例组在 VM 上设置环境变量(以便可以使用相同的 VM 映像订阅不同实例组中的不同队列)。创建实例组时,我没有看到定义环境变量的选项。

有没有办法在多个实例组中使用相同的映像,并且仍然基于实例组级别的不同环境变量或其他方式实现不同的 VM 行为?

示例:使用相同的 VM 映像创建 2 个托管实例组。一个将环境变量“queue-name”设置为“queue-1”,另一个将“queue-name”设置为“queue-2”。部署到第一个实例组中的虚拟机的应用程序从发布/订阅队列“queue-1”中提取任务,而其他组中的应用程序从“queue-1”中提取任务。

【问题讨论】:

  • 嗨,我不确定我是否正确理解了您想要实现的目标,但我认为这是可能的。您是否想根据其所属的管理组(使用环境变量)来塑造相同图像的行为?你能提供一个小例子来更好地解释它吗?
  • 感谢@GalloCedrone 的快速响应。我在问题中添加了一个示例。该映像包含一个应用程序,该应用程序根据环境变量中设置的队列名称决定从发布/订阅队列中拉取。

标签: google-cloud-platform google-compute-engine google-kubernetes-engine


【解决方案1】:

使用两个模板相同的 VM 映像

要使用具有不同行为的相同 VM 映像创建两个实例组,您绝对可以使用两个不同的 instance templates

通过这种方式,您将能够更改网络配置、启动和关闭脚本或元数据。

例如,您可以使用startup script 来设置不同的环境变量并以这种方式连接到一个。例如here

使用相同的模板相同的虚拟机映像

另一方面,如果您不能使用两个不同的模板,我会提出一个小技巧,但我想有几种方法可以做到。

正如您所注意到的,没有直接的方法可以做到这一点(因为可以在模板创建中进行自定义)。

我会在启动脚本中添加一小部分代码,使用gcloud 命令了解它所属的实例组的名称,并基于此信息以不同方式设置环境变量.

通过这种方式,您只需要遵循某种模式来命名您的实例,但我相信您可以找到更优雅的解决方案。

或者您甚至可以根据机器的主机名做出决定(但我更不喜欢这种解决方案)。

【讨论】:

    猜你喜欢
    • 2018-11-02
    • 2016-05-24
    • 2018-11-13
    • 2021-04-26
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2017-10-18
    • 2016-03-16
    相关资源
    最近更新 更多