Práticas recomendadas para famílias de imagens

Este documento explica as práticas recomendadas quando usa famílias de imagens no Compute Engine.

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:

    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.

Famílias de imagens públicas

O Motor de Cálculo fornece famílias de imagens para ajudar a garantir que os seus sistemas de automatização podem fazer referência às imagens mais recentes. Enquanto administrador, pode agrupar um conjunto de imagens como uma família de imagens. Em seguida, os utilizadores das imagens só têm de acompanhar o nome da família de imagens, em vez de um nome de imagem exato. Uma vez que os nomes das imagens têm de ser exclusivos, os pipelines de compilação de imagens criam frequentemente nomes de imagens com informações codificadas, como o nome da aplicação, a data e a versão, por exemplo, my-application-v3-20210101. Nas ferramentas de automatização, pode fazer referência ao nome da família de imagens em vez de ter de atualizar o nome da imagem em intervalos. A utilização de famílias de imagens garante que acede sempre à imagem mais recente da família, por exemplo, my-application.

Famílias de imagens.

As imagens públicas são agrupadas em famílias de imagens. Uma família de imagens pública aponta sempre para a versão mais recente de uma imagem disponível em cada zona. Quando são lançadas novas imagens a nível global, a respetiva disponibilidade inicial nas famílias de imagens depende da zona, o que melhora a tolerância a falhas zonais para os seus fluxos de trabalho durante as atualizações de imagens da Google.

Durante a implementação de imagens, a versão mais recente de uma imagem numa família de imagens pode ser diferente em diferentes zonas. Por exemplo, a família de imagens debian-12 no projetodebian-cloud aponta sempre para a imagem Debian 12 mais recente, mas a imagem Debian 12 mais recente na zona us-central1-a e southamerica-east1-b pode ser diferente.

Quando cria VMs a partir de famílias de imagens através da CLI do Google Cloud, o Compute Engine usa a imagem mais recente disponível na zona da VM para o seu pedido. Quando cria VMs através da Google Cloud consola, o Compute Engine apenas apresenta as imagens públicas disponíveis na zona selecionada. Se quiser criar VMs com a imagem disponível mais recente a nível global, use o comando instances create da CLI gcloud e especifique --image-family-scope=global.

Ver a versão de imagem mais recente disponível

Pode ver a imagem disponível mais recente a nível global numa família de imagens ou ver a imagem mais recente disponível numa zona específica.

A nível global

Para ver a imagem mais recente disponível globalmente numa família de imagens, use um dos seguintes métodos:

gcloud

Use o comando gcloud compute images describe-from-family:

gcloud compute images describe-from-family IMAGE_FAMILY_NAME  \
   --project=IMAGE_PROJECT

Substitua o seguinte:

  • IMAGE_FAMILY_NAME: o nome da família de imagens que quer pesquisar. Para uma lista completa dos nomes das famílias de imagens, consulte os detalhes do sistema operativo.
  • IMAGE_PROJECT: o nome do projeto de imagem. Para ver uma lista completa dos nomes dos projetos de imagens, consulte os detalhes do sistema operativo.

REST

Faça um pedido GET ao método images.getFromFamily:

GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME

Substitua o seguinte:

  • IMAGE_PROJECT: o nome do projeto de imagem. Para ver uma lista completa dos nomes dos projetos de imagens, consulte os detalhes do sistema operativo.
  • IMAGE_FAMILY_NAME: o nome da família de imagens que quer pesquisar. Para uma lista completa dos nomes das famílias de imagens, consulte os detalhes do sistema operativo.

Por zona

Para ver a imagem mais recente disponível numa família de imagens para uma zona específica, use um dos seguintes métodos:

gcloud

Use o gcloud compute images describe-from-family comando com a flag --zone:

gcloud compute images describe-from-family IMAGE_FAMILY_NAME  \
   --project=IMAGE_PROJECT \
   --zone=ZONE

Substitua o seguinte:

  • IMAGE_FAMILY_NAME: o nome da família de imagens que quer pesquisar. Para uma lista completa dos nomes das famílias de imagens, consulte os detalhes do sistema operativo.
  • IMAGE_PROJECT: o nome do projeto de imagem. Para ver uma lista completa dos nomes dos projetos de imagens, consulte os detalhes do sistema operativo.
  • ZONE: a zona que quer consultar.

REST

Faça um pedido GET ao método imageFamilyViews:

GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/zones/ZONE/imageFamilyViews/IMAGE_FAMILY_NAME

Substitua o seguinte:

  • IMAGE_PROJECT: o nome do projeto de imagem. Para ver uma lista completa dos nomes dos projetos de imagens, consulte os detalhes do sistema operativo.
  • ZONE: a zona que quer consultar.
  • IMAGE_FAMILY_NAME: o nome da família de imagens que quer pesquisar. Para uma lista completa dos nomes das famílias de imagens, consulte os detalhes do sistema operativo.

Famílias de imagens personalizadas

Pode criar famílias de imagens personalizadas para as suas imagens personalizadas. O conjunto de imagens aponta para a imagem mais recente que usou para criar o conjunto de imagens. Para reverter uma família de imagens para uma versão de imagem anterior, pode descontinuar a imagem mais recente nessa família, desde que a imagem anterior não esteja descontinuada. Para mais informações, consulte o artigo Definir versões de imagens numa família de imagens.

Para criar uma imagem com uma família de imagens ou criar uma família de imagens se não existir, tem de adicionar uma flag --family adicional ao passo de criação de imagens, por exemplo:

gcloud compute images create my-application-v3-20210101 \
    --source-disk my-application-disk-1 \
    --source-disk-zone us-central1-f \
    --family my-application

Depois de executar este comando, todas as chamadas para executar uma instância com base na imagem my-application apontam para a imagem recém-criada, my-application-v3-20210101.

Quando selecionar um nome para a sua família de imagens, reveja a Convenção de nomenclatura.

Como usar famílias de imagens

Embora as famílias de imagens lhe permitam fazer referência à imagem mais recente, esta pode introduzir incompatibilidade com a sua aplicação, o que pode causar problemas num ambiente de produção se não for validada. Se quiser tirar o máximo partido das vantagens das famílias de imagens e reduzir os riscos, recomendamos que teste a imagem referenciada mais recente da família de imagens antes de a usar no seu ambiente de produção.

Em resumo, pode considerar a seguinte abordagem:

  • Configure um ambiente de teste separado do ambiente de produção.
  • No ambiente de teste, conclua os seguintes passos:
    • Crie uma família de imagens personalizada a partir da família de imagens de origem.
    • Valide a estabilidade da nova imagem na família de imagens personalizadas em relação às suas cargas de trabalho.
  • Após a validação, mova esta família de imagens personalizadas para um ambiente de produção.

Por exemplo, o processo pode ser semelhante ao procedimento seguinte.

  1. No seu projeto de teste, crie uma imagem a partir da família de imagens de origem. Esta nova família de origens de imagens também tem de ter a sua própria família de imagens personalizada para referência no ambiente de teste. Para criar a imagem com uma família de imagens personalizada, execute o seguinte comando:

    gcloud compute images create test-image-name \
    --source-image-project source-project \
    --source-image-family source-image-family \
    --project test-project \
    --family test-image-family
    

    Substitua o seguinte:

    • test-image-name: nome da imagem de teste.
    • source-project: projeto ao qual pertence a família de imagens de origem.
    • source-image-family: nome da imagem de origem da família.
    • test-project: nome do projeto de teste ao qual quer adicionar a família de imagens.
    • test-image-family: nome da sua família de imagens de teste.
  2. Use a sua família de imagens personalizada test-image-family para criar uma VM para testar a sua carga de trabalho. Para criar a VM, execute o seguinte comando:

    gcloud compute instances create test-instance-name \
    --image-family your-test-image-family \
    --project test-project
    

    Substitua o seguinte:

    • test-instance-name: nome da sua instância de teste.
    • test-image-family: nome da sua família de imagens de teste.
    • test-project: nome do seu projeto de teste.
  3. Quando tiver validado que esta imagem funciona bem para a sua carga de trabalho, copie a imagem para o seu ambiente de produção.

    gcloud compute images create prod-image-name \
    --source-image-family test-image-family \
    --source-image-project test-project \
    --project prod-project \
    --family prod-image-family
    

    Substitua o seguinte:

    • prod-image-name: nome da imagem de produção.
    • test-image-family: nome da sua família de imagens de teste.
    • test-project: projeto ao qual a família de imagens de teste pertence.
    • prod-project: nome do seu projeto que está no ambiente de produção.
    • prod-image-family: nome da família de imagens que quer usar no seu ambiente de produção.