Executando atualizações de imagem do sistema operacional com um clique em MIGs


Ao usar uma combinação de famílias de imagens personalizadas e atualizações contínuas , você pode ativar atualizações de imagens do sistema operacional com um clique no seu grupo gerenciado de instâncias (MIG).

Usar a atualização de imagem do sistema operacional com um clique oferece vários benefícios, incluindo:

  • Funciona com todos os tipos de máquinas VM e todos os tamanhos de grupos de instâncias.
  • Suporta 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 metadados e scripts de inicialização personalizados.
  • Funciona com MIGs com estado , para que você possa, opcionalmente, preservar dados em discos que não sejam de inicialização.
  • A implementação de uma atualização para a nova versão do sistema operacional acontece automaticamente, sem a necessidade de entrada adicional 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

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

Como funciona a atualização da imagem do sistema operacional com um clique?

Quando você invoca uma atualização, o MIG substitui os discos de inicialização de todas as VMs do grupo pela versão de imagem do sistema operacional mais recente disponível da sua família de imagens personalizadas. O MIG preserva metadados e scripts de inicialização configurados no modelo de instância para cada VM do grupo. Os discos que não são de inicialização são recriados com base em suas especificações no modelo de instância. Para obter informações sobre como preservar dados, consulte Configurando discos com estado em MIGs .

Para limitar a interrupção do aplicativo, você pode realizar atualizações em lotes, mantendo uma porcentagem específica de VMs em execução durante a atualização. Para aumentar a confiabilidade, você pode 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 adicionais para outras VMs.

Antes de começar

  • Instale ou atualize para a versão mais recente da CLI do Google Cloud .

  • Certifique-se de ter criado um modelo de instância que aponta para uma família de imagens. O Google recomenda que você use famílias de imagens personalizadas para reduzir o risco de lançar uma versão de imagem incompatível com seu aplicativo. Você pode garantir que apenas versões de imagens compatíveis sejam implementadas adicionando imagens à sua família de imagens personalizadas somente após o teste de compatibilidade com seu aplicativo.

    Quando seu 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 seu aplicativo antes de adicioná-la à sua família de imagens e implementá-la.

  • Opcionalmente, crie uma verificação de integridade baseada em aplicativo para seu MIG. Uma verificação de integridade baseada em aplicativo verifica se seu aplicativo está respondendo conforme esperado em cada uma das VMs no MIG. Você pode configurar sua atualização para permitir no máximo uma VM indisponível. Se um aplicativo não responder conforme o esperado, o MIG marcará essa VM como indisponível e a implementação não prosseguirá.

Executando atualizações de imagem do sistema operacional com um clique para MIGs

Para atualizar todas as VMs em um MIG para a imagem mais recente de uma família de imagens customizadas, conclua as etapas a seguir:

  1. Inicie uma substituição contínua com o seguinte comando.

    gcloud compute instance-groups managed rolling-action replace instance-group-name \
        [--max-surge=max-surge ] [--max-unavailable=max-unavailable]

    Substitua o seguinte:

    • instance-group-name : o nome do MIG no qual operar.
    • max-surge : o número máximo adicional 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 ficar indisponíveis durante o processo de atualização. Pode ser um número fixo ( 5 ) ou uma porcentagem do tamanho do MIG ( 10% ).

    Você pode combinar verificações de integridade usando as opções --max-unavailable e --max-surge para interromper atualizações futuras caso elas façam com que as VMs fiquem indisponíveis.

  2. Monitore a atualização usando o subcomando wait-until para verificar se o campo status.versionTarget.isReached do MIG está configurado como true .

    gcloud compute instance-groups managed wait-until instance-group-name --version-target-reached

    Substitua o seguinte:

    • instance-group-name : o nome do MIG no qual operar.

    O comando retorna quando o grupo é atualizado.

    Você também pode listar instâncias para ver o status de cada instância.

    gcloud compute instance-groups managed list-instances instance-group-name

    O comando retorna uma lista de instâncias e seus detalhes, incluindo status , estado de integridade e ações atuais para cada VM. Quando todas as VMs estão RUNNING e não têm nenhuma ação atual, o MIG está atualizado e estável .

  3. Caso precise reverter para uma imagem anterior do sistema operacional, você deve criar um modelo de instância e especificar a imagem que deseja usar. Em seguida, inicie uma atualização contínua para atualizar todas as instâncias gerenciadas para usar esse modelo. Para obter mais informações, consulte Revertendo uma atualização .

Exemplo

Este exemplo cobre as seguintes tarefas:

  1. Crie um modelo de instância para atualizações fáceis de imagens do sistema operacional:
  2. Crie um MIG com base no modelo.
  3. Configure uma verificação de integridade para limitar a interrupção causada por uma atualização de imagem.
  4. Adicione uma nova imagem a uma família de imagens.
  5. Invoque uma atualização do sistema operacional com um único comando.
  6. Monitore a atualização.

Use as etapas a seguir para ativar e executar atualizações de sistema operacional com um clique em um MIG:

  1. Crie 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 desta 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
    
  2. Crie um MIG com base no modelo de 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
    
  3. Opcional: Configure e ative uma verificação de funcionamento baseada em aplicativo. Se o seu aplicativo não responder após uma atualização de imagem, você poderá usar o status da verificação de integridade combinado com a configuração maxUnavailable para impedir futuras implementações do MIG.

    1. Crie uma verificação de integridade que procure uma resposta HTTP 200 no caminho da solicitação /health . O aplicativo GitHub que está em cada instância atende 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"
      
    2. Crie uma regra de firewall para permitir que as sondagens do verificador de integridade acessem as instâncias. As sondagens do verificador de integridade vêm de endereços nos intervalos: 130.211.0.0/22 ​​e 35.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
      
    3. 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
      
  4. Quando uma atualização estiver disponível, testada e considerada compatível com seu aplicativo, crie uma nova imagem e use o sinalizador --family para incluir essa imagem na família de imagens personalizadas.

    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 origem boot-disk-1 .

  5. Invoque uma substituição contínua 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 , para que cada VM obtenha a imagem mais recente da família ( my-image-v2 ).

    Você pode configurar o nível de interrupção causado pela atualização. Neste exemplo, o MIG cria uma VM adicional acima do tamanho alvo do grupo e não remove nenhuma VM existente até que essa VM esteja instalada e em execução.

    gcloud compute instance-groups managed rolling-action replace example-group \
        --max-surge 1 --max-unavailable 0
    
  6. Se você deseja monitorar o status das atualizações, use o comando wait-until com o sinalizador --version-target-reached . O comando retorna 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
    

    Você também pode usar o comando list-instances para ver o status , o estado de integridade , as ações atuais , o modelo de instância e a versão de 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
    
  7. Se você precisar reverter para uma imagem anterior, siga as seguintes etapas:

    1. Crie um novo modelo de instância que especifique a imagem desejada.
    2. Inicie uma atualização contínua para aplicar o modelo de instância.

O que vem a seguir