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

  1. Dans la console Google Cloud, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  2. 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.

  3. Activez l'API Compute Engine.

    Activer l'API Compute Engine

  4. Activez l'API GKE.

    Activer 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.

  1. Dans la console Google Cloud, cliquez sur Bouton d'activation de Cloud Shell Activer Cloud Shell.

    Accéder à Google Cloud Console

  2. 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.

  3. 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
    
  4. Accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  5. 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.

  6. Dans l'onglet de commande de quickstart-source-vm, installez le package apache2 :

    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.

  7. 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
    
  8. Revenez à la page Instances de VM et copiez l'adresse IP externe affichée pour quickstart-source-vm.

  9. 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.

  1. Dans la console Google Cloud, cliquez sur Bouton d'activation de Cloud Shell Activer Cloud Shell.

    Accéder à Google Cloud Console

  2. 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

  1. Accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. 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.

  3. 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 :

    1. Pour sélectionner le compte à utiliser pour effectuer les différentes opérations, saisissez 1.
    2. Pour sélectionner le projet dans lequel vous avez créé la VM, saisissez 1.
    3. Pour ignorer la configuration d'une région et d'une zone par défaut, saisissez n.
  4. 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
    
  5. Installez Skaffold :

    curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
    sudo install skaffold /usr/local/bin/
    
  6. 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.

  1. 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
    
  2. Procédez comme suit pour modifier les filtres par défaut :

    1. Ouvrez le fichier filters.txt dans un éditeur de texte :

      vi filters.txt
      
    2. Pour modifier le fichier, appuyez sur i.

    3. Supprimez l'instruction suivante :

      - /var/log/*
      
    4. Pour enregistrer le fichier et quitter l'éditeur de texte, appuyez sur Esc, puis saisissez :wq.

  3. 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.

  1. Dans l'onglet de commande de quickstart-local-vm, installez le plug-in gke-gcloud-auth-plugin :

    sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
    
  2. Installez kubectl :

    sudo apt-get install kubectl
    
  3. Connectez-vous au cluster quickstart-cluster :

    gcloud container clusters get-credentials quickstart-cluster
      --zone us-central1-a --project PROJECT_ID
    
  4. Ouvrez le dossier migration-artifacts :

    cd migration-artifacts
    
  5. Pour exposer la charge de travail sur Internet, ajoutez un nouveau service LoadBalancer dans le fichier deployment_spec.yaml. Procédez comme suit pour modifier le fichier deployment_spec.yaml :

    1. Ouvrez le fichier deployment_spec.yaml dans un éditeur de texte :

      vi deployment_spec.yaml
      
    2. Pour modifier le fichier, appuyez sur i.

    3. 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
      
      ---
      
    4. Ajoutez un autre objet Service appelé hello-service, juste après linux-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
      
      ---
      
    5. Pour enregistrer le fichier et quitter l'éditeur de texte, appuyez sur Esc, puis saisissez :wq.

  6. Déployez la VM migrée :

    skaffold run -d eu.gcr.io/PROJECT_ID
    
  7. Obtenez l'adresse IP externe de la VM migrée :

    kubectl get service hello-service
    
  8. 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
    
  9. 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 non HTTPS.

  10. 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

  1. Dans la console Google Cloud, accédez à la page GKE.

    Accéder à la page GKE

  2. Sélectionnez quickstart-cluster, puis cliquez sur Supprimer.
  3. Lorsque vous êtes invité à confirmer votre choix, cliquez à nouveau sur Supprimer.

Supprimer les VM

  1. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cliquez sur le nom quickstart-source-vm.
  3. En haut de la page de détails de l'instance, cliquez sur Supprimer.
  4. Cliquez sur le nom quickstart-local-vm.
  5. En haut de la page de détails de l'instance, cliquez sur Supprimer.

Étapes suivantes