如何通过 GCP 部署管理器更新机器类型 属性

How to update machine type property through GCP deployment manager

我有一个 python 模板,如下所示用于计算实例类型以及其他需要的 config.yaml 文件。

... CONTROLLER_MACHINE_TYPE='n1-standard-8' controller_template = { 'name': 'controller-it', 'type': 'it_template.py', 'properties': { 'machineType': CONTROLLER_MACHINE_TYPE, 'dockerImage': CONTROLLER_IMAGE, 'dockerEnv': { 'ADC_LISTEN_QUEUE': 'controller-subscriber' }, 'zone': ZONE, 'network': NETWORK_NAME, 'saEmail': SA_EMAIL } }

it_template.py 内容

def GenerateConfig(context):
    resources = [{
        'name': context.env['name'],
        'type': 'compute.v1.instanceTemplate',
        'properties': {
            'zone': context.properties['zone'],
            'properties': {
                "machineType": context.properties['machineType'],
                "metadata": {
                    "items": [{
                        "key": 'gce-container-declaration',
                        "value": GenerateManifest(context)
                    }]
                }, ...

我已经用名为 qa 的环境部署了它。一段时间后,我意识到我需要更改此实例的机器类型。例如,我希望我的 qa 环境更新该资源的机器类型,而不是 n1-standard-8。

但是我没有看到任何提到更新任何资源的 属性 的示例。

我们可以使用 gcp 部署管理器更新环境中资源的 属性 吗? 或者我需要使用其他名称和所需的机器类型添加新资源 属性?

更新

按照@jordi Miralles 的建议,我修改了我的模板以将 machineType 设置为 n1-standard-16 并尝试更新部署。

但是我遇到了以下错误

云部署管理器部署更新 qa --config dm_config.yaml 部署的指纹为KkD38j9KYiBTiaIW8SltbA== 等待更新 [operation-1525444590548-56b623ef1b421-b4733efd-53174d1b]...失败。<br> 错误:(gcloud.deployment-manager.deployments.update)操作错误[operation-1525444590548-56b623ef1b421-b4733efd-53174d1b]:错误: -代码:NO_METHOD_TO_UPDATE_FIELD 消息:找不到更新资源 'controller-it' 上的字段 'properties' 的方法 类型 'compute.v1.instanceTemplate'。资源可能需要重新创建 新领域。

请帮忙。

您可以在您的部署管理器中更新资源,如果您想要更改资源,则无需使用不同的名称创建一个新资源。参见 updating a deployment

您可以将现有部署 yaml 文件与要应用的更改一起使用,然后更新现有部署:

gcloud deployment-manager deployments update [EXISTING DEPLOYMENT] --config [UPDATED YAML]

请注意您的实例必须停止changing machine type 的所有其他含义均适用。此外,您的任何永久性磁盘上的数据都不会丢失。

记得在更新完成后开启实例!