Migrer une VM monolithique – Présentation et configuration

Dans ce tutoriel, vous allez découvrir un exemple d'application non entièrement modernisée et suivre les étapes nécessaires à la migration de tous ses services vers GKE. Cette application exécute certains de ses services dans un cluster GKE et le reste en tant que monolithe dans une VM.

Ce tutoriel se divise en quatre sections :

  1. Présentation et configuration

    Dans cette section, vous allez examiner le contexte du tutoriel, puis vous allez configurer l'infrastructure et les outils requis pour continuer à utiliser ce tutoriel.

  2. Découverte et évaluation (jour 0)

    Vous allez ensuite utiliser des outils de détection pour évaluer votre VM afin de déterminer si elle est adaptée à la migration, ainsi que pour créer un cluster de traitement en préparation de la migration.

  3. Migration et déploiement (jour 1)

    Une fois l'évaluation terminée, vous apprendrez à créer un plan de migration pour votre VM monolithique, à effectuer une migration complète des images et des données, et à déployer vos nouveaux artefacts dans Kubernetes.

  4. Optimisation (2e jour)

    Enfin, vous apprendrez à déployer rapidement des modifications de code source dans votre environnement conteneurisé, et découvrirez les bonnes pratiques concernant les microservices, l'observabilité et la modernisation.

Context

Aujourd'hui encore, les anciennes applications des grandes entreprises sont monolithiques et s'exécutent sur des piles technologiques propriétaires ou sur des machines virtuelles (VM) gourmandes en ressources de calcul. Ces services sont souvent essentiels au fonctionnement d'une application plus importante, mais engendrent de nombreux coûts d'exploitation tels que des frais d'exploitation et de licence. Néanmoins, en raison de leur nature, les VM peuvent être difficiles à migrer vers une solution plus légère, telle que les conteneurs d'un cluster GKE.

Dans ce tutoriel, vous allez apprendre à exploiter Migrate to Containers pour déplacer facilement et sans modifier le code un service monolithique et sa base de données d'une VM vers un environnement GKE, en réduisant ainsi les frais d'exploitation et les obstacles au développement. Vous apprendrez ensuite à exploiter votre charge de travail nouvellement migrée en déployant des modifications de code source et des bonnes pratiques de modernisation.

L'exemple d'application utilisé est celui de Bank of Anthos, une simulation de service de banque de détail, dotée de son propre réseau de traitement des transactions et de ses propres bases de données.

Les services Web, utilisateur et contact de la banque d'Anthos, ainsi que la base de données du compte, sont déjà des microservices conteneurisés s'exécutant dans des conteneurs sur GKE. Cependant, leur registre de transactions monolithiques et leur base de données de transactions s'exécutent toujours sur une seule machine virtuelle. Pour réduire les coûts d'exploitation sans interrompre votre workflow actuel, vous devez pouvoir migrer facilement cette VM vers GKE.

Schéma de l'architecture de Bank of Anthos

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Outils requis

Vous pouvez suivre ce tutoriel avec Cloud Shell, où sont préinstallés les outils de ligne de commande gcloud, kubectl, git et migctl utilisés ici. Grâce à Cloud Shell, vous n'avez pas besoin d'installer ces outils de ligne de commande sur votre poste de travail.

Pour utiliser Cloud Shell, procédez comme suit :

  1. Accédez à Google Cloud Console.
  2. Cliquez sur le bouton Activer Cloud Shell en haut de la fenêtre de la console Google Cloud.Bouton d'activation de Cloud Shell

    Une session Cloud Shell s'ouvre dans un nouveau cadre en bas de la console Google Cloud et affiche une invite de ligne de commande.

    Session Cloud Shell

API requises

Activer la compatibilité avec Compute Engine

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

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

    Accéder au sélecteur de projet

  5. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  6. Activez l'API Compute Engine.

    Activer l'API

Activer et configurer GKE

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.

Déployer Bank of Anthos

Dans cette section, vous allez déployer votre VM monolithique de registre dans Compute Engine et créer le cluster GKE où résideront les autres services de Bank of Anthos.

  1. Définissez les variables d'environnement requises pour le déploiement monolithique de Bank of Anthos.

    export PROJECT_ID=PROJECT_ID
    export ZONE=COMPUTE_ZONE
    
  2. Clonez le dépôt Bank of Anthos dans votre répertoire d'accueil.

    git clone https://github.com/GoogleCloudPlatform/bank-of-anthos ${HOME}/bank-of-anthos
    
  3. Déployez le monolithe du registre de Bank of Anthos sur Compute Engine.

    cd ${HOME}/bank-of-anthos
    make monolith-deploy
    

    Cette commande crée une VM dans Compute Engine à l'aide de l'image du monolithe de registre Bank of Anthos.

  4. Créez une règle de pare-feu qui autorise les requêtes adressées à l'instance de VM sur le port 8080, utilisée par le service d'interface pour communiquer avec le monolithe de registre.

    gcloud compute --project=PROJECT_ID firewall-rules create default-allow-http \
      --direction=INGRESS --priority=1000 --network=default --action=ALLOW \
      --rules=tcp:8080 --source-ranges=0.0.0.0/0 --target-tags=monolith
    
  5. Créez un cluster GKE qui héberge le reste des services de Bank of Anthos.

    gcloud container clusters create boa-cluster \
      --zone COMPUTE_ZONE --project=PROJECT_ID \
      --machine-type=e2-standard-4 --num-nodes=4 \
      --subnetwork=default
    
  6. Une fois le cluster créé, récupérez ses identifiants et définissez le contexte Kubernetes de sorte qu'il pointe vers lui.

    gcloud container clusters get-credentials boa-cluster \
      --zone COMPUTE_ZONE --project=PROJECT_ID
    
  7. Remplacez l'ID du projet dans le ConfigMap utilisé pour décrire comment les services GKE peuvent communiquer avec la VM monolithique de registre.

    sed -i 's/\[PROJECT_ID\]/'PROJECT_ID'/g' ${HOME}/bank-of-anthos/src/ledgermonolith/config.yaml
    

    Consultez ce fichier pour vous assurer que les modifications ont bien été appliquées.

    cat ${HOME}/bank-of-anthos/src/ledgermonolith/config.yaml | grep ADDR
    

    Vous devriez voir que l'ID du projet a été interpolé dans les hôtes du service de registre.

    TRANSACTIONS_API_ADDR: "ledgermonolith-service.c.PROJECT_ID.internal:8080"
    BALANCES_API_ADDR: "ledgermonolith-service.c.PROJECT_ID.internal:8080"
    HISTORY_API_ADDR: "ledgermonolith-service.c.PROJECT_ID.internal:8080"
    CONTACTS_API_ADDR: "contacts:8080"
    USERSERVICE_API_ADDR: "userservice:8080
    
  8. Appliquez les différents services de Bank of Anthos sur votre cluster.

    cd ${HOME}/bank-of-anthos/
    kubectl apply -f src/ledgermonolith/config.yaml
    kubectl apply -f extras/jwt/jwt-secret.yaml
    kubectl apply -f kubernetes-manifests/accounts-db.yaml
    kubectl apply -f kubernetes-manifests/userservice.yaml
    kubectl apply -f kubernetes-manifests/contacts.yaml
    kubectl apply -f kubernetes-manifests/frontend.yaml
    kubectl apply -f kubernetes-manifests/loadgenerator.yaml
    

    Vous pouvez vérifier les états des pods à l'aide de la commande suivante :

    kubectl get pods
    

    Quelques minutes peuvent être nécessaires pour que tous les pods soient opérationnels.

    NAME                           READY   STATUS    RESTARTS   AGE
    accounts-db-0                  1/1     Running   0          51s
    contacts-d5dcdc87c-5l9xf       1/1     Running   0          50s
    frontend-5768bd978-s6vkq       1/1     Running   0          50s
    loadgenerator-8485dfd-wjvst    1/1     Running   0          50s
    userservice-8477dfcb46-htw96   1/1     Running   0          51s
    
  9. Une fois que tous les pods sont définis sur l'état Running, vous pouvez trouver l'adresse IP externe du service de l'équilibreur de charge frontend.

    kubectl get service frontend
    
    NAME       TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
    frontend   LoadBalancer   10.79.248.161   ##.##.##.##.    80:31304/TCP   4m
    
  10. Enfin, vous pouvez ouvrir un navigateur et visiter la page Web à l'adresse IP externe ci-dessus (veillez à utiliser HTTP plutôt que HTTPS).

    http://EXTERNAL_IP
    

    Vous devriez pouvoir vous connecter avec les identifiants par défaut et voir les transactions sur le tableau de bord. Les transactions répertoriées proviennent du monolithe du registre actuellement hébergé sur une VM.

    Capture d'écran de Bank of Anthos

Effectuer un nettoyage

Pour éviter des frais Google Cloud inutiles, vous devez supprimer les ressources utilisées pour ce tutoriel dès que vous avez terminé. Voici les ressources :

  • Le cluster GKE boa-cluster
  • La VM Compute Engine ledgermonolith-service

Vous pouvez supprimer ces ressources manuellement ou suivre les étapes ci-dessous afin de supprimer votre projet, ce qui supprimera également toutes les ressources associées.

  • Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  • Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  • Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
  • Étapes suivantes

    Maintenant que vous avez activé les API nécessaires et déployé votre configuration de Bank of Anthos, vous pouvez passer à la section suivante du tutoriel, Découverte et évaluation, où vous apprendrez comment vous pouvez utiliser les outils de détection de migration pour déterminer si votre VM est adaptée à la migration à l'aide des outils Migrate to Containers.

    Si vous terminez le tutoriel après cette section, n'oubliez pas de nettoyer votre projet et vos ressources Google Cloud.