Como atualizar instâncias de maneira seletiva em um MIG

Este documento descreve como aplicar seletivamente um novo modelo de instância a instâncias de máquina virtual (VM) específicas em um grupo de instâncias gerenciadas (MIG). Se você quiser automatizar o lançamento de um novo modelo de instância para todas ou para um subconjunto aleatório de instâncias de máquina virtual (VM) em um MIG, consulte Como implantar automaticamente atualizações para instâncias em um MIG. Para ajudar você a decidir, consulte Como escolher entre atualizações automatizadas e seletivas.

Se tiver um MIG com estado, também poderá usar os métodos nesta página para aplicar configurações por instância novas ou atualizadas.

Iniciar atualizações de forma seletiva permite:

  • selecionar as instâncias que quer atualizar;
  • aplicar uma atualização com o mínimo de interferência necessária para que ela seja concluída. Por exemplo, se você estiver apenas atualizando metadados, talvez não seja necessário reiniciar a instância para concluir a atualização. Ao iniciar manualmente a atualização, a ação mínima necessária é executada de maneira automática;
  • aplicar a reinicialização ou a recriação da instância, mesmo que essas ações não sejam necessárias para aplicar a atualização. Por exemplo, talvez você queira reiniciar uma VM mesmo se estiver atualizando apenas os metadados dela, porque o software convidado precisa coletar os novos metadados na inicialização da VM.
  • impedir uma atualização se ela exigir mais interrupção do que você consegue sustentar;
  • executar uma atualização de todas as instâncias selecionadas imediatamente, sem restringir o lançamento por qualquer opção do Updater, como restrições maxSurge e maxUnavailable.

Antes de começar

Como atualizar instâncias selecionadas

Quando você especifica um novo modelo e quer aplicá-lo apenas a instâncias selecionadas, o MIG ainda aplica automaticamente o novo modelo a novas instâncias criadas quando o MIG é redimensionado. Para instâncias atuais, aplique o novo modelo às instâncias selecionadas usando a ferramenta gcloud ou a API do Compute Engine.

gcloud

Para configurar um novo modelo de instância para o grupo, use o comando set-instance-template.

gcloud compute instance-groups managed set-instance-template INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE \
    [--zone=ZONE | --region=REGION]

Use o comando update-instances para aplicar a atualização a instâncias específicas.

gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME 
--instances INSTANCE_NAMES
--most-disruptive-allowed-action DISRUPTION_LEVEL
--minimal-action DISRUPTION_LEVEL

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG.
  • INSTANCE_TEMPLATE: novo modelo de instância
  • INSTANCE_NAMES: uma lista de instâncias para aplicar o modelo
  • DISRUPTION_LEVEL: o nível de interrupção mínimo ou máximo: none, refresh, restart ou replace
    • O padrão minimal-action é none
    • O padrão most-disruptive-allowed-action é replace

API

Chame o método patch em um MIG regional ou zonal e atualize o campo versions.instanceTemplate. Para evitar a implantação automática do novo modelo em todas as instâncias no grupo, defina o campo updatePolicy.type como OPPORTUNISTIC.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "updatePolicy": {
    "type": "OPPORTUNISTIC"
  },
  "versions": [{
    "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
  }]
}

Depois de configurar uma nova versão de modelo, chame applyUpdatesToInstances para o MIG regional ou zonal.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances
{
  "instances": [
    "zones/ZONE/instances/INSTANCE_NAME_1",
    "zones/ZONE/instances/INSTANCE_NAME_2"
  ],
  "minimalAction": DISRUPTION_LEVEL,
  "mostDisruptiveAllowedAction": DISRUPTION_LEVEL
}

Substitua:

  • INSTANCE_GROUP_NAME: o nome do grupo;
  • NEW_TEMPLATE: o nome do novo modelo;
  • ZONE a zona de uma instância a ser atualizada imediatamente;
  • INSTANCE_NAME_1 e INSTANCE_NAME_2: os nomes das instâncias a serem atualizadas imediatamente;
  • DISRUPTION_LEVEL: o nível de interrupção mínimo ou máximo: NONE, REFRESH, RESTART ou REPLACE
    • o minimalAction padrão é NONE.
    • o mostDisruptiveAllowedAction padrão é REPLACE.

Semelhante a outros métodos de grupo de instâncias gerenciadas, applyUpdatesToInstances é baseado em intenções, o que significa que retorna uma resposta de operação. Essa operação pode levar algum tempo para ser concluída.

Depois de fazer uma solicitação, verifique o status para confirmar se a atualização foi concluída.

Como atualizar configurações por instância

Quando você aplica uma atualização a uma instância selecionada, o MIG aplica o modelo da instância e a configuração por instância, se houver.

Para mais informações, consulte Como aplicar a configuração com estado das configurações por instância.

Ação mínima e ação permitida mais disruptiva

Dependendo da natureza da atualização, ela pode interferir no estado da instância. Por exemplo, para alterar o disco de inicialização de uma instância, é necessário excluí-la e substituí-la.

Controle o nível de interrupção usando as sinalizações minimal-action e most-disruptive-allowed-action:

  • minimal-action permite que você adote uma ação mais disruptiva do que o necessário. Por exemplo, o Compute Engine não precisa reiniciar uma VM para alterar os metadados. Mas se o aplicativo ler metadados de instância somente quando uma VM for reiniciada, será possível aplicar uma reinicialização para coletar alterações de metadados.
  • most-disruptive-allowed-action permite que você evite uma atualização, se ela exigir mais interrupção do que você consegue sustentar.

Ao atualizar as instâncias selecionadas, essas duas sinalizações aceitam as seguintes ações:

AçãoDescriçãoQue propriedades da instância podem ser atualizadas?
NONENão interrompa a instância de modo algum.Nenhuma
REFRESHNão pare a instância.Discos extras, metadados de instância, rótulos
RESTARTPare a instância e inicie-a novamente.Discos extras, metadados de instância, rótulos, tipo de máquina
REPLACEExclua a instância e crie-a novamente.Todas as propriedades da instância armazenadas no modelo da instância ou na configuração por instância

Por padrão, minimal-action é NONE. Se a atualização exigir uma ação mais disruptiva do que a definida por essa sinalização, o Compute Engine realizará a ação necessária para executar a atualização.

Por padrão, most-disruptive-allowed-action é REPLACE. Se a atualização exigir uma ação mais disruptiva do que a definida por essa sinalização, a solicitação de atualização falhará. Por exemplo, se você definir RESTART como a ação mais disruptiva permitida, haverá falha na tentativa de atualizar a imagem do disco de inicialização, já que essa atualização exige a recriação da instância, uma ação mais disruptiva do que a reinicialização.

A ação mais disruptiva permitida não pode ser menos disruptiva que a ação mínima.

A seguir