Migrieren Sie lokale Java-Anwendungen zur AWS Verwendung von AWS App2Container - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Migrieren Sie lokale Java-Anwendungen zur AWS Verwendung von AWS App2Container

Erstellt von Dhananjay Karanjkar () AWS

Umgebung: PoC oder Pilotprojekt

Quelle: Anwendungen

Ziel: Containerisierte Anwendung, die auf Amazon bereitgestellt wird ECS

R-Typ: Replatform

Arbeitslast: Open Source

Technologien: Migration; Web- und mobile Apps

AWSDienstleistungen: Amazon EC2 Container Registry; Amazon ECS

Übersicht

AWSApp2Container (A2C) ist ein Befehlszeilentool, das dabei hilft, bestehende Anwendungen, die auf virtuellen Maschinen ausgeführt werden, in Container umzuwandeln, ohne dass Codeänderungen erforderlich sind. A2C erkennt Anwendungen, die auf einem Server laufen, identifiziert Abhängigkeiten und generiert relevante Artefakte für eine reibungslose Bereitstellung in Amazon Elastic Container Service (AmazonECS) und Amazon Elastic Kubernetes Service (Amazon). EKS

Dieses Muster enthält die Schritte für die Remote-Migration von lokalen Java-Anwendungen, die auf einem Anwendungsserver bereitgestellt werden, zu AWS Fargate oder Amazon mithilfe EKS von App2Container über den Worker-Computer. 

Der Arbeitscomputer kann in den folgenden Anwendungsfällen verwendet werden:

  • Die Docker-Installation ist auf den Anwendungsservern, auf denen die Java-Anwendungen ausgeführt werden, nicht zulässig oder nicht verfügbar.

  • Sie müssen die Migration mehrerer Anwendungen verwalten, die auf verschiedenen physischen oder virtuellen Servern bereitgestellt werden.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein Anwendungsserver mit einer Java-Anwendung, die auf einem Linux-Server ausgeführt wird

  • Ein Arbeitscomputer mit einem Linux-Betriebssystem

  • Ein Arbeitscomputer mit mindestens 20 GB verfügbarem Festplattenspeicher

Einschränkungen

Architektur

Quelltechnologie-Stack

  • Java-Anwendungen, die auf einem Linux-Server ausgeführt werden

Zieltechnologie-Stack

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodeDeploy

  • AWS CodePipeline

  • Amazon Elastic Container Registry

  • AWS-Fargate

Zielarchitektur

Architektur für lokale Java-Anwendungen aufAWS.

Tools

Tools

  • AWSApp2Container — AWS App2Container (A2C) ist ein Befehlszeilentool, mit dem Sie Anwendungen, die in Ihren lokalen Rechenzentren oder auf virtuellen Maschinen ausgeführt werden, so verschieben können, dass sie in Containern ausgeführt werden, die von Amazon oder Amazon verwaltet werden. ECS EKS

  • AWS CodeBuild— AWS CodeBuild ist ein vollständig verwalteter Build-Service in der Cloud. CodeBuild kompiliert Ihren Quellcode, führt Komponententests durch und produziert Artefakte, die sofort einsatzbereit sind.

  • AWS CodeCommit— AWS CodeCommit ist ein von Amazon Web Services gehosteter Versionskontrolldienst, mit dem Sie Assets (wie Dokumente, Quellcode und Binärdateien) privat in der Cloud speichern und verwalten können.

  • AWS CodePipeline— AWS CodePipeline ist ein Service zur kontinuierlichen Bereitstellung, mit dem Sie die zur Veröffentlichung Ihrer Software erforderlichen Schritte modellieren, visualisieren und automatisieren können.

  • Amazon ECS — Amazon Elastic Container Service (AmazonECS) ist ein hoch skalierbarer, schneller Container-Management-Service, mit dem Container in einem Cluster ausgeführt, gestoppt und verwaltet werden können.

  • Amazon ECR — Amazon Elastic Container Registry (AmazonECR) ist ein AWS verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.

  • Amazon EKS — Amazon Elastic Kubernetes Service (AmazonEKS) ist ein verwalteter Service, mit dem Sie Kubernetes ausführen können, AWS ohne Ihre eigene Kubernetes-Steuerebene oder Knoten installieren, betreiben und warten zu müssen.

  • AWSFargate — AWS Fargate ist eine Technologie, die Sie mit Amazon verwenden können, ECS um Container auszuführen, ohne Server oder Cluster von Amazon Elastic Compute Cloud (AmazonEC2) -Instances verwalten zu müssen. Mit Fargate müssen Sie keine Cluster virtueller Maschinen mehr bereitstellen, konfigurieren oder skalieren, um Container auszuführen.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie ein Geheimnis für den Zugriff auf den Anwendungsserver.

Um vom Arbeitscomputer aus remote auf den Anwendungsserver zuzugreifen, erstellen Sie in AWS Secrets Manager einen geheimen Schlüssel. Für Ihr Geheimnis können Sie entweder den SSH privaten Schlüssel oder das Zertifikat und den SSH privaten Schlüssel verwenden. Weitere Informationen finden Sie unter Geheimnisse für AWS App2Container verwalten.

DevOps, Entwickler
AufgabeBeschreibungErforderliche Fähigkeiten

Installieren Sie die TAR-Datei.

Führen Sie sudo yum install -y tar.

DevOps, Entwickler

Installiere die AWSCLI.

Führen Sie den Befehl aus, um das Amazon Command Line Interface (AWSCLI) zu installierencurl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

Extrahieren Sie awscliv2.zip.

Führen Sie sudo ./aws/install.

DevOps, Entwickler

Installieren Sie App2Container.

Führen Sie die folgenden Befehle aus:

curl -o AWSApp2Container-installer-linux.tar.gz https://app2container-release-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/AWSApp2Container-installer-linux.tar.gz

sudo tar xvf AWSApp2Container-installer-linux.tar.gz

sudo ./install.sh

DevOps, Entwickler

Konfigurieren Sie die Profile.

Führen Sie den Befehl aus, um das AWS Standardprofil zu konfigurierensudo aws configure.

Um das benannte AWS Standardprofil zu konfigurieren, führen Sie den Befehl aussudo aws configure --profile <profile name>.

DevOps, Entwickler

Docker-Installation.

Führen Sie die folgenden Befehle aus.

sudo yum install -y docker

sudo systemctl enable docker & sudo systemctl restart docker

Initialisieren Sie App2Container.

Um App2Container zu initialisieren, benötigen Sie die folgenden Informationen:

  • workspace: Um Artefakte zur Containerisierung von Anwendungen zu speichern. Es wird empfohlen, einen Verzeichnispfad mit mindestens 20 GB freiem Festplattenspeicher anzugeben.

  • awsProfile: Auf dem Server konfiguriertes AWS Profil. Dies ist erforderlich, um Artefakte auf Amazon S3 hochzuladen, den containerize Befehl auszuführen und AWS Artefakte für die Bereitstellung auf Amazon ECS oder Amazon zu generierenEKS.

  • s3Bucket: Um AWS Artefakte zu extrahieren und zu speichern.

  • metricsReportPermission: Um gemeldete Messwerte zu sammeln und zu speichern.

  • dockerContentTrust: Um das Docker-Image zu signieren.

Führen Sie sudo app2container init.

DevOps, Entwickler
AufgabeBeschreibungErforderliche Fähigkeiten

Konfigurieren Sie den Arbeitscomputer so, dass er eine Remoteverbindung herstellt und App2Container-Befehle auf dem Anwendungsserver ausführt.

Um den Arbeitscomputer zu konfigurieren, sind die folgenden Informationen erforderlich:

  • Server FQDN: Der vollqualifizierte Domänenname des Anwendungsservers.

  • Server IP address: Die IP-Adresse des Anwendungsservers. Entweder die FQDN oder die IP-Adresse ist ausreichend.

  • SecretARN: Der Amazon-Ressourcenname (ARN) des Secrets, das für die Verbindung mit dem Anwendungsserver verwendet wird und in Secrets Manager gespeichert ist.

  • AuthMethod: Die cert Authentifizierungsmethode key oder.

Führen Sie sudo app2container remote configure.

DevOps, Entwickler
AufgabeBeschreibungErforderliche Fähigkeiten

Entdecken Sie die lokalen Java-Anwendungen.

Führen Sie den folgenden Befehl aus, um per Fernzugriff alle Anwendungen zu ermitteln, die auf dem Anwendungsserver ausgeführt werden.

sudo app2container remote inventory --target <FQDN/IP of App server>

Dieser Befehl generiert eine Liste der bereitgestellten Anwendungen ininventory.json.

Entwickler, DevOps

Analysieren Sie die entdeckten Anwendungen.

Führen Sie den folgenden Befehl aus, um jede Anwendung mithilfe der in der Inventarphase erhaltenen Anwendungs-ID remote zu analysieren.

sudo app2container remote analyze --application-id <java-app-id> --target <FQDN/IP of App Server>

Dadurch wird eine analysis.json Datei am Speicherort des Workspace generiert. Nachdem diese Datei generiert wurde, können Sie die Containerisierungsparameter Ihren Bedürfnissen entsprechend ändern.

Entwickler, DevOps

Extrahieren Sie die analysierten Anwendungen.

Um ein Anwendungsarchiv für die analysierte Anwendung zu generieren, führen Sie den folgenden Befehl remote aus, der das TAR-Bundle am Workspace-Speicherort generiert.

sudo app2container remote extract --application-id <application id> --target <FQDN/IP of App Server>

Extrahierte Artefakte können auf dem lokalen Arbeitscomputer generiert werden.

Entwickler, DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Containerisieren Sie die extrahierten Artefakte.

Containerisieren Sie die im vorherigen Schritt extrahierten Artefakte, indem Sie den folgenden Befehl ausführen.

sudo app2container containerize --input-archive <tar bundle location on worker machine>

Entwickler, DevOps

Finalisieren Sie das Ziel.

Um das Ziel zu finalisieren, öffnen Sie es. Es wird erstelltdeployment.json, wenn der containerize Befehl ausgeführt wird. Um AWS Fargate als Ziel anzugeben, setzen Sie createEcsArtifacts auftrue. Um Amazon EKS als Ziel festzulegen, legen Sie den Wert createEksArtifacts auf true fest.

Entwickler, DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Generieren Sie AWS Bereitstellungsartefakte auf dem Arbeitscomputer.

Führen Sie den folgenden Befehl aus, um Bereitstellungsartefakte zu generieren.

sudo app2container generate app-deployment --application-id <application id>

Dadurch wird die ecs-master.yml AWS CloudFormation Vorlage im Workspace generiert.

DevOps

Stellen Sie die Artefakte bereit.

Um die generierten Artefakte weiter bereitzustellen, stellen Sie die AWS CloudFormation Vorlage bereit, indem Sie den folgenden Befehl ausführen.

aws cloudformation deploy --template-file <path to ecs-master.yml> --capabilities CAPABILITY_NAMED_IAM --stack-name <application id>–ECS

DevOps

Generieren Sie die Pipeline.

Modifizieren Sie daspipeline.json, was in der vorherigen Geschichte erstellt wurde, basierend auf Ihren Bedürfnissen. Führen Sie dann den generate pipeline Befehl aus, um die Artefakte für die Pipeline-Bereitstellung zu generieren.

DevOps

Zugehörige Ressourcen