Esta solução fornece orientações detalhadas sobre como gerir imagens do Compute Engine. As imagens fornecem o ambiente de funcionamento base para as aplicações executadas no Compute Engine e são essenciais para garantir que a sua aplicação é implementada e dimensionada de forma rápida e fiável. Também pode usar imagens para arquivar versões de aplicações para cenários de reversão ou recuperação de desastres.
Compreender imagens
Uma imagem no Compute Engine é um recurso na nuvem que fornece uma referência a um disco imutável. Em seguida, essa representação do disco é encapsulada através de alguns formatos de dados.
Uma imagem é um pacote de bytes não processados usado para criar um disco rígido pré-preenchido. Em qualquer disco formatado, existe uma tabela de partições que aponta para uma ou mais partições que contêm dados. Para que uma imagem seja arrancável, tem de conter o seguinte:
- Uma tabela de partições: um master boot record ou uma GUID partition table
- Uma partição de arranque
Para que um disco seja importado como uma imagem do Compute Engine, os bytes do disco têm de ser escritos num ficheiro denominado disk.raw
.
Depois de a sequência completa de bytes do disco ser escrita no ficheiro, o ficheiro é arquivado através do formato tar e, em seguida, comprimido através do formato GZIP. Em seguida, pode carregar o ficheiro
*.tar.gz
resultante para o Cloud Storage e registá-lo como uma imagem no
Compute Engine, conforme mostrado no diagrama anterior. Depois de registar uma imagem, pode usá-la para criar réplicas exatas do disco original em qualquer região do Google Cloud. As imagens recém-registadas são frequentemente usadas como volumes de arranque para instâncias do Compute Engine.
Para uma introdução mais básica a estes termos do Compute Engine, consulte os artigos Instâncias de máquinas virtuais e Imagens na documentação.
Escolher uma imagem de arranque
O primeiro passo para usar o Compute Engine é escolher a imagem que quer como sistema operativo para a instância da máquina virtual (VM). Pode usar imagens públicas fornecidas pela Google Cloud, que são atualizadas regularmente.A Google Cloud oferece uma variedade de sistemas operativos, incluindo Debian, Ubuntu e CentOS, para sua utilização sem custos adicionais. Alguns sistemas operativos, como o Red Hat Enterprise Linux e o Microsoft Windows, são imagens premium, que incorrem em taxas adicionais por cada hora de execução das instâncias.
Para mais informações sobre uma imagem específica, como políticas de atualização automática, aplicação de patches de segurança e canais de apoio técnico, consulte a secção Detalhes do sistema operativo da documentação do produto.
Para maior segurança, também pode usar a funcionalidade de imagens fidedignas para definir uma política organizacional que impeça a utilização de imagens em projetos de imagens públicas específicos na criação de imagens de arranque.
Pode usar as Google Cloud imagens públicas para arrancar uma instância do Compute Engine. Depois, pode personalizar a instância para executar a sua aplicação.
Uma abordagem para configurar a sua instância é usar o script de arranque para executar os comandos que implementam a sua aplicação à medida que é iniciada. Tenha em atenção que este script é executado sempre que a instância é iniciada. Por isso, tem de tornar o script idempotente para evitar ficar num estado inconsistente ou parcialmente configurado. Se as suas instâncias fizerem parte de um grupo de instâncias gerido, pode usar o atualizador do grupo de instâncias para reiniciar ou reconstruir as instâncias, o que volta a executar o script de arranque. Uma prática comum é usar o script de arranque para executar uma ferramenta de gestão de configuração, como o Chef ou o Ansible.
Criar imagens personalizadas
Embora a configuração do script de arranque de uma instância seja uma forma viável de aprovisionar a sua infraestrutura, um método mais eficiente é criar uma nova imagem personalizada com a sua configuração incorporada na imagem pública. Pode personalizar as imagens de várias formas:
- Manual
- Automático
- Importar
O processo de criação de uma imagem personalizada denomina-se incorporação.
A renderização das imagens tem as seguintes vantagens:
- Tempo mais curto desde o arranque até a aplicação estar pronta.
- Fiabilidade melhorada para implementações de aplicações.
- Reversão mais fácil para versões anteriores.
- Menos dependências de serviços externos durante o arranque da aplicação.
- O aumento da escala cria instâncias que contêm versões de software idênticas.
Cozedura manual
Pode criar uma imagem personalizada simples criando uma nova instância de VM a partir de uma imagem pública, configurando a instância com as aplicações e as definições que quer e, em seguida, criando uma imagem personalizada a partir dessa instância. Use este método se puder configurar as imagens manualmente desde o início, em vez de usar a renderização automática ou importar imagens existentes.
Pode criar uma imagem personalizada simples seguindo estes passos:
- Crie uma instância a partir de uma imagem pública.
- Estabeleça ligação à instância.
- Personalize a instância de acordo com as suas necessidades.
- Pare a instância.
- Crie uma imagem personalizada a partir do disco de arranque dessa instância. Este processo requer que elimine a instância, mas mantenha o disco de arranque.
Processamento automático
A preparação manual é uma forma fácil de começar se tiver um pequeno número de imagens, mas é difícil auditar e gerir um grande número de imagens. O Packer é uma ferramenta de código aberto para tornar a criação de imagens mais reproduzível, auditável, configurável e fiável. Também pode usar o Packer como parte de um pipeline do Spinnaker para produzir imagens implementadas em clusters de instâncias.
Importar imagens existentes
Pode importar imagens de disco de arranque da respetiva infraestrutura existente para o Compute Engine através da ferramenta de importação de discos virtuais, que automatiza o processo de importação de imagens. Para máquinas Linux, aqui tem um guia detalhado para migrar manualmente imagens de disco RAW, imagens de máquinas da Amazon (AMI) e imagens do VirtualBox.
Outra opção para importar as suas imagens existentes é usar a funcionalidade Migrar para máquinas virtuais.
O Migrate to Virtual Machines é um conjunto de ferramentas e um serviço que facilita a migração de máquinas de uma plataforma para outra com um tempo de inatividade mínimo através da replicação contínua ao nível do bloco. Pode migrar as suas máquinas para o Compute Engine e, em seguida, usar a preparação manual para criar imagens.
Encriptação de imagens
Por predefinição, todos os discos no Compute Engine são encriptados através das chaves de encriptação da Google. As imagens criadas a partir de discos também são encriptadas. Em alternativa, pode fornecer as suas próprias chaves de encriptação quando os discos são criados. Depois de criar o disco, pode criar uma imagem encriptada fornecendo as suas chaves de encriptação ao comando de criação de imagens. Para mais informações sobre a encriptação em repouso e as chaves de encriptação fornecidas pelo cliente, consulte o artigo Encriptação em repouso na Google Cloud documentação.
Ciclo de vida das imagens
Depois de configurar um pipeline de criação de imagens, pode usar imagens para iniciar instâncias de uma aplicação de forma fiável. Embora o pipeline possa processar a criação de imagens, também tem de garantir que os seus mecanismos de implementação usam as versões mais recentes das imagens. Por último, precisa de um processo para organizar as imagens, de modo que as imagens antigas e obsoletas não sejam usadas inadvertidamente.
Famílias de imagens
As famílias de imagens ajudam a gerir as imagens no seu projeto agrupando imagens relacionadas, para que possa avançar e recuar entre versões de imagens específicas. Para mais informações, consulte as práticas recomendadas para famílias de imagens.
Descontinuação de uma imagem
Na qualidade de administrador, também pode reverter a imagem para a qual a família de imagens aponta descontinuando a imagem através do seguinte comando:
gcloud compute images deprecate my-application-v3-20161011 --state DEPRECATED
Pode escolher entre vários estados de descontinuação:
Estado | Descrição |
---|---|
DESCONTINUADO | Imagens que já não são as mais recentes, mas que os utilizadores ainda podem iniciar. Os utilizadores veem um aviso no lançamento a indicar que já não estão a usar a imagem mais recente. |
OBSOLETE | Imagens que não devem ser iniciadas por utilizadores ou automatização. Uma tentativa de criar uma instância a partir destas imagens vai falhar. Pode usar este estado de imagem para arquivar imagens, para que os respetivos dados continuem disponíveis quando forem montadas como um disco não de arranque. |
ELIMINADO | Imagens que já foram eliminadas ou estão marcadas para eliminação no futuro. Não é possível lançá-los e deve eliminá-los assim que possível. |
Aplicar políticas de ciclo de vida
Pode marcar imagens para eliminação ou obsolescência através do comando gcloud compute images deprecate
. Pode anexar metadados a imagens para
as marcar para eliminação futura, fornecendo uma das flags --delete-in
ou
--delete-on
. Para anexar metadados para marcar imagens para obsolescência futura,
forneça as flags --obsolete-in
ou --obsolete-on
. Pode incorporar este comando num processo de criação de imagens para aplicar uma política de ciclo de vida das imagens que restrinja a proliferação de imagens desatualizadas e expiradas no seu projeto. Por exemplo, no final do pipeline de criação de imagens, pode incluir uma verificação adicional de imagens que precisam de ser descontinuadas ou eliminadas e, em seguida, realizar essas ações explicitamente.
Embora as imagens descontinuadas e eliminadas já não sejam apresentadas através da API e da IU por predefinição, pode continuar a vê-las fornecendo a flag --show-deprecated
.
Para eliminar completamente a imagem e os respetivos dados, tem de enviar um comando de eliminação explícito para essa imagem.
Partilhar imagens entre projetos
As organizações criam frequentemente vários Google Cloud projetos para particionar os respetivos recursos, ambientes e acesso dos utilizadores. O isolamento de recursos em projetos permite uma faturação detalhada, a aplicação de segurança e a criação de redes segregadas. Embora a maioria dos recursos da nuvem não precise de abranger vários projetos, as imagens são boas candidatas para partilha entre projetos. Ao usar um conjunto partilhado de imagens, pode seguir um processo comum para fornecer imagens com práticas recomendadas para segurança, autorização, gestão de pacotes e operações pré-configuradas para o resto da organização.
Partilha imagens atribuindo funções do IAM aos projetos de uma organização. O projeto que contém as imagens que quer partilhar com outros projetos, referido no diagrama anterior como o "projeto de criação de imagens", tem de ter as seguintes funções e políticas do IAM aplicadas:
- Permitir que os utilizadores do "Image User Group" criem instâncias a partir destas imagens
concedendo-lhes a função
compute.imageUser
. - Permita que o "Image Creation User" crie instâncias neste projeto atribuindo-lhe a função
compute.instanceAdmin
. - Permita que o "Image Creation User" crie imagens e discos neste projeto
concedendo-lhe a função
compute.storageAdmin
.
Os projetos que quer poder usar as imagens partilhadas têm de permitir que os utilizadores com a função compute.imageUser
criem instâncias atribuindo-lhes a função compute.instanceAdmin
.
Para instruções mais detalhadas sobre a partilha de imagens entre projetos, consulte o artigo Partilhar imagens entre projetos na documentação do Compute Engine.
O que se segue?
- Reveja as opções de importação de imagens
- Trabalhe com imagens de arranque
- Trabalhe com imagens personalizadas