Migrer une VM Linux à l'aide de la CLI Migrate to Containers
Dans ce guide de démarrage rapide, vous allez créer une instance de machine virtuelle (VM) Compute Engine, puis utiliser la CLI Migrate to Containers pour migrer la VM vers Google Kubernetes Engine (GKE).
Avant de commencer
Dans la console Google Cloud, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
Vérifiez que la facturation est activée pour votre projet Google Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
Activez l'API Compute Engine.
Activez l'API GKE.
Créer une VM Compute Engine avec un serveur Web à utiliser comme VM source
Cette section explique comment créer une VM Compute Engine qui diffuse une page web Hello World! que vous pouvez utiliser pour les tests une fois la migration terminée.
Dans la console Google Cloud, cliquez sur Activer Cloud Shell.
Créez une VM :
gcloud compute instances create quickstart-source-vm \ --zone=us-central1-a --machine-type=e2-medium \ --subnet=default --scopes="cloud-platform" \ --tags=http-server,https-server --image=ubuntu-2204-jammy-v20240208 \ --image-project=ubuntu-os-cloud --boot-disk-size=10GB --boot-disk-type=pd-standard \ --boot-disk-device-name=quickstart-source-vm
Attendez quelques minutes que la création de la VM soit terminée.
Créez une règle de pare-feu qui autorise les requêtes adressées à l'instance via HTTP :
gcloud compute firewall-rules create default-allow-http \ --direction=INGRESS --priority=1000 --network=default --action=ALLOW \ --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
Accédez à la page Instances de VM.
Pour vous connecter à la VM
quickstart-source-vm
, recherchez la ligne de la VM, puis cliquez sur SSH.La connexion est établie dans un nouvel onglet.
Dans l'onglet de commande de
quickstart-source-vm
, installez le packageapache2
:sudo apt-get update && sudo apt-get install apache2 -y
Après l'installation d'Apache, le système d'exploitation lance automatiquement le serveur Apache.
Dans le même onglet, remplacez la page Web par défaut du serveur Web Apache par une nouvelle page :
echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
Revenez à la page Instances de VM et copiez l'adresse IP externe affichée pour
quickstart-source-vm
.Collez l'adresse IP de la VM dans la barre d'adresse de votre navigateur. Ajoutez le préfixe
http://
.La page Hello World! s'affiche.
Créer une VM Compute Engine à utiliser comme machine locale
Dans cette section, vous allez créer une VM Linux que vous pourrez utiliser comme machine locale pour effectuer les différentes opérations Migrate to Containers, afin de migrer la VM source.
Dans la console Google Cloud, cliquez sur Activer Cloud Shell.
Créez une VM :
gcloud compute instances create quickstart-local-vm \ --zone=us-central1-a --machine-type=e2-medium \ --subnet=default --scopes="cloud-platform" \ --tags=http-server,https-server --image=ubuntu-2204-jammy-v20240208 \ --image-project=ubuntu-os-cloud --boot-disk-size=50GB --boot-disk-type=pd-standard \ --boot-disk-device-name=quickstart-local-vm
Attendez quelques minutes que la création de la VM soit terminée.
Créer un cluster GKE
Dans cette section, vous allez créer un cluster GKE dans Google Cloud, dans lequel vous déploierez ensuite votre charge de travail conteneurisée, en suivant ce guide de démarrage rapide.
Dans Cloud Shell, créez un cluster Kubernetes :
gcloud container clusters create quickstart-cluster \ --zone=us-central1-a --machine-type=e2-medium \ --image-type=ubuntu_containerd --num-nodes=1 \ --logging=SYSTEM,WORKLOAD,API_SERVER,SCHEDULER,CONTROLLER_MANAGER
Attendez quelques minutes que la création du cluster soit terminée.
Préparer la VM locale pour effectuer la migration
Accédez à la page Instances de VM.
Pour vous connecter à la VM
quickstart-local-vm
, recherchez la ligne de la VM, puis cliquez sur SSH.La connexion est établie dans un nouvel onglet.
Dans l'onglet de commande de
quickstart-local-vm
, installez la Google Cloud CLI :# Import the Google Cloud public key. curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg # Add the gcloud CLI distribution URI as a package source echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list # Update and install gcloud sudo apt-get update && sudo apt-get install google-cloud-cli # Get started gcloud init
Pour terminer la configuration de gcloud CLI, suivez les instructions qui s'affichent dans l'onglet de commande de
quickstart-local-vm
:- Pour sélectionner le compte à utiliser pour effectuer les différentes opérations, saisissez
1
. - Pour sélectionner le projet dans lequel vous avez créé la VM, saisissez
1
. - Pour ignorer la configuration d'une région et d'une zone par défaut, saisissez
n
.
- Pour sélectionner le compte à utiliser pour effectuer les différentes opérations, saisissez
Installez Docker et autorisez l'utilisateur autre que "root" à exécuter des conteneurs :
# Download the convenience script curl -fsSL https://get.docker.com -o install-docker.sh # Install Docker sudo sh install-docker.sh # Allow the non-root user to access Docker sudo usermod -aG docker $USER # Activate the group changes newgrp docker
Installez Skaffold :
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \ sudo install skaffold /usr/local/bin/
Téléchargez la CLI Migrate to Containers :
curl -O "https://m2c-cli-release.storage.googleapis.com/$(curl -s https://m2c-cli-release.storage.googleapis.com/latest)/linux/amd64/m2c" chmod +x ./m2c
Migrer la VM source
Une migration implique généralement trois étapes : copie du système de fichiers de la VM source, analyse du système de fichiers pour créer un plan de migration, et génération des artefacts de migration.
Les sections suivantes expliquent comment utiliser la CLI Migrate to Containers pour migrer la VM source à l'aide de votre VM Linux locale.
Copier le système de fichiers de la VM source
Lorsque vous copiez un système de fichiers de VM source, la CLI Migrate to Containers utilise des filtres par défaut pour réduire la taille du système de fichiers copié. Toutefois, pour que le serveur Apache soit disponible au démarrage, il a besoin du répertoire /var/log
, qui est supprimé par les filtres par défaut.
Cette section explique comment modifier les filtres par défaut pour s'assurer que le répertoire /var/log/*
va bien être copié avec le système de fichiers de la VM source.
Dans l'onglet de commande de
quickstart-local-vm
, obtenez la liste des filtres Migrate to Containers par défaut dans un fichier nomméfilters.txt
:./m2c copy default-filters > filters.txt
Procédez comme suit pour modifier les filtres par défaut :
Ouvrez le fichier
filters.txt
dans un éditeur de texte :vi filters.txt
Pour modifier le fichier, appuyez sur
i
.Supprimez l'instruction suivante :
- /var/log/*
Pour enregistrer le fichier et quitter l'éditeur de texte, appuyez sur
Esc
, puis saisissez:wq
.
Copiez le système de fichiers de la machine source :
./m2c copy gcloud \ --project PROJECT_ID --zone us-central1-a \ --vm-name quickstart-source-vm --output quickstart-vm-filesystem \ --filters filters.txt
Remplacez PROJECT_ID par l'ID du projet.
Une copie du système de fichiers de la machine source est désormais disponible dans le répertoire
quickstart-vm-filesystem
.
Créer le plan de migration
Dans l'onglet de commande de
quickstart-local-vm
, créez le plan de migration :./m2c analyze \ --source quickstart-vm-filesystem --plugin linux-vm-container \ --output analysis-output
Une fois l'analyse terminée, un nouveau répertoire nommé
analysis-output
est créé, qui contient le plan de migration,config.yaml
.
Générer les artefacts de migration
Dans l'onglet de commande de
quickstart-local-vm
, générez les artefacts de migration :./m2c generate --input analysis-output --output migration-artifacts
Les artefacts de migration générés sont ajoutés au répertoire
migration-artifacts
.
Déployer la charge de travail migrée
Dans cette section, vous allez déployer la charge de travail migrée depuis votre VM locale quickstart-local-vm
vers le cluster GKE exécuté sur Google Cloud.
Dans l'onglet de commande de
quickstart-local-vm
, installez le plug-ingke-gcloud-auth-plugin
:sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
Installez
kubectl
:sudo apt-get install kubectl
Connectez-vous au cluster
quickstart-cluster
:gcloud container clusters get-credentials quickstart-cluster --zone us-central1-a --project PROJECT_ID
Ouvrez le dossier
migration-artifacts
:cd migration-artifacts
Pour exposer la charge de travail sur Internet, ajoutez un nouveau service
LoadBalancer
dans le fichierdeployment_spec.yaml
. Procédez comme suit pour modifier le fichierdeployment_spec.yaml
:Ouvrez le fichier
deployment_spec.yaml
dans un éditeur de texte :vi deployment_spec.yaml
Pour modifier le fichier, appuyez sur
i
.Recherchez l'objet
Service
nommélinux-system
. Des caractéristiques semblables aux lignes suivantes devraient s'afficher :--- apiVersion: v1 kind: Service metadata: creationTimestamp: null labels: anthos-migrate.cloud.google.com/type: linux-container migrate-for-anthos-optimization: "true" migrate-for-anthos-version: m2c-cli-1.2.2 name: linux-system spec: clusterIP: None selector: app: linux-system type: ClusterIP ---
Ajoutez un autre objet
Service
appeléhello-service
, juste aprèslinux-system
:--- apiVersion: v1 kind: Service metadata: creationTimestamp: null labels: anthos-migrate.cloud.google.com/type: linux-container migrate-for-anthos-optimization: "true" migrate-for-anthos-version: m2c-cli-1.2.2 name: linux-system spec: clusterIP: None selector: app: linux-system type: ClusterIP --- # Add the hello-service object apiVersion: v1 kind: Service metadata: name: hello-service spec: selector: app: linux-system ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer ---
Pour enregistrer le fichier et quitter l'éditeur de texte, appuyez sur
Esc
, puis saisissez:wq
.
Déployez la VM migrée :
skaffold run -d eu.gcr.io/PROJECT_ID
Obtenez l'adresse IP externe de la VM migrée :
kubectl get service hello-service
Lorsque le serveur Web est prêt, une adresse IP externe s'affiche pour le service
hello-service
que vous avez ajouté.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-service LoadBalancer 10.23.241.124 EXTERNAL_IP 80:32611/TCP 5m4s
Pour vérifier si la migration a réussi, ouvrez un nouvel onglet de navigateur et accédez à la page Web à l'adresse IP externe.
http://EXTERNAL_IP
Veillez à utiliser
HTTP
et nonHTTPS
.Si le texte Hello World! s'affiche à l'écran, la migration de votre VM a réussi.
Si vous ne parvenez pas à accéder à votre charge de travail migrée, découvrez comment résoudre les problèmes connus.
Effectuer un nettoyage
Pour éviter que les ressources utilisées sur cette page soient facturées sur votre compte Google Cloud, procédez comme suit :
Supprimer le cluster GKE
- Dans la console Google Cloud, accédez à la page GKE.
- Sélectionnez
quickstart-cluster
, puis cliquez sur Supprimer. - Lorsque vous êtes invité à confirmer votre choix, cliquez à nouveau sur Supprimer.
Supprimer les VM
- Dans Google Cloud Console, accédez à la page Instances de VM.
- Cliquez sur le nom
quickstart-source-vm
. - En haut de la page de détails de l'instance, cliquez sur Supprimer.
- Cliquez sur le nom
quickstart-local-vm
. - En haut de la page de détails de l'instance, cliquez sur Supprimer.
Étapes suivantes
- Découvrez comment traiter la collecte d'invités et la collecte de données par lot.
- Consultez le tutoriel sur la migration d'une application du framework Spring, disponible dans le dépôt GitHub de Migrate to Containers, pour savoir comment migrer une application plus complexe.