Aplicar seletivamente 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 que você usa: modelo de instância, configuração opcional de todas as instâncias e configuração opcional com estado.

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

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

  • Você pode selecionar as VMs que deseja atualizar.
  • Você pode controlar o tempo e a sequência das atualizações.
  • Você pode usar a CLI gcloud ou REST para atualizar todas as VMs imediatamente.

Como alternativa, se você quiser automatizar a implementação de uma nova configuração para todas ou para um subconjunto aleatório de VMs em um MIG, consulte Aplicar automaticamente atualizações de configuração de VM em um MIG . Para ajudá-lo a decidir, consulte Métodos para aplicar uma nova configuração a VMs existentes .

Antes de começar

  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      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

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

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

gcloud

Para configurar um novo modelo de instância para seu grupo, você pode usar 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 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 padrão é none
    • A ação padrão mais perturbadora permitida é replace

DESCANSAR

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

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 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 ser atualizada
  • INSTANCE_NAME_1 e INSTANCE_NAME_2 : os nomes das VMs a serem atualizadas
  • DISRUPTION_LEVEL : o nível de interrupção mínimo ou máximo: NONE , REFRESH , RESTART ou REPLACE
    • A minimalAction padrão é NONE .
    • O mostDisruptiveAllowedAction padrão é REPLACE .

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

Depois de fazer uma solicitação, você pode verificar o status para verificar se a atualização foi concluída.

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

Dependendo da natureza de uma atualização, ela poderá interromper o estado de uma instância . Por exemplo, alterar o disco de inicialização de uma instância requer a substituição da instância. Você 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 ao máximo a interrupção ou para aplicar uma ação mais perturbadora do que o necessário.

    • Para limitar ao máximo a interrupção, 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 executar a atualização.
    • Para aplicar uma ação mais perturbadora 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 seus metadados. Mas se seu aplicativo ler metadados de instância somente quando uma VM for reiniciada, você poderá definir a ação mínima como RESTART para captar alterações de metadados.
  • Ação permitida mais perturbadora : use esta opção para evitar uma atualização se ela exigir mais interrupções do que você pode pagar. Se a sua atualização exigir uma ação mais perturbadora do que a definida com esse sinalizador, a solicitação de atualização falhará. Por exemplo, se você definir a ação permitida mais perturbadora como RESTART , uma tentativa de atualizar a imagem do disco de inicialização falhará porque essa atualização requer a recriação da instância, uma ação mais perturbadora do que uma reinicialização.

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

Valor Descrição Quais propriedades da instância podem ser atualizadas?
NONE Não interrompa a instância de forma alguma. Nenhum
REFRESH Não pare a instância. Discos adicionais, metadados de instância, rótulos, tags
RESTART Pare a instância e inicie-a novamente. Discos adicionais, metadados de instância, rótulos, tags, tipo de máquina
REPLACE Exclua 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 perturbadora não pode ser menos perturbadora do que a ação mínima.

Quando você atualiza VMs seletivamente, os seguintes padrões se aplicam:

  • A ação mínima padrão é NONE , o que limita ao máximo a interrupção.
  • A ação padrão mais perturbadora permitida é REPLACE . Se você não puder tolerar tal interrupção, defina a ação permitida mais perturbadora para ser menos perturbadora.

O que vem a seguir