Aplicar seletivamente as atualizações de configuração de VM em um MIG


Este documento descreve como aplicar seletivamente atualizações de configuração às instâncias de máquina virtual (VM) em um grupo de instâncias gerenciadas (MIG).

O Compute Engine mantém as VMs em um MIG com base nos componentes de configuração usados: modelo de instância, configuração opcional de todas as instâncias e configuração com estado opcional.

Sempre que você atualiza a configuração da VM de um MIG alterando esses componentes, o Compute Engine aplica automaticamente sua configuração atualizada a novas VMs adicionadas ao grupo.

Para aplicar uma configuração atualizada às VMs, defina uma atualização seletiva, também conhecida como tipo de atualização "oportunista". Esse tipo de atualização oferece as seguintes vantagens:

  • É possível selecionar as VMs que você quer atualizar.
  • É possível controlar o tempo e a sequência das atualizações.
  • É possível usar a CLI gcloud ou a REST para atualizar todas as VMs imediatamente.

Como alternativa, se você quiser automatizar o lançamento de uma nova configuração para todos ou um subconjunto aleatório de VMs em um MIG, consulte Aplicar automaticamente as atualizações de configuração de VM em um MIG. Para ajudar você a decidir, consulte Métodos para aplicar uma nova configuração a VMs atuais.

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

Aplicar configuração atualizada às VMs selecionadas

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

Em seguida, use a gcloud CLI ou a 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 grupo, use o comando set-instance-template.

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

Aplicar configuração a VMs específicas

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

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

Aplicar configuração a todas as VMs

Para aplicar a configuração atualizada a todas as VMs, use o comando update-instances com a sinalização --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:

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

REST

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

Aplicar configuração a VMs específicas

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

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
}

Aplicar configuração a todas as VMs

Para aplicar a configuração atualizada a todas as VMs, 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:

  • 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 VMs 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.

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

Dependendo da natureza da atualização, ela pode interferir no estado da instância. Por exemplo, a alteração do disco de inicialização de uma instância requer a substituição da instância. Controle 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 ao máximo a interrupção ou aplicar uma ação mais disruptiva do que o necessário.

    • Para limitar o máximo de interrupções possível, defina a ação mínima como NONE. Se a atualização exigir uma ação mais disruptiva, o Compute Engine executará a ação necessária para executá-la.
    • 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 reiniciar uma VM para alterar os metadados. Mas se seu aplicativo ler metadados de instância somente quando uma VM for reiniciada, será possível definir a ação mínima como RESTART para coletar as alterações de metadados.
  • Ação permitida mais disruptiva: use esta opção para impedir uma atualização se ela exigir mais interferência do que você consegue sustentar. 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 a ação mais disruptiva permitida como RESTART, 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 que a reinicialização.

Ao atualizar VMs selecionadas, as duas opções aceitam os seguintes valores:

ValorDescriçã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 adicionais, metadados de instância, rótulos, tags
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

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

Ao atualizar VMs de maneira seletiva, os seguintes padrões se aplicam:

  • A ação mínima padrão é NONE, o que limita a interrupção ao máximo.
  • A REPLACEmost-disruptive-allowed-action padrão é Se não for possível tolerar essa interrupção, defina a ação mais disruptiva permitida para ser menos disruptiva.

A seguir