如何通过 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 的所有其他含义均适用。此外,您的任何永久性磁盘上的数据都不会丢失。
记得在更新完成后开启实例!
我有一个 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 的所有其他含义均适用。此外,您的任何永久性磁盘上的数据都不会丢失。
记得在更新完成后开启实例!