Hinweis:

Java-Anwendungen auf Ampere A1 auf Oracle Cloud Infrastructure bereitstellen

Erfahren Sie, wie Sie Java-Anwendungen als Container auf der Ampere-A1-Compute-Plattform in Oracle Cloud Infrastructure (OCI) erstellen und bereitstellen. Sie stellen eine Todo-Anwendung mit einer Datenbank als Container bereit, die auf der Ampere A1 Compute-Plattform ausgeführt werden. Darüber hinaus verwenden Sie die neuen Containertools, wie Podman, die in Oracle Linux 8.0 verfügbar sind.

Einführung

Ziele

In diesem Tutorial führen Sie die folgenden Aktionen aus:

Voraussetzungen

  1. Ein Cloud-Account für Oracle Free Tier (Testversion), kostenpflichtig oder LiveLabs.
  2. Vertrautheit mit der OCI-Konsole
  3. Networking - Überblick
  4. Vertrautheit mit Compartments
  5. Grundlegende konzeptionelle Kenntnisse in Containern und Podman
  6. Führen Sie SSH-Schlüssel praktisch aus. Wenn Sie über keine Schlüssel verfügen, generieren Sie SSH-Schlüssel.

Umgebung einrichten

Initiieren Sie zunächst die Oracle-Cloud-Umgebung, mit der Sie Ihre Java EE-Anwendung erstellen und bereitstellen können. Diese Umgebung wird in einem Cloud-Compartment enthalten sein, und die Kommunikation im Compartment erfolgt über ein virtuelles Cloud-Netzwerk (VCN). Compartment und VCN isolieren und sichern die Gesamtumgebung. Sie stellen eine Ampere A1 Compute-Instanz bereit, um eine Java EE-Anwendung mit den Tomcat 9.0- und MySQL-Servercontainern zu hosten.

Basisinfrastruktursetup

  1. Öffnen Sie das Navigationsmenü. Gehen Sie unter "Governance und Administration" zu Identität, und klicken Sie auf Compartments. In diesem Bildschirm wird eine Liste der Compartments angezeigt, und klicken Sie auf Compartment erstellen.

  2. Geben Sie Folgendes ein:

    • Name: Geben Sie "AppDev" ein.
    • Beschreibung: Geben Sie eine Beschreibung ein (erforderlich). Beispiel: "AppDev compartment für das Tutorial für die ersten Schritte". Geben Sie dabei keine vertraulichen Informationen ein.
    • Übergeordnetes Compartment: Wählen Sie das Compartment aus, in dem dieses Compartment gespeichert werden soll. Wird standardmäßig auf das Root-Compartment (oder den Mandanten) gesetzt.
    • Klicken Sie auf Compartment erstellen.
    • Das Compartment wird in der Liste angezeigt.

Ampere A1 Compute-Instanz erstellen

  1. Um eine Ampere-A1-Compute-Instanz zu erstellen, verwenden Sie das Navigationsmenü in der oberen linken Ecke der Konsole, und gehen Sie zu Compute > Instanzen.

  2. Öffnen Sie den Ablauf zum Erstellen der Instanz.

    1. Stellen Sie sicher, dass Sie sich im Compartment AppDev befinden.
    2. Klicken Sie auf Instanz erstellen.
  3. Auf der Seite "Instanz erstellen" erstellen Sie die neue Instanz zusammen mit den neuen Netzwerkressourcen, wie virtuelle Cloud-Netzwerke (VCN), Internetgateway (IG) und mehr.

    1. Benennen Sie die Instanz JavaApp.
    2. Bildauswahl aktualisieren, um Oracle Linux 8 oder höher zu verwenden
    3. Klicken Sie auf die Schaltfläche Ausprägung ändern, um die verfügbaren Compute-Ausprägungen anzuzeigen.

     Instanz erstellenBeschreibung der Abbildung "Instanz erstellen"

  4. Konfigurieren Sie das Image für die Instanz.

    1. Klicken Sie auf die Schaltfläche Image ändern, um verfügbare BS-Images anzuzeigen.
    2. Wählen Sie Oracle Linux 8 oder höher.

    Wählen Sie "Oracle Linux 8" ausBeschreibung der Abbildung "Choose Oracle Linux 8"

  5. Konfigurieren Sie die Ressourcen für Ihre Instanz.

    1. Wählen Sie den auf Ampere Arm basierenden Prozessor in der Wahl für Shape Series.
    2. Wählen Sie die Ausprägung VM.Standard.A1.Flex aus der Liste der Ausprägungen mit Ampere Arm-basierten Prozessoren aus. Ampere A1-Ausprägungen sind flexibel, und Sie können die Anzahl der Cores und den Arbeitsspeicher ändern. Wählen Sie 1 Core- und 6 GB Arbeitsspeicher für die VM.

    Form wählenBeschreibung der Abbildung "Ausprägung auswählen"

  6. Wählen Sie Ihre Netzwerkoptionen aus. Erstellen Sie ein neues VCN und Subnetz für das nächste Cloud-Deployment. Stellen Sie sicher, dass Sie eine öffentliche IP-Adresse für Ihre Instanz zuweisen.

  7. Generieren Sie das SSH-Schlüsselpaar, und laden Sie es herunter. Dieser Schritt ist optional, wird aber für spätere Wartungs- und Upgrades unbedingt empfohlen. Sie können Ihren Public Key auch verwenden, wenn Sie bereits ein Schlüsselpaar verwenden möchten. Wenn Sie wissen möchten, wie SSH-Schlüssel generiert werden sollen, befolgen Sie die Anweisungen im Tutorial "SSH-Schlüssel generieren".

    NetzwerkoptionenBeschreibung der Abbildung Netzwerkoptionen

  8. Klicken Sie auf Erstellen, um die Netzwerkressourcen zu erstellen und die Compute-Instanz zu starten. Instanz startenBeschreibung der Illustrationsstartinstanz

Anwendungsports für Benutzer bereitstellen

Damit Anwendungen über das Internet zugänglich sind, müssen Sie die Ports öffnen, die unsere Anwendung verwenden wird. In diesem Abschnitt konfigurieren Sie Sicherheitslisten in Ihrem Cloud-Netzwerk und Firewallregeln in Ihrer Compute-Instanz, damit Ihre Anwendungen Traffic senden und empfangen können.

Virtuelles Cloud-Netzwerk (VCN) konfigurieren

Eine Sicherheitsliste dient als virtuelle Firewall für eine Instanz. Mithilfe von Ingress- und Egress-Regeln wird angegeben, welche Traffictypen gesendet und empfangen werden sollen. Sicherheitslisten, wie auf Subnetzebene konfiguriert, wodurch die Sicherheitsregeln auf alle Netzwerkelemente in diesem Subnetz angewendet werden. Im Netzwerk ist eine Standardsicherheitsliste enthalten, die ein anfängliches Regelset enthält. Mit der Standardsicherheitsliste können Sie eine SSH-Verbindung zur Instanz herstellen, und Ihre Instanz kann ausgehende Netzwerkaufrufe an jedes Ziel ausführen.

  1. Navigieren Sie auf der Seite mit den Instanzdetails für die Instanz, die Sie erstellt haben. Compute > Instanzen > Klicken Sie auf die von Ihnen erstellte Instanz

  2. Navigieren Sie zu dem Subnetz, dem Ihre Instanz zugeordnet ist, indem Sie auf das Subnetz Subnetz auswählen Beschreibung der Abbildung, Subnetz auswählen klicken

  3. Klicken Sie auf der Seite "Subnetz" auf die Standardsicherheitsliste, um Details anzuzeigen und zu konfigurieren.

  4. Klicken Sie auf "Ingress-Regel hinzufügen", um eine neue Regel hinzuzufügen, die eingehenden Traffic zulässt, der mit den Regeln übereinstimmt.

  5. Ingress-Regel hinzufügen, um eingehenden Traffic auf Port 8080 zuzulassen

    1. Setzen Sie das Quell-CIDR auf 0.0.0.0/0. Dies ermöglicht eingehenden Traffic von allen Quellen.
    2. Setzen Sie den Zielportbereich auf 8080. Dadurch wird das Ziel nur auf Port 8080 gesetzt. Die Regel lässt jetzt zu, dass Traffic von allen Quellen Port 8080 verwendet. Das brauchen wir, damit unsere Anwendung von überall aus erreicht werden kann.
    3. Geben Sie eine Beschreibung an.

    Ingress-Regeln einrichten Beschreibung der Ingress-Regeln für das Abbildungssetup

Firewall auf der Instanz konfigurieren

Firewallregeln steuern den Verkehr auf Paketebene in oder aus einer Instanz. Sie konfigurieren Firewallregeln direkt in der Instanz selbst und stellen eine zusätzliche Sicherheitsebene bereit.

  1. Navigieren Sie zur Seite mit den Instanzdetails für die Instanz, die Sie erstellt haben. Compute > Instanzen > Klicken Sie auf die von Ihnen erstellte Instanz.
  2. Kopieren Sie die öffentliche IP-Adresse Ihrer Instanz.
  3. Melden Sie sich mit SSH bei der Instanz an. Verwenden Sie den von Ihnen generierten oder beim Erstellen der Instanz angegebenen Schlüssel. Der Standardbenutzername für Instanzen, die das Oracle Linux-Betriebssystem verwenden, lautet opc.
  4. Führen Sie die Firewallkonfigurationsbefehle aus. Dadurch wird die Firewall in der Instanz selbst geändert, um Port 8080 verfügbar zu machen und eingehenden Traffic zu akzeptieren.

    sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp
    sudo firewall-cmd --reload
    

Java EE-Anwendungen auf Ampere A1 Compute Platform ausführen

Um diese Anwendung auszuführen, bereiten Sie zunächst eine Ampere-A1-Compute-Instanz mit einigen erforderlichen Packages vor, wie Containertools und git. Klonen Sie dann das Repository, und erstellen Sie die Anwendung mit dem enthaltenen Maven pom.xml. Starten Sie schließlich die MySQL- und Tomcat-Dockingcontainer mit den Container-Tools.

Container-Tools installieren

Oracle Linux 8 verwendet Podman zur Ausführung und Verwaltung von Containern. Podman ist eine Daemonless-Container-Engine für die Entwicklung, Verwaltung und Ausführung von Open Container Initiative-Containern und Containerimages auf Ihrem Linux-System. Podman stellt eine Docker-kompatible Befehlszeilenanwendung bereit, die als Ersatz für docker verwendet werden kann. Durch die Installation des Packages podman-docker wird der Befehl docker bereitgestellt, der podman transparent aufruft.

  1. Melden Sie sich mit SSH bei der Instanz an. Verwenden Sie den von Ihnen generierten oder beim Erstellen der Instanz angegebenen Schlüssel. Der Standardbenutzername für Instanzen, die das Oracle Linux-Betriebssystem verwenden, lautet opc.

  2. Installieren Sie das container-tools-Modul, das alle Tools bereitstellt, die für die Arbeit mit Containern erforderlich sind.

    sudo dnf module install container-tools:ol8
    
    sudo dnf install podman-docker git
    

Quellcode kopieren

Melden Sie sich zunächst mit SSH bei der Compute-Instanz an, und klonen Sie das Repository.

git clone https://github.com/oracle-quickstart/oci-arch-tomcat-mds.git
cd oci-arch-tomcat-mds/java

Webanwendung erstellen

Java-Webanwendungen werden als Webanwendungsarchive oder WAR-Dateien verpackt. WAR-Dateien sind ZIP-Dateien mit Metadaten, die die Anwendung in einem Servlet-Container wie Tomcat beschreiben. In diesem Beispiel wird Apache Maven verwendet, um die WAR-Datei für die Anwendung zu erstellen. Um die Anwendung zu erstellen, führen Sie den folgenden Befehl aus. Führen Sie den Befehl aus dem Verzeichnis aus, in dem die Quelldateien geklont wurden.

podman run -it --rm --name todo-build \
    -v "$(pwd)":/usr/src:z \
    -w /usr/src \
    maven:3 mvn clean install

Dieser Befehl erstellt ein target-Verzeichnis und die darin enthaltene WAR-Datei. Beachten Sie, dass wir Maven nicht installieren, sondern stattdessen die Build-Tools innerhalb des Containers ausführen.

Führen Sie die Anwendung auf der Ampere A1 Compute Platform aus

Die Anwendung verwendet den Tomcat-Servlet-Container und die MySQL-Datenbank. Sowohl Tomcat als auch die MySQL-Datenbank unterstützen die ARM64v8-Architektur, die von der Ampere A1-Compute-Plattform verwendet wird.

  1. Pod mit Podman erstellen.

    podman pod create --name todo-app -p 8080:8080 --infra-image k8s.gcr.io/pause:3.1
    
  2. Starten Sie den Datenbankcontainer im Pod.

    podman run --pod todo-app -d \
    -e MYSQL_ROOT_PASSWORD=pass \
    -e MYSQL_DATABASE=demo \
    -e MYSQL_USER=todo-user \
    -e MYSQL_PASSWORD=todo-pass \
    --name todo-mysql \
    -v "${PWD}"/src/main/sql:/docker-entrypoint-initdb.d:z \
    mysql/mysql-server:8.0
    

    Für die MySQL-Datenbank werden die Datenbankinitialisierungsskripte für den Container bereitgestellt, der beim Hochfahren die erforderlichen Datenbankbenutzer und -tabellen erstellt. Dazu mounten Sie das Verzeichnis /src/main/sql vom Host als /docker-entrypoint-initdb.d im Container. Das offizielle MySQL-Image, das Sie hier verwenden, ist so konfiguriert, dass .sql-Dateien beim Start in diesem Verzeichnis ausgeführt werden. Weitere Optionen, einschließlich Export und Backup von Daten, finden Sie in der Dokumentation.

  3. Stellen Sie die Anwendung bereit, die Sie als WAR-Datei mit einem Tomcat-Server erstellt haben.

    podman run --pod todo-app -d\
    --name todo-tomcat \
    -v "${PWD}"/target/todo.war:/usr/local/tomcat/webapps/todo.war:z \
    tomcat:9
    podman logs -f todo-tomcat
    

    Die Datenbankverbindungsinformationen und die Anwendung werden dem Apache Tomcat-Container über den src/main/resources/todo.properties bereitgestellt. Die JDBC-URL verwendet localhost als MySQL-Serverhost. Dies liegt daran, dass Container innerhalb desselben Pods mit localhost miteinander kommunizieren können. Die Anwendungs-WAR-Datei wird als Mount für den Container bereitgestellt.

    Tomcat stellt die Anwendung beim Hochfahren bereit, und die Portzuordnung zu dem Host macht die Anwendung über die öffentliche IP-Adresse für die Compute-Instanz verfügbar.

  4. Geben Sie die öffentliche IP-Adresse der Compute-Instanz in einem Browser mit Port 8080 ein. Sie sollten die Anwendung sehen können. http://<ip_address>:8080/todo/

Fehlerbehebung

Podman-Container können genauso wie Docker-Container geprüft werden (Sie können auch den Alias podman als docker angeben). Im Folgenden werden einige gängige Befehle zum Prüfen der Container aufgeführt:

Ampere A1 Compute Platform

Danksagungen

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere Inhalte für kostenloses Lernen im Oracle Learning YouTube-Kanal zu. Außerdem besuchen Sie education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie im Oracle Help Center.