Neste documento, você saberá quais são as práticas recomendadas ao usar famílias de imagens no Compute Engine.
Antes de começar
- Para usar os exemplos de linha de comando deste guia, faça o seguinte:
- Instale ou atualize para a versão mais recente da Google Cloud CLI.
- Defina uma região e uma zona padrão.
- Para usar os exemplos da API deste guia, configure o acesso a ela.
Família 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, é possível agrupar um conjunto de imagens como uma família de imagens. Nesse caso, os usuários das imagens só precisarão tomar nota do nome da família de imagens, em vez do nome de uma determinada imagem. Como os nomes das imagens precisam 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
).
Em relação às ferramentas de automação, é possível fazer referência ao nome da família de imagens em vez de precisar
atualizar o nome da imagem em intervalos. O uso de famílias de imagens garante que você
sempre acesse a imagem mais recente na família. Por exemplo, my-application
.
As imagens públicas são agrupadas em famílias. Uma família de imagens públicas sempre indica a versão mais recente de uma imagem que está disponível em cada zona. Quando novas imagens são lançadas globalmente, a disponibilidade inicial delas nas famílias 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 o lançamento, a versão mais recente de uma imagem em uma família pode ser diferente em zonas diferentes. Por exemplo, a família de imagens debian-10
no projeto debian-cloud
sempre indica a imagem mais recente do Debian 10, mas a imagem mais recente do Debian 10 nas zonas us-central1-a
e southamerica-east1-b
podem ser diferentes.
Ao criar VMs em famílias de imagens usando a Google Cloud CLI,
o Compute Engine usa a imagem mais recente disponível para a zona da VM para
a solicitação. Ao criar 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 instances create
da CLI gcloud
e especifique --image-family-scope=global
.
Como visualizar a versão da imagem mais recente disponível
É possível ver a imagem mais recente disponível globalmente em uma família de imagens ou ver 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
(em inglês).
gcloud compute images describe-from-family IMAGE_FAMILY_NAME \ --project=IMAGE_PROJECT
Substitua:
IMAGE_FAMILY_NAME
: o nome da família de imagens que você quer pesquisar. Para uma lista completa de nomes de famílias de imagens, consulte Detalhes do sistema operacional.IMAGE_PROJECT
: o nome do projeto de imagem. Para uma lista completa de nomes de projetos de imagem, consulte Detalhes do sistema operacional.
API
Faça uma solicitação GET
ao método images.getFromFamily
.
GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME
Substitua:
IMAGE_PROJECT
: o nome do projeto de imagem. Para 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ê quer pesquisar. Para uma lista completa de nomes de famílias de imagens, consulte Detalhes do sistema operacional.
Por zona
Para visualizar a imagem mais recente disponível em uma família de imagens de 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:
IMAGE_FAMILY_NAME
: o nome da família de imagens que você quer pesquisar. Para uma lista completa de nomes de famílias de imagens, consulte Detalhes do sistema operacional.IMAGE_PROJECT
: o nome do projeto de imagem. Para uma lista completa de nomes de projetos de imagem, consulte Detalhes do sistema operacional.ZONE
: a zona que você quer consultar.
API
Faça uma solicitação GET
ao método imageFamilyViews
.
GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/zones/ZONE/imageFamilyViews/IMAGE_FAMILY_NAME
Substitua:
IMAGE_PROJECT
: o nome do projeto de imagem. Para uma lista completa de nomes de projetos de imagem, consulte Detalhes do sistema operacional.ZONE
: a zona que você quer consultar.IMAGE_FAMILY_NAME
: o nome da família de imagens que você quer pesquisar. Para uma lista completa de nomes de famílias de imagens, consulte Detalhes do sistema operacional.
Famílias de imagens personalizadas
É possível criar suas próprias imagens com uma família de imagens personalizadas. A família de imagens indica a imagem mais recente usada para criar a família de imagens. Para reverter uma família de imagens para uma versão anterior, suspenda o uso da imagem mais recente dessa família (contanto que a imagem anterior não esteja obsoleta). Para mais informações, consulte Como definir versões em uma família de imagens.
Para criar uma imagem com uma família de imagens ou criar uma família dessas, caso não exista, é preciso adicionar uma sinalização --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, todas as chamadas para executar uma instância com base na imagem my-application
indicarão a imagem recém-criada: my-application-v3-20210101
.
Como usar famílias de imagens
Embora as famílias de imagens permitam fazer referência à imagem mais recente, essa imagem talvez gere incompatibilidade com o aplicativo, o que pode causar problemas em um ambiente de produção se não for validado. Se você quiser aproveitar os benefícios das famílias de imagens ao mesmo tempo que reduz os riscos, recomendamos testar a imagem referenciada mais recente da família de imagens antes de usá-la no ambiente de produção.
Em resumo, é possível considerar esta abordagem:
- Configure um ambiente de teste separado do ambiente de produção.
- No ambiente de teste, conclua as seguintes etapas:
- Crie uma família de imagens personalizada da família de imagens de origem.
- Verifique a estabilidade da nova imagem na família de imagens personalizada em relação às cargas de trabalho.
- Após a verificação, mova essa família de imagens personalizada para um ambiente de produção.
Por exemplo, talvez o processo seja semelhante ao procedimento a seguir.
No projeto de teste, crie uma imagem da família de imagens de origem. Essa nova família de imagens de origem também precisa ter a própria família de imagens personalizada para referenciar no ambiente de teste. Para criar a imagem com uma família de imagens personalizada, execute este 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:
test-image-name
: nome da imagem de teste.source-project
: projeto ao qual a família de imagens de origem pertence.source-image-family
: nome da família de imagens de origem.test-project
: nome do projeto de teste em que você quer adicionar a família de imagens.test-image-family
: nome da família de imagens de teste.
Usando a família de imagens personalizada
test-image-family
, crie uma VM para testar a 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:
test-instance-name
: nome da instância de teste.test-image-family
: nome da família de imagens de teste.test-project
: nome do projeto de teste.
Após a validação de que a imagem funciona bem para sua carga de trabalho, copie essa imagem para o 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:
prod-image-name
: nome da imagem de produção.test-image-family
: nome da família de imagens de teste.test-project
: projeto ao qual a família de imagens de teste pertence.prod-project
: nome do projeto que está no ambiente de produção.prod-image-family
: nome da família de imagens que você quer usar no ambiente de produção.