Eine monolithische VM migrieren – Übersicht und Einrichtung

In dieser Anleitung finden Sie eine Beispielanwendung, die noch nicht vollständig modernisiert wurde, und führen die Schritte durch, die zur Migration aller Dienste des Nutzers zu GKE erforderlich sind. Diese Anwendung führt einige ihrer Dienste in einem GKE-Cluster und die übrigen Dienste als monolithische Anwendung in einer VM aus.

Diese Anleitung ist in mehrere Abschnitte unterteilt:

  1. Übersicht und Einrichtung

    In diesem Abschnitt steht der Kontext dieser Anleitung und Sie richten die erforderliche Infrastruktur und Tools ein, die für die weitere Ausführung der Anleitung erforderlich sind.

  2. Erkennung und Bewertung (Tag 0)

    Als Nächstes verwenden Sie Discovery-Tools, um die VM auf Eignung für die Migration zu prüfen und einen Verarbeitungscluster in Vorbereitung auf die Migration zu erstellen.

  3. Migration und Bereitstellung (Tag 1)

    Am Ende können Sie jetzt einen Migrationsplan für Ihre monolithische VM erstellen, mit einer vollständigen Migration von Images und Daten fortfahren und Ihre neu erstellten Artefakte in Kubernetes bereitstellen.

Kontext

Dennoch ist ein großer Teil der Legacy-Anwendungen in großen Unternehmen monolithisch und wird auf eigenen Technologie-Stacks oder rechenintensiven virtuellen Maschinen (VMs) ausgeführt. Diese Dienste sind oft entscheidend für die Arbeit in einer größeren Anwendung, verursachen jedoch viele Betriebskosten wie Betriebs- und Lizenzgebühren. VMs können jedoch aufgrund ihrer Beschaffenheit nur schwer zu einer schlankeren Lösung wie Containern in einem GKE-Cluster migriert werden.

In dieser Anleitung erfahren Sie, wie Sie Migrate for Anthos and GKE nutzen können, um einen monolithischen Dienst und seine Datenbank einfach und ohne Code-Änderungen von einer VM in eine GKE-Umgebung zu verschieben und so die Betriebskosten und die Beeinträchtigungen bei der Entwicklung zu reduzieren.

Die verwendete Beispielanwendung ist Bank of Anthos, eine Simulation eines Einzelhandels-Banking-Dienstes mit einem eigenen Transaktionsverarbeitungsnetzwerk und eigenen Datenbanken.

Die Web-Front-End-, Nutzer- und Kontaktdienste der Bank of Anthos sind zusammen mit der Kontodatenbank bereits containerisierte Mikrodienste, die in Containern in GKE ausgeführt werden. Das monolithische Transaktionsverzeichnis und die zugehörige Transaktionsdatenbank werden jedoch weiterhin auf einer einzigen virtuellen Maschine ausgeführt. Um die Betriebskosten zu senken, ohne den aktuellen Workflow zu unterbrechen, müssen Sie diese VM problemlos zu GKE migrieren können.

Architekturdiagramm der Bank of Anthos

Kosten

In dieser Anleitung werden die folgenden kostenpflichtigen Komponenten von Google Cloud verwendet:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Nach Abschluss dieser Anleitung können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Erforderliche Tools

Sie können diese Anleitung mit Cloud Shell ausführen, das mit den in dieser Anleitung verwendeten Befehlszeilentools gcloud, kubectl, git und migctl vorinstalliert wird. Wenn Sie Cloud Shell verwenden, müssen Sie diese Befehlszeilentools nicht auf Ihrer Workstation installieren.

So verwenden Sie Cloud Shell:

  1. Gehen Sie zur Google Cloud Console.
  2. Klicken Sie im oberen Bereich des Cloud Console-Fensters auf Cloud Shell aktivieren Schaltfläche zum Aktivieren von Cloud Shell.

    Im unteren Bereich der Cloud Console wird ein neues Feld mit einer Cloud Shell-Sitzung und einer Befehlszeilen-Eingabeaufforderung geöffnet.

    Cloud Shell-Sitzung

Erforderliche APIs

Unterstützung für Compute Engine aktivieren

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Aktivieren Sie die Compute Engine API.

    API aktivieren

GKE aktivieren und konfigurieren

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

Mit den folgenden Methoden können Sie die gcloud-Einstellungen festlegen:

  • Verwenden Sie gcloud init, wenn Sie die Standardeinstellungen ansehen möchten.
  • Verwenden Sie gcloud config, um Ihre Projekt-ID, Zone und Region individuell festzulegen.

gcloud init verwenden

Wenn Sie die Fehlermeldung One of [--zone, --region] must be supplied: Please specify location erhalten, führen Sie diesen Abschnitt aus.

  1. Führen Sie gcloud init aus und folgen Sie der Anleitung:

    gcloud init

    Wenn Sie SSH auf einem Remote-Server verwenden, können Sie mit dem Flag --console-only verhindern, dass mit dem Befehl ein Browserfenster geöffnet wird:

    gcloud init --console-only
  2. Folgen Sie der Anleitung, um gcloud zur Verwendung Ihres Google Cloud-Kontos zu autorisieren.
  3. Erstellen Sie eine neue Konfiguration oder wählen Sie eine vorhandene aus.
  4. Wählen Sie ein Google Cloud-Projekt aus.
  5. Wählen Sie eine Compute Engine-Standardzone für zonale Cluster oder eine Region für regionale oder Autopilot-Cluster aus.

gcloud config verwenden

  • Legen Sie Ihre standardmäßige Projekt-ID fest:
    gcloud config set project PROJECT_ID
  • Wenn Sie mit zonalen Clustern arbeiten, legen Sie die Standardzone für Compute Engine fest:
    gcloud config set compute/zone COMPUTE_ZONE
  • Wenn Sie mit Autopilot oder regionalen Clustern arbeiten, legen Sie die Compute-Standardregion fest:
    gcloud config set compute/region COMPUTE_REGION
  • Aktualisieren Sie gcloud auf die neueste Version:
    gcloud components update

Bank of Anthos bereitstellen

In diesem Abschnitt stellen Sie Ihre monolithische Verzeichnis-VM in der Compute Engine bereit und erstellen den GKE-Cluster, in dem der Rest der Bank of Anthos-Dienste untergebracht werden soll.

  1. Legen Sie die Umgebungsvariablen fest, die für die monolithische Bereitstellung der Bank of Anthos erforderlich sind.

    export PROJECT_ID=PROJECT_ID
    export ZONE=COMPUTE_ZONE
    
  2. Klonen Sie das Bank of Anthos-Repository in Ihr Basisverzeichnis.

    git clone https://github.com/GoogleCloudPlatform/bank-of-anthos ${HOME}/bank-of-anthos
    
  3. Stellen Sie das monolithische Verzeichnis der Bank of Anthos auf Compute Engine bereit.

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

    Mit diesem Befehl wird sichergestellt, dass Sie nicht bereits eine in Konflikt stehende VM haben und dann eine VM in Compute Engine mit dem Verzeichnis der Bank von Anthos erstellt wird.

  4. Erstellen Sie eine Firewallregel, die Anfragen an die VM-Instanz auf Port 8080 zulässt, der vom Front-End-Dienst für die Kommunikation mit dem monolithischen Verzeichnis verwendet wird.

    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. Erstellen Sie einen GKE-Cluster, der die übrigen Bank of Anthos-Dienste hostet.

    gcloud container clusters create boa-cluster \
      --project=PROJECT_ID --zone=COMPUTE_ZONE \
      --machine-type=e2-standard-4 --num-nodes=4 \
      --enable-stackdriver-kubernetes --subnetwork=default
    
  6. Rufen Sie nach dem Erstellen des Clusters die Anmeldedaten ab und legen Sie fest, dass der Kubernetes-Kontext auf ihn verweist.

    gcloud container clusters get-credentials boa-cluster --zone COMPUTE_ZONE
    
  7. Ersetzen Sie die Projekt-ID in die ConfigMap, die verwendet wird, um zu beschreiben, wie die GKE-Dienste mit der monolithischen Verzeichnis-VM kommunizieren können.

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

    Rufen Sie diese Datei auf, um zu prüfen, ob die Änderungen erfolgreich angewendet wurden.

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

    Sie sollten sehen, dass die Projekt-ID in die Verzeichnisdienst-Hosts interpoliert wurde.

    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. Wenden Sie die verschiedenen Bank of Anthos-Dienste auf Ihren Cluster an:

    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
    

    Sie können die Pod-Status mit dem folgenden Befehl prüfen:

    kubectl get pods
    

    Es kann einige Minuten dauern, bis alle Pods einsatzbereit sind.

    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. Wenn alle Pods auf Running gesetzt sind, finden Sie die externe IP-Adresse des LoadBalancer-Dienstes 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. Schließlich können Sie einen Browser öffnen und die Webseite unter der oben angegebenen externen IP-Adresse aufrufen. Verwenden Sie dabei HTTP und nicht HTTPS.

    http://EXTERNAL_IP
    

    Sie sollten sich mit den Standardanmeldedaten anmelden und Transaktionen im Dashboard sehen können. Die aufgeführten Transaktionen stammen aus dem Verzeichnis, das derzeit in einer VM gehostet wird.

    Screenshot von Bank of Anthos

Mehr zur Verwendung der Play Console erfahren

Nachdem Sie nun die benötigten APIs aktiviert und Ihre Einrichtung von Bank of Anthos bereitgestellt haben, können Sie zum nächsten Abschnitt des Tutorials Erkennung und Bewertung übergehen. Hier erfahren Sie, wie Sie die Migrationserkennungswerkzeuge verwenden können, um zu bewerten, ob Ihre VM für eine Migration mit den Tools von Migrate for Anthos and GKE geeignet ist.

Denken Sie nach Abschluss der Anleitung daran, Ihr Google Cloud-Projekt und Ihre Ressourcen zu bereinigen.

Bereinigen

Um unnötige Google Cloud-Gebühren zu vermeiden, sollten Sie die für diese Anleitung verwendeten Ressourcen sofort löschen. Diese Ressourcen sind:

  • Der GKE-Cluster boa-cluster
  • Die Compute Engine-VM ledgermonolith-service

Sie können diese Ressourcen entweder manuell löschen oder die folgenden Schritte ausführen, um Ihr Projekt zu löschen. Dadurch werden auch alle Ressourcen entfernt.

  • Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  • Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  • Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.