Prácticas recomendadas para las familias de imágenes

En este documento, se explican las prácticas recomendadas para usar familias de imágenes en Compute Engine.

Antes de comenzar

Familias de imágenes públicas

Compute Engine proporciona familias de imágenes para ayudarte a garantizar que tus sistemas de automatización puedan hacer referencia a las imágenes más recientes. Como administrador, puedes agrupar un conjunto de imágenes como una familia de imágenes. Luego, los usuarios de las imágenes solo tendrán que hacer un seguimiento del nombre de la familia de imágenes, en lugar de un nombre de imagen exacto. Debido a que los nombres de imágenes deben ser únicos, las canalizaciones de compilación de imágenes suelen crear nombres de imágenes con información codificada, como el nombre de la aplicación, la fecha y la versión, por ejemplo, my-application-v3-20210101. En las herramientas de automatización, puedes hacer referencia al nombre de la familia de imágenes en lugar de tener que actualizar el nombre de la imagen a intervalos. El uso de familias de imágenes garantiza que siempre puedas acceder a la imagen más reciente de la familia, por ejemplo, my-application.

Familias de imágenes

Las imágenes públicas se agrupan en familias de imágenes. Una familia de imágenes públicas siempre apunta a la última versión de una imagen que está disponible en cada zona. Cuando las imágenes nuevas se lanzan de forma global, su disponibilidad inicial en las familias de imágenes depende de la zona, lo que mejora la tolerancia de tus flujos de trabajo ante errores zonales durante las actualizaciones de imágenes de Google.

Durante el lanzamiento de imágenes, la versión más reciente de una imagen en una familia de imágenes puede se distinta en zonas diferentes. Por ejemplo, la familia de imágenes debian-10 en el proyecto debian-cloud siempre apunta a la imagen de Debian 10 más reciente, pero la imagen de Debian 10 más reciente en la zona us-central1-a y southamerica-east1-b puede ser diferente.

Cuando creas VM de familias de imágenes mediante Google Cloud CLI, Compute Engine usa la imagen más reciente disponible en la zona de tu VM para la solicitud. Cuando creas VM con Google Cloud Console, Compute Engine solo muestra las imágenes públicas disponibles en la zona seleccionada. Si deseas crear VM con la imagen más reciente disponible a nivel global, usa el comando instances create de la CLI de gcloud y especifica --image-family-scope=global.

Visualiza la última versión de la imagen disponible

Puedes ver la última imagen disponible a nivel global de una familia de imágenes o ver la última imagen disponible de una zona en particular.

Global

Para ver la última imagen disponible a nivel global de una familia de imágenes, usa uno de los siguientes métodos:

gcloud

Usa el comando gcloud compute images describe-from-family:

gcloud compute images describe-from-family IMAGE_FAMILY_NAME  \
   --project=IMAGE_PROJECT

Reemplaza lo siguiente:

  • IMAGE_FAMILY_NAME: El nombre de la familia de imágenes que deseas buscar Para obtener una lista completa de los nombres de las familias de imágenes, consulta Detalles de los sistemas operativos.
  • IMAGE_PROJECT: Es el nombre del proyecto de imagen. Para obtener una lista completa de los nombres de los proyectos de imágenes, consulta Detalles de los sistemas operativos.

API

Realiza una solicitud GET al método images.getFromFamily.

GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME

Reemplaza lo siguiente:

  • IMAGE_PROJECT: Es el nombre del proyecto de imagen. Para obtener una lista completa de los nombres de los proyectos de imágenes, consulta Detalles de los sistemas operativos.
  • IMAGE_FAMILY_NAME: El nombre de la familia de imágenes que deseas buscar Para obtener una lista completa de los nombres de las familias de imágenes, consulta Detalles de los sistemas operativos.

Por zona

A fin de ver la última imagen disponible de una familia de imágenes para una zona específica, usa uno de los siguientes métodos:

gcloud

Usa el comando gcloud compute images describe-from-family con la marca --zone:

gcloud compute images describe-from-family IMAGE_FAMILY_NAME  \
   --project=IMAGE_PROJECT \
   --zone=ZONE

Reemplaza lo siguiente:

  • IMAGE_FAMILY_NAME: El nombre de la familia de imágenes que deseas buscar Para obtener una lista completa de los nombres de las familias de imágenes, consulta Detalles de los sistemas operativos.
  • IMAGE_PROJECT: Es el nombre del proyecto de imagen. Para obtener una lista completa de los nombres de los proyectos de imágenes, consulta Detalles de los sistemas operativos.
  • ZONE: Es la zona que deseas consultar.

API

Realiza una solicitud GET al método imageFamilyViews.

GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/zones/ZONE/imageFamilyViews/IMAGE_FAMILY_NAME

Reemplaza lo siguiente:

  • IMAGE_PROJECT: Es el nombre del proyecto de imagen. Para obtener una lista completa de los nombres de los proyectos de imágenes, consulta Detalles de los sistemas operativos.
  • ZONE: Es la zona que deseas consultar.
  • IMAGE_FAMILY_NAME: El nombre de la familia de imágenes que deseas buscar Para obtener una lista completa de los nombres de las familias de imágenes, consulta Detalles de los sistemas operativos.

Familias de imágenes personalizadas

Puedes crear tus propias imágenes con una familia de imágenes personalizada. La familia de imágenes apunta a la imagen más reciente que usaste para crear la familia de imágenes. Para revertir una familia de imágenes a una versión anterior, puedes hacer que la imagen más reciente de esa familia quede obsoleta (siempre que la imagen anterior no esté obsoleta). Para obtener más información, consulta Configura las versiones de imágenes en una familia de imágenes.

Para crear una imagen con una familia de imágenes, o crear una familia de imágenes si no existe ninguna, debes agregar una marca --family adicional al paso de la creación de la imagen, por ejemplo:

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

Después de ejecutar este comando, cualquier llamada para ejecutar una instancia basada en la imagen my-application apunta a la imagen recién creada, my-application-v3-20210101.

Cómo usar familias de imágenes

Si bien las familias de imágenes te permiten hacer referencia a la imagen más reciente, puede que la última imagen presente una incompatibilidad con tu aplicación, lo que puede causar problemas en un entorno de producción si no está validado. Si deseas aprovechar los beneficios de las familias de imágenes y reducir los riesgos, te recomendamos que pruebes la última imagen de la familia de imágenes a la que se hace referencia antes de usarla en el entorno de producción.

En resumen, puedes considerar el siguiente enfoque:

  • Configura un entorno de pruebas independiente de tu entorno de producción.
  • En el entorno de pruebas, completa los siguientes pasos:
    • Crea una familia de imágenes personalizada a partir de la familia de imágenes de origen.
    • Verifica la estabilidad de la imagen nueva en la familia de imágenes personalizada en comparación con tus cargas de trabajo.
  • Una vez verificada, mueve esta familia de imágenes personalizada a un entorno de producción.

Por ejemplo, el proceso podría parecerse al siguiente procedimiento.

  1. En tu proyecto de prueba, crea una imagen de la familia de imágenes de origen. Esta nueva familia de imágenes también debe tener su propia familia de imágenes personalizada para hacer referencia en el entorno de pruebas. Para crear la imagen con una familia de imágenes personalizada, ejecuta el siguiente 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
    

    Reemplaza lo siguiente:

    • test-image-name: El nombre de tu imagen de prueba
    • source-project: El proyecto al que pertenece la familia de imágenes de origen
    • source-image-family: El nombre de la familia de imágenes de origen
    • test-project: El nombre del proyecto de prueba al que deseas agregar la familia de imágenes
    • test-image-family: El nombre de tu familia de imágenes de prueba
  2. Mediante tu familia de imágenes personalizada test-image-family, crea una VM para probar tu carga de trabajo. Para crear la VM, ejecuta el siguiente comando:

    gcloud compute instances create test-instance-name \
    --image-family your-test-image-family \
    --project test-project
    

    Reemplaza lo siguiente:

    • test-instance-name: El nombre de tu instancia de prueba
    • test-image-family: El nombre de tu familia de imágenes de prueba
    • test-project: El nombre de tu proyecto de prueba
  3. Cuando hayas validado que esta imagen funciona bien para tu carga de trabajo, cópiala en tu entorno de producción.

    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
    

    Reemplaza lo siguiente:

    • prod-image-name: El nombre de tu imagen de producción
    • test-image-family: El nombre de tu familia de imágenes de prueba
    • test-project: El proyecto al que pertenece la familia de imágenes de prueba
    • prod-project: El nombre de tu proyecto que se encuentra en el entorno de producción
    • prod-image-family: El nombre de la familia de imágenes que deseas usar en tu entorno de producción