Bonnes pratiques concernant les familles d'images

Ce document décrit les bonnes pratiques à adopter lors de l'utilisation de familles d'images sur Compute Engine.

Avant de commencer

Familles d'images publiques

Compute Engine fournit des familles d'images pour vous aider à vérifier que vos systèmes d'automatisation peuvent référencer les dernières images. En tant qu'administrateur, vous pouvez regrouper un ensemble d'images en tant que famille d'images. Ainsi, les utilisateurs ne doivent retenir que le nom de la famille, plutôt que le nom exact d'une image. Comme les noms d'images doivent être uniques, les pipelines de création d'images créent souvent des noms intégrant des informations telles que le nom de l'application, la date et la version (par exemple, my-application-v3-20210101). Dans les outils d'automatisation, vous pouvez référencer le nom de la famille d'images au lieu de devoir mettre à jour le nom de l'image à intervalles réguliers. L'utilisation de familles d'images vous permet de toujours accéder à la dernière image de la famille, par exemple, my-application.

Familles d'images

Les images publiques sont regroupées dans des familles d'images. Une famille d'images publique pointe toujours vers la dernière version d'une image disponible dans chaque zone. Lorsque de nouvelles images sont publiées mondialement, leur disponibilité initiale dans les familles d'images dépend de la zone, ce qui améliore la tolérance aux pannes zonale de vos workflows lors des mises à jour des images Google.

Lors du déploiement de l'image, la dernière version d'une image au sein d'une famille d'images peut différer selon les zones. Par exemple, la famille d'images debian-10 du projet debian-cloud pointe toujours vers l'image Debian 10 la plus récente, mais l'image Debian 10 la plus récente peut ne pas être la même dans la zone us-central1-a et dans la zone southamerica-east1-b.

Lorsque vous créez des VM à partir de familles d'images à l'aide de Google Cloud CLI, Compute Engine utilise la dernière image disponible dans la zone de votre VM pour votre requête. Lorsque vous créez des VM à l'aide de Google Cloud Console, Compute Engine n'affiche que les images publiques disponibles dans la zone sélectionnée. Si vous souhaitez créer des VM à l'aide de la dernière image disponible mondialement, utilisez la commande instances create de gcloud CLI et spécifiez --image-family-scope=global.

Afficher la dernière version d'image disponible

Vous pouvez afficher la dernière image disponible dans le monde entier dans une famille d'images ou afficher la dernière image disponible dans une zone particulière.

Mondialement

Pour afficher la dernière image disponible mondialement dans une famille d'images, utilisez l'une des méthodes suivantes :

gcloud

Exécutez la commande gcloud compute images describe-from-family :

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

Remplacez l'élément suivant :

API

Envoyez une requête GET à la méthode images.getFromFamily :

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

Remplacez l'élément suivant :

Par zone

Pour afficher la dernière image disponible dans une famille d'images pour une zone spécifique, utilisez l'une des méthodes suivantes :

gcloud

Exécutez la commande gcloud compute images describe-from-family avec l'option --zone :

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

Remplacez les éléments suivants :

  • IMAGE_FAMILY_NAME : nom de la famille d'images dans laquelle effectuer la recherche. Pour obtenir la liste complète des noms de familles d'images, consultez la page Détails des systèmes d'exploitation.
  • IMAGE_PROJECT : nom du projet d'image. Pour obtenir la liste complète des noms de projets d'images, consultez la section Détails des systèmes d'exploitation.
  • ZONE : zone que vous souhaitez interroger.

API

Envoyez une requête GET à la méthode imageFamilyViews :

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

Remplacez l'élément suivant :

  • IMAGE_PROJECT : nom du projet d'image. Pour obtenir la liste complète des noms de projets d'images, consultez la section Détails des systèmes d'exploitation.
  • ZONE : zone que vous souhaitez interroger.
  • IMAGE_FAMILY_NAME : nom de la famille d'images dans laquelle effectuer la recherche. Pour obtenir la liste complète des noms de familles d'images, consultez la page Détails des systèmes d'exploitation.

Familles d'images personnalisées

Vous pouvez créer vos propres images avec une famille d'images personnalisées. La famille d'images pointe vers l'image la plus récente que vous avez utilisée pour créer la famille d'images. Pour restaurer une version précédente de la famille d'images, vous pouvez rendre obsolète l'image la plus récente de cette famille (tant que l'image précédente n'est pas obsolète). Pour en savoir plus, consultez la section Définir des versions d'images dans une famille d'images.

Pour créer une image avec une famille d'images ou pour créer une famille d'images s'il n'en existe pas, vous devez ajouter une option --family supplémentaire à l'étape de création de l'image, par exemple :

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

Après avoir exécuté cette commande, tout appel à exécuter une instance basée sur l'image my-application pointe vers l'image nouvellement créée, my-application-v3-20210101.

Utiliser des familles d'images

Bien que les familles d'images vous permettent de référencer la dernière image, celle-ci peut entraîner une incompatibilité avec votre application si elle n'est pas validée et causer des problèmes dans un environnement de production. Si vous souhaitez tirer parti des avantages des familles d'images tout en réduisant les risques, nous vous recommandons de tester la dernière image référencée de la famille d'images avant de l'utiliser dans votre environnement de production.

En résumé, vous pouvez adopter l'approche suivante :

  • Configurez un environnement de test distinct de votre environnement de production.
  • Dans l'environnement de test, procédez comme suit :
    • Créez une famille d'images personnalisées à partir de la famille d'images sources.
    • Vérifiez la stabilité de la nouvelle image dans la famille d'images personnalisées par rapport à vos charges de travail.
  • Une fois la validation effectuée, déplacez cette famille d'images personnalisées vers un environnement de production.

Par exemple, la procédure peut se présenter comme suit :

  1. Dans votre projet de test, créez une image à partir de la famille d'images sources. Cette nouvelle famille d'images sources doit également avoir sa propre famille d'images personnalisées à référencer dans l'environnement de test. Pour créer l'image avec une famille d'images personnalisées, exécutez la commande suivante :

    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
    

    Remplacez les éléments suivants :

    • test-image-name : nom de votre image de test.
    • source-project : projet auquel appartient la famille d'images sources.
    • source-image-family : nom de la famille d'images sources.
    • test-project : nom du projet de test auquel vous souhaitez ajouter la famille d'images.
    • test-image-family : nom de votre famille d'images de test.
  2. À l'aide de votre famille d'images personnalisées test-image-family, créez une VM pour tester votre charge de travail. Pour créer la VM, exécutez la commande suivante :

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

    Remplacez les éléments suivants :

    • test-instance-name : nom de votre instance de test.
    • test-image-family : nom de votre famille d'images de test.
    • test-project : nom de votre projet de test.
  3. Après avoir vérifié que cette image fonctionne bien pour votre charge de travail, copiez-la dans votre environnement de production.

    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
    

    Remplacez les éléments suivants :

    • prod-image-name : nom de votre image de production.
    • test-image-family : nom de votre famille d'images de test.
    • test-project : projet auquel appartient la famille d'images de test.
    • prod-project : nom de votre projet qui se trouve dans l'environnement de production.
    • prod-image-family : nom de la famille d'images que vous souhaitez utiliser dans votre environnement de production.