Esercizio - Configurare App contenitore di Azure
In questa unità viene creato un gruppo di risorse di Azure che contiene le risorse per l'applicazione. Quindi si configura il database PostgreSQL usando l'interfaccia della riga di comando di Azure. Infine, si configurerà quindi l'applicazione Quarkus per accedere al database PostgreSQL remoto. Usare un terminale di propria scelta per eseguire i comandi.
Preparare l'ambiente di lavoro
È necessario configurare alcune variabili di ambiente. Di seguito sono riportate alcune note sulle variabili che verranno create:
Variabile | Descrizione |
---|---|
AZ_PROJECT |
Nome del progetto. Per mantenere questo valore univoco, è consigliabile usare AZ_PROJECT_<your initials> . |
AZ_RESOURCE_GROUP |
Nome del gruppo di risorse che contiene le risorse. |
AZ_LOCATION |
Area di Azure. È consigliabile usare un'area vicina al luogo in cui si vive. Per vedere l'elenco delle aree disponibili, immettere az account list-locations al prompt dei comandi. |
AZ_CONTAINERAPP |
Nome dell’istanza di App contenitore di Azure che contiene i contenitori. |
AZ_CONTAINERAPP_ENV |
Nome dell'ambiente App contenitore di Azure. |
AZ_POSTGRES_SERVER_NAME |
il nome del server PostgreSQL. I caratteri non alfanumerici non sono consentiti: -, _, !, $, #, %. Il nome in Azure deve essere univoco. Assicurarsi di usare un identificatore univoco. |
AZ_POSTGRES_DB_NAME |
Nome del database PostgreSQL. Il nome predefinito del database PostgreSQL è postgres . |
AZ_POSTGRES_USERNAME |
Nome dell’utente amministratore predefinito per il server di database PostgreSQL. |
AZ_POSTGRES_PASSWORD |
Password predefinita per il server di database PostgreSQL. Usare una password di protezione. |
Nota
È possibile assegnare alle risorse Azure il nome che si desidera, ma si consiglia di consultare Esempi di abbreviazione per le risorse di Azure. Questo articolo fornisce abbreviazioni di esempio per molte risorse di Azure, ad esempio rg
per i gruppi di risorse e ca
per le app contenitore.
Usare i comandi seguenti per configurare le variabili. Assicurarsi di modificare i valori come descritto nella tabella precedente.
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>}"
Queste variabili di ambiente vengono nel resto del modulo.
Successivamente, creare un gruppo di risorse:
az group create \
--name $AZ_RESOURCE_GROUP \
--location $AZ_LOCATION
Creare un'istanza di Database di Azure per PostgreSQL
A questo punto, verrà creato un server PostgreSQL gestito. Eseguire il comando seguente per creare una piccola istanza di Database di Azure per PostgreSQL:
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"
Questo comando crea un piccolo server PostgreSQL che usa le variabili configurate in precedenza.
Configurare Quarkus per accedere al database PostgreSQL
A questo punto si connetterà l'applicazione Quarkus al database PostgreSQL. A tale scopo, è prima necessario ottenere la stringa di connessione per il database:
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&sslmode=require"
echo "POSTGRES_CONNECTION_STRING_SSL=$POSTGRES_CONNECTION_STRING_SSL"
Notare la stringa di connessione restituita.
Configurare l'applicazione Quarkus per la connessione al database PostgreSQL
Aggiornare il file application.properties
nella cartella src/main/resources
del progetto per configurare la stringa di connessione al database PostgreSQL. A tale scopo, impostare la proprietà quarkus.datasource.jdbc.url
sul valore $POSTGRES_CONNECTION_STRING_SSL
output precedente. La parte &ssl=true&sslmode=require
della stringa di connessione impone al driver di usare SSL, un requisito di Database di Azure per PostgreSQL.
quarkus.hibernate-orm.database.generation=update
quarkus.datasource.jdbc.url=<the POSTGRES_CONNECTION_STRING_SSL value>
Eseguire l'applicazione Quarkus in locale per testare la connessione dati remota
Usare questo comando per eseguire l'applicazione in locale:
./mvnw clean quarkus:dev # On Mac or Linux
mvnw.cmd clean quarkus:dev # On Windows
Quando Quarkus è in esecuzione, creare alcune attività usando i comandi cURL seguenti in una finestra separata del terminale:
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
Verificare quindi che le attività siano presenti nel database accedendo all'endpoint GET definito nell'app attività:
curl http://127.0.0.1:8080/api/todos
Verrà visualizzato l'output seguente:
[
{
"description" : "Take Quarkus MS Learn",
"details" : "Take the MS Learn on deploying Quarkus to Azure Container Apps",
"done" : true,
"id" : 1
},
{
"description" : "Take Azure Container Apps MS Learn",
"details" : "Take the ACA Learn module",
"done" : false,
"id" : 2
}
]
Se viene visualizzato questo output, l'applicazione Quarkus è stata eseguita correttamente e si è connessi al database PostgreSQL remoto.