Диспетчер развертывания не может обновить шаблоны экземпляров - NO_METHOD_TO_UPDATE_FIELD - PullRequest
0 голосов
/ 06 октября 2018

У меня есть развертывание, включающее группу управляемых экземпляров и два шаблона экземпляров (A и B).Первоначально развертывание было создано с использованием группы экземпляров, ссылающейся на шаблон экземпляра A.

Я попытался обновить sourceImage в шаблоне экземпляра B с помощью диспетчера развертывания ( gcloud beta - развертывания развертываний - менеджер обновлений my-deploying --template... ), но получил следующую ошибку:

ERROR: (gcloud.beta.deployment-manager.deployments.update) Error in 
Operation [operation-1538798895713-57787898f4ae9-8b478716-0bb72a09]: 
errors:
- code: NO_METHOD_TO_UPDATE_FIELD
  message: No method found to update field 'properties' on 
  resource 'fwp-app-preprod-instance-template-a' of type 
  'compute.v1.instanceTemplate'. The resource may need to be
  recreated with the new field.

Я должен пояснить, что единственное изменение, которое я сделал в исходном развертывании, - это sourceImage шаблона экземпляра.

Isможно выполнить обновление шаблона экземпляра через менеджер развертывания, чтобы он ссылался на обновленный sourceImage?

Ошибка ясно указывает на то, что ресурс (шаблон экземпляра) может потребоваться воссоздать, и я рад заДиспетчер развертывания, чтобы сделать это.Но я не знаю, как инструктировать / заставить администратора развертывания выполнить это действие.

Я не сомневаюсь, что это можно сделать вне администратора развертывания, но я хочу избежать отклонения конфигурации.

Мой app.jinja.schema:

imports:
- path: instance-group.jinja
- path: instance-template.jinja

Мой app.jinja:

resources:
- name: instance-template-a
  type: instance-template.jinja
  properties:
    name: {{ env["deployment"] }}-instance-template-a
    machineType: g1-small
    sourceImage: "projects/my-project/global/images/my-image"
    diskSizeGb: '30'

- name: instance-template-b
  type: instance-template.jinja
  properties:
    name: {{ env["deployment"] }}-instance-template-b
    machineType: g1-small
    sourceImage: "projects/my-project/global/images/my-image"
    diskSizeGb: '30'

- name: fwp-instance-group
  type: instance-group.jinja

Мой экземпляр-group.jinja:

resources:
- name: 'instance-group-{{ env["deployment"] }}'
  type: compute.v1.regionInstanceGroupManager
  properties:
    baseInstanceName: ig-instance-{{ env["deployment"] }}
    instanceTemplate: '$(ref.{{ env["deployment"] }}-instance-template-a.selfLink)'
    targetSize: 1
    region: australia-southeast1

- name: 'autoscaler-{{ env["deployment"] }}'
  type: compute.v1.regionAutoscalers
  properties:
    autoscalingPolicy:
      coolDownPeriodSec: 60
      loadBalancingUtilization:
        utilizationTarget: 0.9
      maxNumReplicas: 10
      minNumReplicas: 2
    target: $(ref.instance-group-{{ env["deployment"] }}.selfLink)
    region: australia-southeast1

И мой экземпляр-template.jinja

resources:
- name: {{ properties["name"] }}
  type: compute.v1.instanceTemplate
  properties:
    name: {{ properties["name"] }}
    description: ''
    properties:
      machineType: {{ properties["machineType"] }}
      tags:
        items:
        - no-ip
        - web-server
        - http-server
        - https-server
      disks:
      - type: 'PERSISTENT'
        boot: true
        mode: 'READ_WRITE'
        autoDelete: true
        deviceName: instance-device
        initializeParams:
          sourceImage: {{ properties["sourceImage"] }}
          diskType: 'pd-standard'
          diskSizeGb: {{ properties["diskSizeGb"] }}
      canIpForward: false
      networkInterfaces:
      - network: projects/my-project/global/networks/vpc-fwp-nonprod
        subnetwork: projects/my-project/regions/australia-southeast1/subnetworks/subnet-private-fwp-nonprod
        aliasIpRanges: []
      labels: { environment: {{ env["deployment"] }}, tenancy: "fwp-nonprod" }
      scheduling:
        preemptible: false
        onHostMaintenance: MIGRATE
        automaticRestart: true
        nodeAffinities: []
      serviceAccounts:
      - email: some-service-account@developer.gserviceaccount.com
        scopes:
        - https://www.googleapis.com/auth/cloud-platform

1 Ответ

0 голосов
/ 12 октября 2018

Чтобы подытожить комментарии:

Конфигурация DM включает шаблон экземпляра для группы управляемых экземпляров.Смена исходного изображения пытается изменить изображение, используемое в шаблоне.

К сожалению, шаблоны экземпляров являются неизменяемыми после создания

"Так что это не такМожно обновить существующий шаблон экземпляра или изменить шаблон экземпляра после его создания. "

Это объясняет возвращаемое сообщение об ошибке.Правильный способ изменить образ, который вы хотите использовать для группы управляемых экземпляров, - это создать новый шаблон и выполнить непрерывное обновление для группы и использовать новый шаблон экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...