我们正在使用基于队列的托管实例缩放。 我们需要按实例组在虚拟机上设置环境变量(以便可以使用同一虚拟机映像订阅不同实例组中的不同队列)。创建实例组时,我没有看到定义环境变量的选项。
有没有办法跨多个实例组使用相同的映像,并且仍然根据实例组级别的不同环境变量或其他方式实现不同的虚拟机行为?
示例:使用相同的虚拟机映像创建 2 个托管实例组。一个将环境变量"queue-name"设置为"queue-1",另一个将"queue-name"设置为"queue-2"。部署到第一个实例组中的 VM 的应用程序从发布/订阅队列"queue-1"拉取任务,在其他组上从"queue-1"拉取任务。
使用两个模板相同的 VM 映像
为了创建具有不同行为的相同虚拟机映像的两个实例组,您绝对可以使用两个不同的实例模板。
通过这种方式,您将能够更改网络配置、启动和关闭脚本或元数据。
例如,您可以使用启动脚本来设置不同的环境变量,并以这种方式连接到一个。像这里这样的堡垒示例。
使用相同的模板相同的 VM 映像
另一方面,如果您无法使用两个不同的模板,我会建议一个小技巧,但我想有几种方法可以做到这一点。
正如您所注意到的,没有直接的方法可以做到这一点(因为有可能在模板创建中已经进行了自定义)。
我会在启动脚本中添加一小部分代码,这些代码使用gcloud
命令了解它所属的实例组的名称,并基于以不同方式设置环境变量的此信息。
通过这种方式,您只需遵循某种模式来命名您的实例,但我相信您可以找到更优雅的解决方案。
或者您甚至可以根据机器的主机名做出决定(但我更喜欢这个解决方案)。