Esta solución proporciona orientación detallada sobre cómo administrar imágenes de Compute Engine. Las imágenes proporcionan el entorno operativo base para las aplicaciones que se ejecutan en Compute Engine y son fundamentales para garantizar que su aplicación se implemente y escale de manera rápida y confiable. También puede utilizar imágenes para archivar versiones de aplicaciones para escenarios de recuperación o reversión ante desastres.
Comprender las imágenes
Una imagen en Compute Engine es un recurso en la nube que proporciona una referencia a un disco inmutable. Luego, esa representación del disco se encapsula utilizando algunos formatos de datos.
Una imagen es un conjunto de bytes sin procesar utilizados para crear un disco duro previamente poblado. En cualquier disco formateado hay escrita una tabla de particiones que apunta a una o más particiones que contienen datos. Para que una imagen sea de arranque, debe contener lo siguiente:
- Una tabla de particiones: ya sea un registro de arranque maestro o una tabla de particiones GUID
- Una partición de arranque
Para importar un disco como imagen de Compute Engine, los bytes del disco deben escribirse en un archivo llamado disk.raw
.
Después de escribir la secuencia completa de bytes del disco en el archivo, el archivo se archiva usando el formato tar y luego se comprime usando el formato GZIP. Luego puedes cargar el archivo *.tar.gz
resultante en Cloud Storage y registrarlo como una imagen en Compute Engine, como se muestra en el diagrama anterior. Después de registrar una imagen, puede usarla para crear réplicas exactas del disco original en cualquier región de Google Cloud. Las imágenes recién registradas se utilizan a menudo como volúmenes de arranque para instancias de Compute Engine.
Para obtener una introducción más básica a estos términos de Compute Engine, consulte Instancias e imágenes de máquinas virtuales en la documentación.
Elegir una imagen de arranque
El primer paso para usar Compute Engine es elegir la imagen que desea como sistema operativo para su instancia de máquina virtual (VM). Puede utilizar imágenes públicas proporcionadas por Google Cloud , que se actualizan periódicamente. Google Cloud proporciona una variedad de sistemas operativos, incluidos Debian, Ubuntu y CentOS, para su uso sin costo adicional. Algunos sistemas operativos, como Red Hat Enterprise Linux y Microsoft Windows, son imágenes premium, que generan tarifas adicionales por cada hora que se ejecutan las instancias.
Para obtener más información sobre una imagen en particular, como políticas de actualización automática, parches de seguridad y canales de soporte, consulte la sección de detalles del sistema operativo de la documentación del producto.
Para mayor seguridad, también puede utilizar la función Imagen confiable para definir una política de organización que restrinja el uso de imágenes en proyectos de imágenes públicas específicos en la creación de imágenes de inicio.
Puedes usar el Google Cloud imágenes públicas para iniciar una instancia de Compute Engine, después de lo cual puede personalizar la instancia para ejecutar su aplicación.
Una forma de configurar su instancia es utilizar el script de inicio para ejecutar los comandos que implementan su aplicación mientras se inicia. Tenga en cuenta que este script se ejecuta cada vez que se inicia la instancia, por lo que debe hacer que el script sea idempotente para evitar terminar en un estado inconsistente o parcialmente configurado. Si sus instancias son parte de un grupo de instancias administrado, puede usar el Actualizador de grupo de instancias para reiniciar o reconstruir sus instancias, lo que vuelve a ejecutar su secuencia de comandos de inicio. Una práctica común es utilizar el script de inicio para ejecutar una herramienta de gestión de configuración como Chef o Ansible.
Creando imágenes personalizadas
Si bien configurar el script de inicio de una instancia es una forma viable de aprovisionar su infraestructura, un método más eficiente es crear una nueva imagen personalizada con su configuración incorporada a la imagen pública. Puedes personalizar las imágenes de varias maneras:
- Manual
- Automatizado
- Importar
El proceso de creación de una imagen personalizada se llama horneado .
Hornear tus imágenes tiene los siguientes beneficios:
- Tiempo más corto desde el inicio hasta la preparación de la aplicación.
- Fiabilidad mejorada para implementaciones de aplicaciones.
- Reversión más sencilla a versiones anteriores.
- Menos dependencias de servicios externos durante el arranque de la aplicación.
- La ampliación crea instancias que contienen versiones de software idénticas.
horneado manual
Puede crear una imagen personalizada simple creando una nueva instancia de VM a partir de una imagen pública , configurando la instancia con las aplicaciones y configuraciones que desee y luego creando una imagen personalizada a partir de esa instancia. Utilice este método si puede configurar sus imágenes desde cero manualmente en lugar de utilizar el horneado automático o importar imágenes existentes .
Puede crear una imagen personalizada simple siguiendo los siguientes pasos:
- Crea una instancia a partir de una imagen pública .
- Conéctese a la instancia .
- Personalice la instancia según sus necesidades.
- Detener la instancia .
- Cree una imagen personalizada desde el disco de arranque de esa instancia. Este proceso requiere que elimine la instancia pero conserve el disco de arranque.
Horneado automatizado
La cocción manual es una manera fácil de comenzar si tiene una pequeña cantidad de imágenes, pero una gran cantidad de imágenes se vuelve difícil de auditar y administrar. Packer es una herramienta de código abierto para hacer que la creación de imágenes sea más reproducible, auditable, configurable y confiable. También puede utilizar Packer como parte de una canalización de Spinnaker para producir imágenes que se implementan en clústeres de instancias.
Importar imágenes existentes
Puedes importar imágenes de discos de arranque desde su infraestructura existente a Compute Engine usando la herramienta de importación de discos virtuales , que automatiza el proceso de importación de imágenes. Para máquinas Linux, aquí hay una guía detallada para migrar manualmente imágenes de disco RAW, imágenes de máquinas de Amazon (AMI) e imágenes de VirtualBox .
Otra opción para importar sus imágenes existentes es usar Migrar a máquinas virtuales .
Migrate to Virtual Machines es una cadena de herramientas y un servicio que facilita la migración de máquinas de una plataforma a otra con un tiempo de inactividad mínimo mediante la replicación continua a nivel de bloque. Puedes migrar tus máquinas a Compute Engine y luego usar el horneado manual para crear imágenes.
Cifrar imágenes
Todos los discos de Compute Engine están cifrados de forma predeterminada utilizando las claves de cifrado de Google. Las imágenes creadas a partir de discos también están cifradas. Alternativamente, puede proporcionar sus propias claves de cifrado cuando se crean sus discos . Después de crear el disco, puede crear una imagen cifrada proporcionando sus claves de cifrado al comando de creación de imagen. Para obtener más información sobre el cifrado en reposo y las claves de cifrado proporcionadas por el cliente, consulte Cifrado en reposo en la Google Cloud documentación.
Ciclo de vida de la imagen
Después de configurar una canalización de creación de imágenes, puede usar imágenes para iniciar de manera confiable instancias de una aplicación. Si bien la canalización puede manejar la creación de imágenes, también debe asegurarse de que sus mecanismos de implementación utilicen las últimas versiones de las imágenes. Finalmente, necesita un proceso para seleccionar imágenes, de modo que las imágenes antiguas y obsoletas no se utilicen sin darse cuenta.
Familias de imágenes
Las familias de imágenes le ayudan a gestionar imágenes en su proyecto agrupando imágenes relacionadas, de modo que pueda avanzar y retroceder entre versiones de imágenes específicas. Para obtener más información, consulte Mejores prácticas de familias de imágenes .
Desaprobar una imagen
Como administrador, también puede revertir la imagen a la que apunta la familia de imágenes desaprobando la imagen usando el siguiente comando:
gcloud compute images deprecate my-application-v3-20161011 --state DEPRECATED
Puede elegir entre varios estados de desuso:
Estado | Descripción |
---|---|
DESPRECADO | Imágenes que ya no son las más recientes, pero que los usuarios aún pueden publicar. Los usuarios verán una advertencia en el inicio indicando que ya no están usando la imagen más reciente. |
OBSOLETO | Imágenes que no deben ser lanzadas por los usuarios ni por la automatización. Cualquier intento de crear una instancia a partir de estas imágenes fallará. Puede utilizar este estado de imagen para archivar imágenes de modo que sus datos sigan estando disponibles cuando se monten como un disco que no es de arranque. |
BORRADO | Imágenes que ya se han eliminado o que están marcadas para eliminarse en el futuro. Estos no se pueden iniciar y debes eliminarlos lo antes posible. |
Hacer cumplir las políticas de ciclo de vida
Puedes marcar imágenes para su eliminación u obsolescencia mediante el comando gcloud compute images deprecate
. Puede adjuntar metadatos a las imágenes para marcarlas para su eliminación futura proporcionando uno de los indicadores --delete-in
o --delete-on
. Para adjuntar metadatos para marcar imágenes para obsolescencia futura, proporcione los indicadores --obsolete-in
u --obsolete-on
. Puede incorporar este comando en un proceso de creación de imágenes para aplicar una política de ciclo de vida de imágenes que restrinja la proliferación de imágenes obsoletas y caducadas en su proyecto. Por ejemplo, al final de su canal de creación de imágenes, podría incluir una verificación adicional de las imágenes que deben quedar obsoletas o eliminarse y luego realizar esas acciones explícitamente.
Si bien las imágenes obsoletas y eliminadas ya no se muestran a través de la API y la interfaz de usuario de forma predeterminada, aún puedes verlas proporcionando la marca --show-deprecated
. Para eliminar completamente la imagen y sus datos, debe enviar un comando de eliminación explícito para esa imagen.
Compartir imágenes entre proyectos
Las organizaciones a menudo crean múltiples Google Cloud proyectos para particionar sus recursos, entornos y acceso de usuarios. Aislar recursos en proyectos permite facturación granular, aplicación de seguridad y redes segregadas. Aunque la mayoría de los recursos de la nube no necesitan abarcar varios proyectos, las imágenes son buenos candidatos para compartir entre proyectos. Al utilizar un conjunto compartido de imágenes, puede seguir un proceso común para entregar imágenes con las mejores prácticas de seguridad, autorización, administración de paquetes y operaciones preconfiguradas para el resto de la organización.
Se comparten imágenes asignando roles de IAM a los proyectos de una organización. El proyecto que contiene las imágenes que desea compartir con otros proyectos, denominado en el diagrama anterior "Proyecto de creación de imágenes", debe tener aplicadas las siguientes funciones y políticas de IAM:
- Permita que los usuarios del "Grupo de usuarios de imágenes" creen instancias a partir de estas imágenes otorgándoles el rol
compute.imageUser
. - Permita que el "Usuario de creación de imágenes" cree instancias en este proyecto otorgándoles la función
compute.instanceAdmin
. - Permita que el "Usuario de creación de imágenes" cree imágenes y discos en este proyecto otorgándoles la función
compute.storageAdmin
.
Los proyectos en los que desea que puedan utilizar las imágenes compartidas deben permitir a los usuarios con el rol compute.imageUser
crear instancias asignándoles el rol compute.instanceAdmin
.
Para obtener instrucciones más detalladas sobre cómo compartir imágenes entre proyectos, consulte Compartir imágenes entre proyectos en la documentación de Compute Engine.
¿Qué sigue?
- Revisar las opciones de importación de imágenes
- Trabajar con imágenes de arranque
- Trabajar con imágenes personalizadas