Übung – Einrichten von Azure-Container-Apps
In dieser Einheit erstellen Sie eine Azure-Ressourcengruppe, die die Ressourcen für die Anwendung enthält. Anschließend richten Sie die PostgreSQL-Datenbank mithilfe der Azure CLI ein. Zum Schluss konfigurieren Sie die Quarkus-Anwendung für den Zugriff auf die PostgreSQL-Datenbank. Verwenden Sie ein Terminal Ihrer Wahl, um die Befehle auszuführen.
Vorbereiten der Arbeitsumgebung
Sie müssen einige Umgebungsvariablen einrichten. Hier sind einige Hinweise zu den Variablen, die Sie erstellen:
| Variable | BESCHREIBUNG |
|---|---|
AZ_PROJECT |
Der Name des Projekts. Um diesen Wert eindeutig zu halten, empfehlen wir, AZ_PROJECT_<your initials>zu verwenden. |
AZ_RESOURCE_GROUP |
Der Name der Ressourcengruppe, die die Ressourcen enthält. |
AZ_LOCATION |
Die Azure-Region. Es wird empfohlen, eine Region zu verwenden, die sich in der Nähe des Wohnorts befindet. Um die Liste der verfügbaren Regionen anzuzeigen, geben Sie az account list-locations an einer Eingabeaufforderung ein. |
AZ_CONTAINERAPP |
Der Name der Azure Container Apps-Instanz, die die Container enthält. |
AZ_CONTAINERAPP_ENV |
Der Name der Azure Container Apps-Umgebung. |
AZ_POSTGRES_SERVER_NAME |
Der Name Ihres PostgreSQL-Servers. Nichtalphanumerische Zeichen sind nicht zulässig: -, _, !, $, #, %. Der Name sollte in Azure eindeutig sein. Achten Sie darauf, einen eindeutigen Bezeichner zu verwenden. |
AZ_POSTGRES_DB_NAME |
Der Name der PostgreSQL-Datenbank. Der Standardname der PostgreSQL-Datenbank ist postgres. |
AZ_POSTGRES_USERNAME |
Der Standardmäßige Administratorbenutzername für Ihren PostgreSQL-Datenbankserver. |
AZ_POSTGRES_PASSWORD |
Das Standardkennwort für Ihren PostgreSQL-Datenbankserver. Verwenden Sie ein sicheres Kennwort. |
Hinweis
Sie können Ihre Azure-Ressourcen beliebig benennen, es wird jedoch empfohlen, Abkürzungsbeispiele für Azure-Ressourcenzu überprüfen. Dieser Artikel enthält Beispielkürzel für viele Azure-Ressourcen (z. B. rg für Ressourcengruppen und ca für Container-Apps).
Verwenden Sie die folgenden Befehle, um die Variablen einzurichten. Achten Sie darauf, die Werte wie in der vorherigen Tabelle beschrieben zu ändern.
export AZ_PROJECT_<your initials>="azure-deploy-quarkus"
export AZ_RESOURCE_GROUP="rg${AZ_PROJECT_<your initials>}"
export AZ_LOCATION="eastus"
export AZ_CONTAINERAPP="ca${AZ_PROJECT_<your initials>}"
export AZ_CONTAINERAPP_ENV="cae${AZ_PROJECT_<your initials>}"
export AZ_POSTGRES_DB_NAME="postgres${AZ_PROJECT_<your initials>}"
export AZ_POSTGRES_USERNAME="<user-name>"
export AZ_POSTGRES_PASSWORD="<secure-password>"
export AZ_POSTGRES_SERVER_NAME="psql${AZ_PROJECT_<your initials>}"
Diese Umgebungsvariablen werden während des restlichen Moduls verwendet.
Erstellen Sie als Nächstes eine Ressourcengruppe:
az group create \
--name $AZ_RESOURCE_GROUP \
--location $AZ_LOCATION
Erstellen einer Instanz von Azure-Datenbank für PostgreSQL
Sie erstellen jetzt einen verwalteten PostgreSQL-Server. Führen Sie den folgenden Befehl aus, um eine kleine Instanz von Azure Database for PostgreSQL zu erstellen:
Wenn Sie noch nie einen PostgreSQL-Server erstellt haben, müssen Sie den Anbieter registrieren. Führen Sie zum Registrieren des PostgreSQL-Anbieters den folgenden Befehl aus:
az provider register --namespace Microsoft.DBforPostgreSQL
Erstellen Sie dann den PostgreSQL-Server.
az postgres flexible-server create \
--resource-group "$AZ_RESOURCE_GROUP" \
--location "$AZ_LOCATION" \
--name "$AZ_POSTGRES_SERVER_NAME" \
--database-name "$AZ_POSTGRES_DB_NAME" \
--admin-user "$AZ_POSTGRES_USERNAME" \
--admin-password "$AZ_POSTGRES_PASSWORD" \
--public-access "All" \
--tier "Burstable" \
--sku-name "Standard_B1ms" \
--storage-size 32 \
--version "16"
Dieser Befehl erstellt einen kleinen PostgreSQL-Server, der die Zuvor eingerichteten Variablen verwendet.
Quarkus für den Zugriff auf die PostgreSQL-Datenbank konfigurieren
Sie verbinden nun die Anwendung Quarkus mit der PostgreSQL-Datenbank. Dazu müssen Sie zuerst die Verbindungszeichenfolge für die Datenbank abrufen:
export POSTGRES_CONNECTION_STRING=$(
az postgres flexible-server show-connection-string \
--server-name "$AZ_POSTGRES_SERVER_NAME" \
--database-name "$AZ_POSTGRES_DB_NAME" \
--admin-user "$AZ_POSTGRES_USERNAME" \
--admin-password "$AZ_POSTGRES_PASSWORD" \
--query "connectionStrings.jdbc" \
--output tsv
)
export POSTGRES_CONNECTION_STRING_SSL="$POSTGRES_CONNECTION_STRING&ssl=true"
echo "POSTGRES_CONNECTION_STRING_SSL=$POSTGRES_CONNECTION_STRING_SSL"
Beachten Sie die zurückgegebene Verbindungszeichenfolge.
Hinweis
Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden, der verfügbar ist. Der in diesem Verfahren beschriebene Authentifizierungsfluss, z. B. für Datenbanken, Caches, Nachrichten oder KI-Dienste, erfordert ein hohes Vertrauen in die Anwendung und trägt Risiken, die in anderen Flüssen nicht vorhanden sind. Verwenden Sie diesen Fluss nur, wenn sicherere Optionen wie verwaltete Identitäten für kennwortlose oder schlüssellose Verbindungen nicht geeignet sind. Bei Vorgängen des lokalen Computers bevorzugen Sie Benutzeridentitäten für kennwortlose oder schlüssellose Verbindungen.
Konfigurieren Sie die Quarkus-Anwendung, um eine Verbindung mit der PostgreSQL-Datenbank herzustellen.
Aktualisieren Sie die application.properties Datei im Ordner src/main/resources des Projekts, um die Verbindungszeichenfolge mit der PostgreSQL-Datenbank zu konfigurieren. Legen Sie dazu die quarkus.datasource.jdbc.url-Eigenschaft auf den zuvor ausgegebenen $POSTGRES_CONNECTION_STRING_SSL Wert fest. Der &ssl=true&sslmode=require-Teil der Verbindungszeichenfolge zwingt den Treiber zur Verwendung von SSL, eine Voraussetzung für Azure Database for PostgreSQL.
quarkus.hibernate-orm.database.generation=update
quarkus.datasource.jdbc.url=<the POSTGRES_CONNECTION_STRING_SSL value>
Führen Sie die Quarkus-Anwendung lokal aus, um die Remotedatenbankverbindung zu testen.
Verwenden Sie diesen Befehl, um die Anwendung lokal auszuführen:
./mvnw clean quarkus:dev # On Mac or Linux
mvnw.cmd clean quarkus:dev # On Windows
Erstellen Sie beim Ausführen von Quarkus einige Aufgaben mithilfe der folgenden cURL-Befehle in einem separaten Terminalfenster:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"Take Quarkus MS Learn","details":"Take the MS Learn on deploying Quarkus to Azure Container Apps","done": "true"}' \
http://127.0.0.1:8080/api/todos
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"Take Azure Container Apps MS Learn","details":"Take the ACA Learn module","done": "false"}' \
http://127.0.0.1:8080/api/todos
Überprüfen Sie als Nächstes, ob sich die Aufgaben in der Datenbank befinden, indem Sie auf den GET-Endpunkt zugreifen, der in der to-do-App definiert ist:
curl http://127.0.0.1:8080/api/todos
Die folgende Ausgabe sollte angezeigt werden:
[
{
"id": 1,
"description": "Take Quarkus MS Learn",
"details": "Take the MS Learn on deploying Quarkus to Azure Container Apps",
"done": true,
"createdAt": "2025-02-26T08:03:28.390854Z"
},
{
"id": 2,
"description": "Take Azure Container Apps MS Learn",
"details": "Take the ACA Learn module",
"done": false,
"createdAt": "2025-02-26T08:03:34.142249Z"
}
]
Wenn diese Ausgabe angezeigt wird, haben Sie erfolgreich die Quarkus-Anwendung ausgeführt und sich mit der Remote-PostgreSQL-Datenbank verbunden.