Ao usar uma combinação de famílias de imagens personalizadas e atualizações graduais, é possível ativar upgrades de imagem do SO com um clique no seu grupo de instâncias gerenciadas (MIG).
O uso da atualização de imagem do SO com um clique oferece vários benefícios, incluindo os seguintes:
- Funciona com todos os tipos de máquinas de VM e todos os tamanhos de grupos de instâncias.
- É compatível com imagens e contêineres do Windows e do Linux.
- As instâncias são recriadas com base no modelo de instância atual ou, opcionalmente, com base em um novo modelo, para que você possa preservar scripts e metadados de inicialização personalizados.
- Funciona com MIGs com estado. Portanto, é possível, opcionalmente, preservar dados em discos que não são de inicialização.
- O lançamento de uma atualização para a nova versão do SO acontece automaticamente, sem a necessidade de outra entrada do usuário após a solicitação inicial.
- Suporta atualizações em lote com uma verificação de integridade opcional.
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 da seguinte maneira.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Como funciona o upgrade da imagem do SO com um clique?
Quando você invoca uma atualização, o MIG substitui os discos de inicialização de todas as VMs no grupo pela versão de imagem do SO mais recente disponível da família de imagens personalizada. O MIG preserva os metadados e os scripts de inicialização que você configura no modelo de instância para cada VM no grupo. Os discos que não são de inicialização são recriados com base nas especificações no modelo de instância. Para informações sobre como preservar dados, consulte Como configurar discos com estado em MIGs.
Para limitar a interrupção do aplicativo, é possível realizar atualizações em lotes, mantendo uma porcentagem específica de VMs em execução durante a atualização. Para aumentar a confiabilidade, é possível configurar uma verificação de integridade baseada em aplicativo para seu MIG: o grupo aguarda uma resposta íntegra de um aplicativo em VMs atualizadas antes de prosseguir com atualizações para outras VMs.
Antes de começar
Instale ou atualize para a versão mais recente da Google Cloud CLI.
Certifique-se de ter criado um modelo de instância que aponte para uma família de imagens. O Google recomenda que você use famílias de imagens personalizadas para reduzir o risco de implantação de uma versão de imagem incompatível com seu aplicativo. É possível garantir que apenas versões de imagem compatíveis sejam implantadas adicionando imagens à família de imagens personalizadas somente após o teste de compatibilidade com o aplicativo.
Quando o modelo de instância aponta para uma família de imagens, o MIG sempre cria instâncias a partir da imagem mais recente da família, por exemplo:
- Quando o MIG adiciona novas instâncias porque você ou o escalonador automático do MIG aumentaram o tamanho do MIG.
- Quando o MIG recria uma instância, acionada manualmente ou por recuperação automática.
Teste a nova imagem com o app antes de adicioná-la à família de imagens e implantá-la.
Opcionalmente, crie uma verificação de integridade baseada em aplicativo para o MIG. Uma verificação de integridade baseada em aplicativo verifica se o aplicativo está respondendo conforme o esperado em cada uma das VMs no MIG. É possível configurar sua atualização para permitir no máximo uma VM indisponível. Se um aplicativo não responder como esperado, o MIG marcará essa VM como indisponível e sua implementação não continuará.
Como executar upgrades de imagem de SO com um clique para MIGs
Para atualizar todas as VMs em um MIG para a imagem mais recente de uma família de imagens personalizada, siga as etapas abaixo:
Inicie uma substituição gradual com o comando a seguir.
gcloud compute instance-groups managed rolling-action replace instance-group-name \ [--max-surge=max-surge ] [--max-unavailable=max-unavailable]
Substitua:
instance-group-name
: o nome do MIG a ser operadomax-surge
: o número máximo de VMs que podem ser criadas temporariamente durante o processo de atualização. Pode ser um número fixo (por exemplo,5
) ou uma porcentagem do tamanho do MIG (por exemplo,10%
).max-unavailable
: o número máximo de VMs que podem estar indisponíveis durante o processo de atualização. Pode ser um número fixo (5
) ou uma porcentagem do tamanho do MIG (10%
).
É possível combinar verificações de integridade usando as opções
--max-unavailable
e--max-surge
para interromper outras atualizações que possam deixar as VMs indisponíveis.Monitore a atualização usando o subcomando
wait-until
para verificar se o campostatus.versionTarget.isReached
do MIG está definido comotrue
.gcloud compute instance-groups managed wait-until instance-group-name --version-target-reached
Substitua:
instance-group-name
: o nome do MIG a ser operado
O comando retorna quando o grupo é atualizado.
Também é possível listar instâncias para ver o status de cada uma.
gcloud compute instance-groups managed list-instances instance-group-name
O comando retorna uma lista de instâncias e seus detalhes, incluindo o status, estado de integridade e ações atuais de cada VM. Quando todas as VMs estiverem
RUNNING
e sem ação atual, o MIG estará atualizado e estável.Caso precise reverter para uma imagem do SO anterior, crie um modelo de instância e especifique a imagem que quer usar. Em seguida, inicie uma atualização gradual para atualizar todas as instâncias gerenciadas para usar esse modelo. Para mais informações, consulte Como reverter uma atualização.
Exemplo
Este exemplo abrange as seguintes tarefas:
- Criar um modelo de instância para atualizações fáceis de imagem do SO:
- Especificar uma família de imagens personalizada no modelo de instância.
- Criar um MIG com base no modelo.
- Configurar uma verificação de integridade para limitar a interrupção por uma atualização de imagem.
- Adicionar uma nova imagem a uma família de imagens.
- Invocar uma atualização do SO com um único comando.
- Monitorar a atualização.
Siga as etapas abaixo para ativar e executar upgrades de sistema operacional com apenas um clique em um MIG:
Criar um modelo de instância que especifique uma família de imagens personalizada. A família de imagens deve conter imagens testadas e confiáveis. Cada VM que o MIG cria a partir do modelo usa a imagem mais recente disponível dessa família.
gcloud compute instance-templates create example-template \ --machine-type n1-standard-4 \ --image-family my-image-family \ --image-project my-project \ --tags=http-server
Crie um MIG com base no modelo da instância. Este exemplo inicia o MIG com três instâncias baseadas em
example-template
. Como o modelo de instância especifica uma família de imagens, o MIG cria cada VM com a imagem mais recente da família.gcloud compute instance-groups managed create example-group \ --base-instance-name example \ --size 3 \ --zone us-east1-b \ --template example-template
Opcional: configure e ative uma verificação de integridade baseada em aplicativo. Se o app não responder após uma atualização de imagem, será possível usar o status da verificação de integridade combinado com a configuração maxUnavailable para interromper o lançamento do MIG.
Crie uma verificação de integridade que procure uma resposta HTTP
200
no caminho da solicitação/health
. O app do GitHub que está em cada instância exibe esse caminho.gcloud compute health-checks create http example-autohealer-check \ --check-interval 10 \ --timeout 5 \ --healthy-threshold 2 \ --unhealthy-threshold 3 \ --request-path "/health"
Crie uma regra de firewall para permitir que as sondagens do verificador de integridade acessem as instâncias. As sondagens do verificador de integridade são provenientes de endereços nos intervalos:
130.211.0.0/22
e35.191.0.0/16
gcloud compute firewall-rules create default-allow-http-health-check \ --network default \ --allow tcp:80 \ --source-ranges 130.211.0.0/22,35.191.0.0/16
Adicione a verificação de integridade ao seu MIG.
gcloud compute instance-groups managed update example-group \ --zone us-east1-b --health-check example-autohealer-check
Quando uma atualização estiver disponível, testada e determinada como compatível com seu app, crie uma nova imagem e use a sinalização
--family
para incluir essa imagem na família de imagens personalizada.gcloud compute images my-image-v2 \ --source-disk boot-disk-1 \ --source-disk-zone us-central1-f \ --family my-image-family
Neste exemplo, a imagem mais recente em
my-image-family
agora émy-image-v2
, que é baseada no disco de origemboot-disk-1
.Invoque uma substituição gradual para substituir todas as VMs no MIG. O MIG substitui cada VM com base no modelo de instância do grupo. O modelo de instância especifica
my-image-family
. Portanto, cada VM recebe a imagem mais recente da família (my-image-v2
).É possível configurar o nível de interrupção que a atualização causa. Neste exemplo, o MIG cria mais uma VM acima do tamanho de destino do grupo e não remove nenhuma VM existente até que uma VM esteja em execução.
gcloud compute instance-groups managed rolling-action replace example-group \ --max-surge 1 --max-unavailable 0
Se você quiser monitorar o status das atualizações, use o comando
wait-until
com a sinalização--version-target-reached
. O comando é retornado quando o grupo é atualizado.gcloud compute instance-groups managed wait-until --version-target-reached example-group \ --zone us-east1- Waiting for group to reach version target ... Version target is reached
Também é possível usar o comando
list-instances
para ver o status, o estado de integridade, as ações atuais, o modelo da instância e a versão para cada VM.gcloud compute instance-groups managed list-instances example-group \ --zone us-east1-b NAME ZONE STATUS HEALTH_STATE ACTION INSTANCE_TEMPLATE VERSION_NAME LAST_ERROR test-211p us-east1-b RUNNING HEALTHY NONE example-template 0/2020-01-30 13:34:28.843377+00:00 test-t5qb us-east1-b RUNNING UNKNOWN VERIFYING example-template 0/2020-01-30 13:34:28.843377+00:00 test-x331 us-east1-b RUNNING HEALTHY NONE example-template 0/2020-01-20 20:39:51.819399+00:00
Se você precisar reverter para uma imagem anterior, siga as etapas abaixo:
- Crie um novo modelo de instância que especifique a imagem que você quer.
- Inicie uma atualização gradual para aplicar o modelo de instância.
A seguir
- Saiba mais sobre as práticas recomendadas para famílias de imagens.
- Saiba mais sobre grupos de instâncias.
- Saiba mais sobre modelos de instância.
- Saiba mais sobre atualizações graduais em MIGs.