Práticas recomendadas para famílias de imagens


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

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:

    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.

Famílias de imagens públicas

O Compute Engine fornece famílias de imagens para ajudar você a garantir que seus sistemas de automação possam fazer referência às imagens mais recentes. Como administrador, você pode agrupar um conjunto de imagens como uma família de imagens. Então, os usuários das imagens só precisam acompanhar o nome da família da imagem, em vez de um nome exato da imagem. Como os nomes das imagens devem ser exclusivos, os pipelines de criação de imagens geralmente criam nomes de imagens com informações codificadas neles, como nome, data e versão do aplicativo, por exemplo, my-application-v3-20210101 . Nas ferramentas de automação, você pode fazer referência ao nome da família da imagem em vez de atualizar o nome da imagem em intervalos. O uso de famílias de imagens garante que você sempre acesse a 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úblicas sempre aponta para a versão mais recente de uma imagem disponível em cada zona. Quando novas imagens são lançadas globalmente, sua disponibilidade inicial nas famílias de imagens depende da zona, o que melhora a tolerância a falhas zonais para seus fluxos de trabalho durante as atualizações de imagens do Google.

Durante a implementação da imagem, a versão mais recente de uma imagem em uma família de imagens pode diferir em zonas diferentes. Por exemplo, a família de imagens debian-12 no projeto debian-cloud sempre aponta 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 você cria VMs a partir de famílias de imagens usando a CLI do Google Cloud, o Compute Engine usa a imagem mais recente disponível na zona da sua VM para sua solicitação. Quando você cria VMs usando o console do Google Cloud, o Compute Engine exibe apenas as imagens públicas disponíveis na zona selecionada. Se você quiser criar VMs usando a imagem mais recente disponível globalmente, use o comando gcloud CLI instances create e especifique --image-family-scope=global .

Visualizando a versão mais recente da imagem disponível

Você pode visualizar a imagem mais recente disponível globalmente em uma família de imagens ou visualizar a imagem mais recente disponível em uma zona específica.

Globalmente

Para visualizar a imagem mais recente disponível globalmente em uma 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 você deseja pesquisar. Para obter uma lista completa de nomes de famílias de imagens, consulte Detalhes do sistema operacional .
  • IMAGE_PROJECT : o nome do projeto de imagem. Para obter uma lista completa de nomes de projetos de imagem, consulte Detalhes do sistema operacional .

DESCANSAR

Faça uma solicitação GET para o 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 obter uma lista completa de nomes de projetos de imagem, consulte Detalhes do sistema operacional .
  • IMAGE_FAMILY_NAME : o nome da família de imagens que você deseja pesquisar. Para obter uma lista completa de nomes de famílias de imagens, consulte Detalhes do sistema operacional .

Por zona

Para visualizar a última imagem disponível em uma família de imagens para uma zona específica, use um dos seguintes métodos:

gcloud

Use o comando gcloud compute images describe-from-family com a sinalização --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 você deseja pesquisar. Para obter uma lista completa de nomes de famílias de imagens, consulte Detalhes do sistema operacional .
  • IMAGE_PROJECT : o nome do projeto de imagem. Para obter uma lista completa de nomes de projetos de imagem, consulte Detalhes do sistema operacional .
  • ZONE : a zona que você deseja consultar.

DESCANSAR

Faça uma solicitação GET para o 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 obter uma lista completa de nomes de projetos de imagem, consulte Detalhes do sistema operacional .
  • ZONE : a zona que você deseja consultar.
  • IMAGE_FAMILY_NAME : o nome da família de imagens que você deseja pesquisar. Para obter uma lista completa de nomes de famílias de imagens, consulte Detalhes do sistema operacional .

Famílias de imagens personalizadas

Você pode criar famílias de imagens personalizadas para suas imagens personalizadas . A família de imagens aponta para a imagem mais recente usada para criar a família de imagens. Para reverter uma família de imagens para uma versão de imagem anterior, você pode descontinuar a imagem mais recente dessa família (desde que a imagem anterior não esteja obsoleta). Para obter mais informações, consulte Configurando versões de imagens em uma família de imagens .

Para criar uma imagem com uma família de imagens, ou para criar uma família de imagens se não existir, você deve adicionar um sinalizador --family adicional à etapa de criação da imagem, 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 esse comando, qualquer chamada para executar uma instância baseada na imagem my-application aponta para a imagem recém-criada, my-application-v3-20210101 .

Ao selecionar um nome para sua família de imagens, revise Convenção de nomenclatura .

Como usar famílias de imagens

Embora as famílias de imagens permitam fazer referência à imagem mais recente, a imagem mais recente pode apresentar incompatibilidade com seu aplicativo, o que pode causar problemas em um ambiente de produção se não for validada. Se quiser aproveitar os benefícios das famílias de imagens e ao mesmo tempo reduzir os riscos, recomendamos que você teste a imagem referenciada mais recente da família de imagens antes de usá-la em seu ambiente de produção.

Em resumo, você pode considerar a seguinte abordagem:

  • Configure um ambiente de teste separado do seu ambiente de produção.
  • No ambiente de teste, conclua as etapas a seguir:
    • Crie uma família de imagens personalizada a partir da família de imagens de origem.
    • Verifique a estabilidade da nova imagem na família de imagens personalizadas em relação às suas cargas de trabalho.
  • Depois de verificado, mova esta família de imagens personalizadas para um ambiente de produção.

Por exemplo, o processo pode ser semelhante ao procedimento a seguir.

  1. No seu projeto de teste, crie uma imagem da família de imagens de origem. Essa nova família de origem de imagem também deve ter sua própria família de imagens customizada 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 sua imagem de teste.
    • source-project : projeto ao qual pertence a família de imagens de origem.
    • source-image-family : nome da família da imagem de origem.
    • test-project : nome do projeto de teste ao qual você deseja adicionar a família de imagens.
    • test-image-family : nome da sua família de imagens de teste.
  2. Usando sua família de imagens personalizadas test-image-family , crie uma VM para testar 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. Depois de validar que esta imagem funciona bem para sua carga de trabalho, copie a imagem para 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 sua imagem de produção.
    • test-image-family : nome da sua família de imagens de teste.
    • test-project : projeto ao qual pertence a família de imagens de teste.
    • prod-project : nome do seu projeto que está no ambiente de produção.
    • prod-image-family : nome da família de imagens que você deseja usar em seu ambiente de produção.