Prácticas recomendadas para familias de imágenes


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

Antes de empezar

  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Familias de imágenes públicas

Compute Engine proporciona familias de imágenes para ayudarte a asegurarte de 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 en una familia de imágenes. De esta forma, los usuarios de las imágenes solo tienen que recordar el nombre de la familia de imágenes, en lugar del nombre exacto de la imagen. Como los nombres de las imágenes deben ser únicos, las pipelines 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. Al usar familias de imágenes, siempre tendrás acceso 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ública siempre apunta a la versión más reciente de una imagen que está disponible en cada zona. Cuando se lanzan nuevas imágenes a nivel mundial, su disponibilidad inicial en las familias de imágenes depende de la zona, lo que mejora la tolerancia a fallos zonales de tus flujos de trabajo durante las actualizaciones de imágenes de Google.

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

Cuando creas VMs a partir de familias de imágenes con la CLI de Google Cloud, Compute Engine usa la imagen más reciente que está disponible en la zona de tu VM para tu solicitud. Cuando creas máquinas virtuales con la consola de Google Cloud , Compute Engine solo muestra las imágenes públicas disponibles en la zona que has seleccionado. Si quieres crear VMs con la imagen más reciente disponible a nivel mundial, usa el instances createcomando de la CLI de gcloud y especifica --image-family-scope=global.

Ver la última versión de imagen disponible

Puedes ver la imagen más reciente disponible en todo el mundo de una familia de imágenes o la imagen más reciente disponible en una zona concreta.

En todo el mundo

Para ver la imagen más reciente disponible en todo el mundo de una familia de imágenes, utilice 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

Haz los cambios siguientes:

  • IMAGE_FAMILY_NAME: el nombre de la familia de imágenes que quieras buscar. Para ver una lista completa de los nombres de las familias de imágenes, consulta Detalles del sistema operativo.
  • IMAGE_PROJECT: el nombre del proyecto de imagen. Para ver una lista completa de los nombres de los proyectos de imágenes, consulta Detalles del sistema operativo.

REST

Haz una solicitud GET al método images.getFromFamily:

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

Haz los cambios siguientes:

  • IMAGE_PROJECT: el nombre del proyecto de imagen. Para ver una lista completa de los nombres de los proyectos de imágenes, consulta Detalles del sistema operativo.
  • IMAGE_FAMILY_NAME: el nombre de la familia de imágenes que quieras buscar. Para ver una lista completa de los nombres de las familias de imágenes, consulta Detalles del sistema operativo.

Por zona

Para ver la imagen más reciente disponible de una familia de imágenes de una zona específica, utilice 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

Haz los cambios siguientes:

  • IMAGE_FAMILY_NAME: el nombre de la familia de imágenes que quieras buscar. Para ver una lista completa de los nombres de las familias de imágenes, consulta Detalles del sistema operativo.
  • IMAGE_PROJECT: el nombre del proyecto de imagen. Para ver una lista completa de los nombres de los proyectos de imágenes, consulta Detalles del sistema operativo.
  • ZONE: la zona que quieras consultar.

REST

Haz una solicitud GET al método imageFamilyViews:

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

Haz los cambios siguientes:

  • IMAGE_PROJECT: el nombre del proyecto de imagen. Para ver una lista completa de los nombres de los proyectos de imagen, consulta Detalles del sistema operativo.
  • ZONE: la zona que quieras consultar.
  • IMAGE_FAMILY_NAME: el nombre de la familia de imágenes que quieras buscar. Para ver una lista completa de los nombres de las familias de imágenes, consulta Detalles del sistema operativo.

Familias de imágenes personalizadas

Puedes crear familias de imágenes personalizadas para tus imágenes personalizadas. La familia de imágenes apunta a la imagen más reciente que has usado para crear la familia de imágenes. Para restaurar una versión anterior de una familia de imágenes, puedes obsoletar la imagen más reciente de esa familia, siempre que la imagen anterior no esté obsoleta. Para obtener más información, consulta Configurar versiones de imagen en una familia de imágenes.

Para crear una imagen con una familia de imágenes o para crear una familia de imágenes si no existe, debes añadir una marca --family adicional al paso de 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 apuntará a la imagen recién creada, my-application-v3-20210101.

Cuando elijas un nombre para tu familia de imágenes, consulta las convenciones de nomenclatura.

Cómo usar familias de imágenes

Aunque las familias de imágenes te permiten hacer referencia a la imagen más reciente, esta puede introducir incompatibilidades con tu aplicación, lo que puede provocar problemas en un entorno de producción si no se valida. Si quieres aprovechar al máximo las ventajas de las familias de imágenes y reducir los riesgos, te recomendamos que pruebes la imagen de referencia más reciente de la familia de imágenes antes de usarla en tu entorno de producción.

En resumen, puedes seguir este enfoque:

  • Configura un entorno de pruebas independiente del entorno de producción.
  • En el entorno de pruebas, sigue estos pasos:
    • Crea una familia de imágenes personalizada a partir de la familia de imágenes de origen.
    • Verifica la estabilidad de la nueva imagen de la familia de imágenes personalizadas en 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 ser similar al siguiente.

  1. En tu proyecto de prueba, crea una imagen a partir de la familia de imágenes de origen. Esta nueva familia de fuentes de imágenes también debe tener su propia familia de imágenes personalizadas para hacer referencia a ella en el entorno de prueba. 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
    

    Haz los cambios siguientes:

    • test-image-name: nombre de la imagen de prueba.
    • source-project: proyecto al que pertenece la familia de imágenes de origen.
    • source-image-family: nombre de la familia de imágenes de origen.
    • test-project: nombre del proyecto de prueba al que quieras añadir la familia de imágenes.
    • test-image-family: nombre de tu familia de imágenes de prueba.
  2. Con tu familia de imágenes personalizadas 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
    

    Haz los cambios siguientes:

    • test-instance-name: nombre de la instancia de prueba.
    • test-image-family: nombre de tu familia de imágenes de prueba.
    • test-project: nombre de tu proyecto de prueba.
  3. Cuando haya validado que esta imagen funciona bien para su carga de trabajo, copie la imagen en su 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
    

    Haz los cambios siguientes:

    • prod-image-name: nombre de la imagen de producción.
    • test-image-family: nombre de tu familia de imágenes de prueba.
    • test-project: proyecto al que pertenece la familia de imágenes de prueba.
    • prod-project: nombre del proyecto que está en el entorno de producción.
    • prod-image-family: nombre de la familia de imágenes que quieras usar en tu entorno de producción.