Recomendaciones para la administración de imágenes

Esta solución proporciona una guía detallada sobre cómo administrar las imágenes de Google Compute Engine. Las imágenes proporcionan el entorno operativo base para las aplicaciones que se ejecutan en Compute Engine y son fundamentales si se quiere garantizar que tu aplicación se implemente y escale con rapidez y de manera confiable. También puedes usar imágenes para archivar las versiones de la aplicación en caso de recuperación ante desastres o situaciones de reversión.

Información sobre las imágenes

Una imagen en Compute Engine es un recurso de la nube que proporciona una referencia a un disco inmutable. Luego, esa representación del disco se encapsula con pocos formatos de datos.

Información sobre las imágenes

Una imagen es un paquete de bytes sin procesar que se usa para crear un dispositivo de disco duro propagado con anterioridad. La escritura en cualquier disco formateado es una tabla de partición que se orienta a una o más particiones que contienen datos. Para que una imagen sea reiniciable, debe contener un registro de arranque maestro y una partición reiniciable. Para que un disco se importe como una imagen de Compute Engine, los bytes del disco deben estar escritos en un archivo con el nombre disk.raw.

Una vez que la secuencia completa de bytes del disco se escribe al archivo, el archivo se guarda con el formato tar y, luego, se comprime con el formato GZIP. Luego, puedes subir el archivo resultante *.tar.gz a Google Cloud Storage y registrar una imagen en Compute Engine, como se muestra en el diagrama anterior. Luego de registrar una imagen, se puede usar para crear repeticiones exactas del disco original en cualquier región de Google Cloud Platform. Las imágenes que recién se registran se usan con frecuencia como volúmenes de inicio para las instancias de Compute Engine.

Para obtener una introducción más básica sobre estos términos de Compute Engine, consulta Instancias de máquinas virtuales y, también Imágenes en la documentación.

Elige una imagen de inicio

El primer paso a fin de usar Compute Engine es elegir la imagen que deseas como sistema operativo para tu instancia de máquina virtual (VM). Puedes usar imágenes públicas que Google Cloud Platform suministra, las cuales se actualizan de forma constante. Cloud Platform proporciona una variedad de sistemas operativos que incluyen Debian, Ubuntu, y CentOS para su uso sin ningún costo adicional. Algunos sistemas operativos, como Red Hat Enterprise Linux y Microsoft Windows, son imágenes premium que implican tarifas adicionales por cada hora en que la instancia se ejecuta.

Para obtener más información sobre una imagen en particular, como las políticas de actualización automática, parches de seguridad y canales de asistencia, consulta la sección Detalles del sistema operativo de la documentación del producto.

Imagen de inicio

Puedes usar las imágenes públicas de Cloud Platform para iniciar una instancia de Compute Engine y, luego, personalizar la instancia a fin de ejecutar tu aplicación.

Un enfoque a fin de configurar tu instancia es usar la secuencia de comandos de inicio para ejecutar los comandos que implementan tu aplicación mientras se inicia. Recuerda que esta secuencia de comandos se ejecuta cada vez que la instancia se inicia, por lo que debes hacer que la secuencia de comandos sea idempotente para evitar terminar en un estado de configuración incoherente o incompleto. Si tus instancias forman parte de un grupo de instancias administrado, puedes usar Instance Group Updater para reiniciar o volver a compilar tus instancias, lo que vuelve a ejecutar tu secuencia de comandos de inicio. Una práctica común es usar la secuencia de comandos de inicio para ejecutar una herramienta de administración de configuración como Chef o Ansible.

Crea imágenes personalizadas

Si bien la configuración de la secuencia de comandos de inicio de una instancia es una forma viable de aprovisionar tu infraestructura, un método más eficaz es crear una imagen personalizada nueva con la configuración incorporada en la imagen pública. Puedes personalizar las imágenes de varias maneras:

  • Manual
  • Automatizada
  • Importada

El proceso de creación de una imagen personalizada se llama preparación.

La preparación de tus imágenes tiene los siguientes beneficios:

  • Menos tiempo desde el inicio hasta la preparación de aplicaciones
  • Mayor confiabilidad para las implementaciones de aplicaciones
  • Facilitación para revertir a versiones anteriores
  • Menos dependencias en servicios externos durante el arranque de aplicaciones
  • El escalamiento crea instancias que contienen versiones del software idénticas

Preparación manual

Puedes crear una imagen personalizada sencilla si creas una instancia de VM nueva desde una imagen pública, configuras la instancia con las aplicaciones y los parámetros que desees y, a continuación, creas una imagen personalizada de esa instancia. Usa este método si puedes configurar tus imágenes desde cero de forma manual, en lugar de usar la preparación automatizada o la importación de imágenes existentes.

Puedes crear una imagen personalizada sencilla si sigues los siguientes pasos:

  1. Crea una instancia de una imagen pública.
  2. Conéctate a la instancia.
  3. Personaliza la instancia según tus necesidades.
  4. Detén la instancia.
  5. Crea una imagen personalizada desde el disco de arranque de esa instancia. Este proceso requiere que borres la instancia, pero que conserves el disco de arranque.

Preparación automatizada

La preparación manual es una forma fácil de comenzar si tienes una cantidad pequeña de imágenes, sin embargo, es difícil auditar y administrar cantidades grandes de imágenes. Packer es una herramienta de código abierto para que preparar la creación de imágenes sea más reproducible, auditable, configurable y confiable. Para obtener más información sobre cómo crear una canalización de creación de imagen automatizada, consulta Compilaciones de imágenes automatizadas con la solución de Jenkins, Packer y Kubernetes. También puedes usar Packer como parte de una canalización de Spinnaker para producir imágenes que se implementen en clústeres de instancias.

Importa imágenes existentes

Puedes migrar imágenes si las exportas de su infraestructura existente a Compute Engine. En cuanto a las máquinas con Linux, esta es una guía detallada sobre cómo migrar las imágenes de disco RAW, las imágenes de máquina de Amazon (AMI) y las imágenes de VirtualBox.

Otra opción para importar tus imágenes existentes es usar un servicio de migración de pago como CloudEndure. CloudEndure es una cadena de herramientas y un servicio en línea que facilita la migración de máquinas de una plataforma a otra con un tiempo de inactividad mínimo mediante una replicación continua en el nivel de bloque. Con CloudEndure puedes migrar tus máquinas a Compute Engine y, a continuación, usar la preparación manual para crear imágenes.

Encripta imágenes

Todos los discos en Compute Engine se encriptan de forma predeterminada con claves de encriptación de Google. También se encriptan las imágenes compiladas desde los discos. Por otra parte, puedes proporcionar tus propias claves de encriptación cuando se crean los discos. Una vez creado el disco, puedes crear una imagen encriptada si proporcionas tus claves de encriptación al comando de creación de imagen. Para obtener más información sobre la encriptación en reposo y las claves de encriptación proporcionadas por el cliente, consulta Encriptación en reposo en la documentación de Cloud Platform.

Ciclo de vida de la imagen

Una vez configurada la canalización de compilación de la imagen, puedes usar las imágenes para iniciar instancias de una aplicación de manera confiable. Si bien la canalización puede controlar la creación de imágenes, también debes asegurarte de que tus mecanismos de implementación usen las versiones más recientes de las imágenes. Por último, necesitas un proceso para seleccionar imágenes, por lo que las imágenes antiguas y obsoletas no se usan de forma involuntaria.

Usa familias de imágenes

Compute Engine proporciona familias de imágenes a fin de garantizar que tus sistemas de automatización y los usuarios ejecuten las imágenes más recientes. Como administrador, puedes agrupar un conjunto de imágenes que pertenecen a la misma aplicación o casos prácticos como una familia de imágenes. Luego, los usuarios de las imágenes solo tienen que hacer un seguimiento del nombre de la familia de imágenes, en lugar de un nombre de imagen exacta. Ya que los nombres de las imágenes deben ser únicos, las canalizaciones de las compilaciones de imágenes, con frecuencia, crean nombres de imágenes con la información que codificaron, como el nombre de la aplicación, la fecha y la versión, por ejemplo, my-application-v3-20161011. En lugar de cambiar las herramientas automatizadas para dirigir a los consumidores a la imagen más reciente mediante la propagación del nombre específico hacia otros sistemas, puedes hacer referencia al nombre de la familia de imagen de manera sencilla, que siempre mostrará la imagen más reciente en la familia, por ejemplo, my-application.

Familias de imágenes

Para agregar una imagen a una familia de imágenes o crear una familia de imágenes en caso de que no exista una, debes agregar una marca --image-family adicional al paso de creación de la imagen. Por ejemplo:

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

Una vez que ejecutaste este comando, cualquier llamada para ejecutar una instancia basada en la imagen my-application se orientará a la imagen recién creada, my-application-v3-20161011.

Da de baja una imagen

Como administrador, también puedes revertir la imagen que apunta la familia de imágenes y dar de baja a la imagen con el siguiente comando:

 gcloud compute images deprecate my-application-v3-20161011 --state DEPRECATED

Puedes elegir entre varios estados de baja:

Estado Descripción
DEPRECATED Imágenes que ya no son las más recientes, pero que los usuarios aún pueden lanzar. Los usuarios verán una advertencia al momento del lanzamiento que ya no usan la imagen más reciente.
OBSOLETE Imágenes que los usuarios o la automatización no deberían lanzar. No se podrá crear una instancia desde estas imágenes. Puedes usar este estado de imagen para guardar imágenes, por lo que tus datos aún estarán disponibles cuando se activen como un disco que no sea de arranque.
DELETED Las imágenes que ya se borraron o se marcaron para su eliminación en el futuro. Estas no se pueden iniciar y debes borrarlas cuanto antes.

Aplicar políticas del ciclo de vida

Puedes marcar las imágenes para obsolescencia o eliminación con el comando gcloud compute images deprecate. Puedes adjuntar metadatos a las imágenes a fin de marcarlas para eliminación en el futuro si proporcionas las marcas --delete-in o --delete-on. Si quieres adjuntar metadatos a fin de marcar las imágenes para su futura obsolescencia, proporciona las marcas --obsolete-in o --obsolete-on. Puedes incorporar este comando a un proceso de compilación de imágenes para aplicar una política del ciclo de vida de la imagen que restrinja la proliferación de imágenes obsoletas y expiradas en tu proyecto. Por ejemplo, al final de tu canalización de compilación de la imagen, podrías incluir una comprobación adicional para las imágenes que se deben dar de baja o borrar y, a continuación, realizar esas acciones de forma explícita.

Si bien el proceso de dar de baja y borrar imágenes no se mostrará mediante la API y la IU por la configuración predeterminada, aún las podrás ver si proporcionas la marca --show-deprecated. Para borrar de forma completa la imagen y sus datos, debes enviar un comando borrar explícito a esa imagen.

Comparte imágenes entre proyectos

A menudo, las organizaciones crean varios proyectos de Cloud Platform para dividir los recursos, entornos y acceso de usuarios. El aislamiento de los recursos en los proyectos permite la facturación detallada, la aplicación de la seguridad y las herramientas de redes segregadas. A pesar de que la mayoría de los recursos no necesitan abarcar varios proyectos, las imágenes son buenas candidatas para compartir en todos los proyectos. Si usas un conjunto compartido de imágenes, puedes seguir un proceso común para publicar las imágenes con las recomendaciones de seguridad, autorización, administración de paquetes y operaciones configuradas previamente para el resto de la organización.

Comparte imágenes

Puedes compartir imágenes mediante la asignación de funciones de IAM a proyectos de una organización. El proyecto que contiene las imágenes que deseas compartir con otros proyectos a los que se hace referencia en el diagrama anterior como “Proyecto de creación de imagen” debe tener las siguientes funciones de IAM y las políticas aplicadas:

  1. Permitir a los usuarios del “Grupo de usuarios de imágenes” crear instancias de estas imágenes otorgarles la función compute.imageUser.
  2. Permitir al “Usuario de creación de imágenes” crear instancias en este proyecto al otorgarles la función compute.instanceAdmin.
  3. Permitir al “Usuario de creación de imágenes” crear imágenes y discos en este proyecto al otorgarles la función compute.storageAdmin.

Los proyectos que deseas que puedan usar imágenes compartidas deben permitir a los usuarios con la función compute.imageUser crear instancias al asignarles la función compute.instanceAdmin.

Para obtener más instrucciones detalladas sobre cómo compartir imágenes entre proyectos, consulta Cómo compartir imágenes en todos los proyectos en la documentación de Compute Engine.

Pasos siguientes

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…