Aplique seletivamente atualizações de configuração de VMs num MIG

Este documento descreve como aplicar seletivamente atualizações de configuração às instâncias de máquinas virtuais (VMs) num grupo de instâncias geridas (GIG).

O Compute Engine mantém as VMs num GIG com base nos componentes de configuração que usa: modelo de instância, configuração opcional de todas as instâncias e configuração opcional com estado.

Sempre que atualiza a configuração de VM de um GIG alterando esses componentes, o Compute Engine aplica automaticamente a configuração atualizada às novas VMs que são adicionadas ao grupo.

Para aplicar uma configuração atualizada a VMs existentes, pode configurar uma atualização seletiva, também conhecida como um tipo de atualização "oportunista". Este tipo de atualização oferece as seguintes vantagens:

  • Pode selecionar as VMs que quer atualizar.
  • Pode controlar a hora e a sequência das atualizações.
  • Pode usar a CLI gcloud ou a REST para atualizar todas as VMs imediatamente.

Em alternativa, se quiser automatizar a implementação de uma nova configuração em todas as VMs ou num subconjunto aleatório das VMs num GIG, consulte o artigo Aplique automaticamente atualizações de configuração de VMs num GIG. Para ajudar a decidir, consulte os métodos para aplicar uma nova configuração a VMs existentes.

Antes de começar

  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

Aplique a configuração atualizada às VMs selecionadas

Certifique-se de que o tipo de política de atualização do seu grupo está definido como "oportunista" para impedir que o MIG aplique automaticamente uma nova configuração de VM às VMs existentes. Para mais informações, consulte o artigo Verifique o tipo de política de atualização do seu grupo.

Em seguida, use a CLI gcloud ou a API REST para atualizar a configuração do MIG e aplicar a configuração mais recente a VMs específicas no grupo ou a todas as VMs no grupo.

gcloud

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

gcloud compute instance-groups managed set-instance-template INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE

Aplique a configuração a VMs específicas

Para aplicar a configuração atualizada a VMs específicas, use o comando update-instances com a flag --instances.

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

Aplique a configuração a todas as VMs

Para aplicar a configuração atualizada a todas as VMs, use o comando update-instances com a flag --all-instances.

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

Substitua o seguinte:

  • INSTANCE_GROUP_NAME: o nome do MIG
  • INSTANCE_TEMPLATE: novo modelo de instância
  • INSTANCE_NAMES: uma lista de VMs às quais aplicar o modelo
  • DISRUPTION_LEVEL: o nível de interrupção mínimo ou máximo: none, refresh, restart ou replace
    • A ação mínima predefinida é none
    • A ação mais disruptiva permitida predefinida é replace

REST

Para configurar um novo modelo de instância para o seu grupo, chame o método patch num GIG zonal ou regional e atualize o campo versions.instanceTemplate. Para evitar a implementação automática do novo modelo em todas as VMs do 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",
  }]
}

Aplique a configuração a VMs específicas

Para aplicar a configuração atualizada a VMs específicas, chame o método applyUpdatesToInstances para o seu MIG zonal ou regional e especifique uma lista de VMs no pedido.

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
}

Aplique a configuração a todas as VMs

Para aplicar a configuração atualizada a todas as VMs existentes, defina o campo allInstances como true:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances
{
  "allInstances": true,
  "minimalAction": DISRUPTION_LEVEL,
  "mostDisruptiveAllowedAction": DISRUPTION_LEVEL
}

Substitua o seguinte:

  • INSTANCE_GROUP_NAME: o nome do grupo
  • NEW_TEMPLATE: o nome do novo modelo
  • ZONE: a zona de uma instância a atualizar
  • INSTANCE_NAME_1 e INSTANCE_NAME_2: os nomes das VMs a atualizar
  • DISRUPTION_LEVEL: o nível de interrupção mínimo ou máximo: NONE, REFRESH, RESTART ou REPLACE
    • O valor predefinido de minimalAction é NONE.
    • O valor predefinido de mostDisruptiveAllowedAction é REPLACE.

Semelhante a outros métodos de grupos de instâncias geridos, applyUpdatesToInstances baseia-se na intenção, o que significa que devolve uma resposta de operação. A operação pode demorar algum tempo a ser concluída.

Depois de fazer um pedido, pode verificar o estado para confirmar que a atualização está concluída.

Controle o nível de interrupção durante as atualizações seletivas

Consoante a natureza de uma atualização, esta pode interromper o estado de uma instância. Por exemplo, alterar o disco de arranque de uma instância requer a substituição da instância. Pode controlar o nível de interrupção durante uma atualização seletiva definindo as seguintes opções:

  • Ação mínima: use esta opção para minimizar a interrupção o máximo possível ou para aplicar uma ação mais disruptiva do que o necessário.

    • Para limitar a interrupção o máximo possível, defina a ação mínima como NONE. Se a atualização exigir uma ação mais disruptiva, o Compute Engine executa a ação necessária para executar a atualização.
    • Para aplicar uma ação mais disruptiva do que o estritamente necessário, defina a ação mínima como RESTART ou REPLACE. Por exemplo, o Compute Engine não precisa de reiniciar uma VM para alterar os respetivos metadados. No entanto, se a sua aplicação ler os metadados da instância apenas quando uma VM é reiniciada, pode definir a ação mínima como RESTART para detetar alterações aos metadados.
  • Ação permitida mais disruptiva: use esta opção para impedir uma atualização se exigir mais interrupções do que pode suportar. Se a sua atualização exigir uma ação mais disruptiva do que a definida com esta flag, o pedido de atualização falha. Por exemplo, se definir a ação permitida mais disruptiva como RESTART, então uma tentativa de atualizar a imagem do disco de arranque falha porque essa atualização requer a recriação da instância, uma ação mais disruptiva do que um reinício.

Quando atualiza VMs selecionadas, ambas as opções aceitam os seguintes valores:

ValorDescriçãoQue propriedades de instância podem ser atualizadas?
NONENão interrompa a instância de todo.Nenhum
REFRESHNão pare a instância.Discos adicionais, metadados de instâncias, etiquetas e tags
RESTARTPare a instância e inicie-a novamente.Discos adicionais, metadados de instâncias, etiquetas, etiquetas, tipo de máquina
REPLACEElimine a instância e crie-a novamente.Todas as propriedades da instância armazenadas no modelo de instância ou na configuração por instância

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

Quando atualiza VMs seletivamente, aplicam-se as seguintes predefinições:

  • A ação mínima predefinida é NONE, que limita a interrupção o máximo possível.
  • A ação mais disruptiva permitida predefinida é REPLACE. Se não conseguir tolerar essa interrupção, defina a ação permitida mais disruptiva para ser menos disruptiva.

O que se segue?