Mettre à jour des images post-migration

Les artefacts de conteneur que vous créez avec la commande migctl migration generate-artifacts ne sont pas destinés qu'au déploiement de la charge migrée dans le cluster cible. Ils concernent également les opérations de maintenance du "jour 2", y compris les mises à jour logicielles d'applications et d'OS de mode utilisateur, les correctifs de sécurité, l'édition de configurations intégrées, l'ajout ou le remplacement de fichiers et la mise à jour du logiciel d'exécution Migrate to Containers.

Vérifier le fichier Dockerfile d'image généré

Ces opérations de maintenance exploitent le fichier Dockerfile généré et la couche d'image système capturée. Lorsqu'ils sont associés à la couche d'exécution Migrate to Containers, ces fichiers peuvent être intégrés dans une image de conteneur exécutable.

Les artefacts de conteneur générés ont été créés en tenant compte de l'intégration de la phase de conception du pipeline CI/CD, comme indiqué dans le schéma suivant :

Schéma illustrant le pipeline CI/CD.

Le fichier Dockerfile est structuré sous la forme d'une compilation en plusieurs étapes, afin de faciliter la maintenance et la manipulation, tout en empêchant le gonflement de l'image.

Voici un exemple de fichier Dockerfile généré :

# Please refer to the documentation:
# https://cloud.google.com/migrate/anthos/docs/dockerfile-reference

FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.6.0 as migrate-for-anthos-runtime

# Image containing data captured from the source VM
FROM gcr.io/myproject/myworkload-non-runnable-base:v1.0.0 as source-content

# If you want to update parts of the image, add your commands here.
# For example:
# RUN apt-get update
# RUN apt-get install -y \
#               package1=version \
#               package2=version \
#               package3=version
# RUN yum update
# RUN wget http://github.com

COPY --from=migrate-for-anthos-runtime / /

# Migrate for GKE Enterprise image includes entrypoint
ENTRYPOINT [ "/.v2k.go" ]

La deuxième directive FROM référence la couche d'image système capturée à partir de la VM migrée. Cette couche ne peut pas être exécutée seule et doit être combinée avec la couche d'exécution Migrate to Containers, afin de créer une image exécutable.

Pour en savoir plus sur la création d'images de conteneurs avec Cloud Build, voir Créer des images de conteneurs.

Mettre à jour la couche des composants de charge de travail migrés

Pour toutes les mises à jour ou modifications que vous souhaitez appliquer à la couche d'image de charge de travail migrée, vous devez les appliquer après la deuxième directive FROM.

Dans l'exemple suivant, nous mettons à jour une image de conteneur migrée depuis une VM SUSE Enterprise Linux (SLES) en tant que source, à l'aide de Cloud Build et de gcloud CLI. L'exemple suivant met à jour le package openssh de la distribution SLES.

Fichier Dockerfile mis à jour :

# Image containing data captured from the source VM
FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.6.0 as migrate-for-anthos-runtime

# Image containing data captured from the source VM
FROM gcr.io/myproject/myworkload-non-runnable-base:v1.0.0 as source-content

# If you want to update parts of the image, add your commands here.
# For example:
# RUN apt-get update
# RUN apt-get install -y \
#               package1=version \
#               package2=version \
#               package3=version
# RUN yum update
# RUN wget http://github.com

RUN zypper ref -s && zypper -n in openssh
COPY --from=migrate-for-anthos-runtime / /

# Migrate to Containers image includes entrypoint
ENTRYPOINT [ "/.v2k.go" ]

Création de l'image mise à jour :

  1. Téléchargez le fichier Dockerfile généré à partir du bucket Cloud Storage dans un répertoire local de votre environnement Cloud Shell.
  2. Modifiez le fichier Dockerfile pour ajouter la directive RUN en surbrillance, comme dans l'exemple ci-dessus.
  3. Créez l'image mise à jour, puis transférez-la dans Container Registry avec un tag de version mise à jour, en veillant à laisser suffisamment de temps pour que la compilation se termine. Dans l'exemple suivant, l'image se trouve dans le répertoire actuel :

    gcloud builds submit --timeout 4h --tag gcr.io/myproject/mySUSEworkload:v1.0.1 .
    
  4. Vous pouvez utiliser l'image nouvellement créée pour mettre à jour un déploiement existant, par exemple pour effectuer une mise à niveau progressive sur l'application déployée :

    kubectl set image deployment/myWorkload my-app=gcr.io/myproject/mySUSEworkload:v1.0.1 --record
    

Mise à jour de la version de la couche Migrate to Containers

Lorsque de nouvelles versions du logiciel Migrate to Containers sont publiées, vous pouvez les mettre à jour dans les images de charge de travail déployées. Ces mises à jour peuvent inclure de nouvelles fonctionnalités, des améliorations ou des corrections de bugs.

Pour mettre à jour la couche logicielle Migrate to Containers, modifiez le fichier Dockerfile et remplacez le tag de version par la version mise à jour que vous souhaitez appliquer.

Avec l'exemple précédent, vous pouvez mettre à jour la version v1.6.0 vers la version hypothétique v1.15.0 en modifiant la directive FROM comme suit :

FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.15.0 as migrate-for-anthos-runtime

Après avoir mis à jour le fichier Dockerfile, vous devez créer une nouvelle version de l'image du conteneur de la charge de travail et l'appliquer aux déploiements existants pour les mettre à jour.

Étapes suivantes