Oefening: Azure Container Apps instellen
In deze eenheid maakt u een Azure-resourcegroep die de resources voor de toepassing bevat. Vervolgens stelt u de PostgreSQL-database in met behulp van de Azure CLI. Ten slotte configureert u de Quarkus-toepassing voor toegang tot de externe PostgreSQL-database. Gebruik een terminal van uw keuze om de opdrachten uit te voeren.
De werkomgeving voorbereiden
U moet enkele omgevingsvariabelen instellen. Hier volgen enkele opmerkingen over de variabelen die u gaat maken:
| Veranderlijk | Beschrijving |
|---|---|
AZ_PROJECT |
De naam van het project. Als u deze waarde uniek wilt houden, raden we u aan AZ_PROJECT_<your initials>te gebruiken. |
AZ_RESOURCE_GROUP |
De naam van de resourcegroep die de resources bevat. |
AZ_LOCATION |
De Azure-regio. U wordt aangeraden een regio te gebruiken die zich dicht bij de locatie bevindt. Als u de lijst met beschikbare regio's wilt zien, voert u az account list-locations in bij een opdrachtprompt. |
AZ_CONTAINERAPP |
De naam van het Azure Container Apps-exemplaar dat de containers bevat. |
AZ_CONTAINERAPP_ENV |
De naam van de Azure Container Apps-omgeving. |
AZ_POSTGRES_SERVER_NAME |
De naam van uw PostgreSQL-server. Niet-alphanumerische tekens zijn niet toegestaan: -, _, !, $, #, %. De naam moet uniek zijn in Azure. Zorg ervoor dat u een unieke id gebruikt. |
AZ_POSTGRES_DB_NAME |
De naam van de PostgreSQL-database. De standaardnaam van de PostgreSQL-database is postgres. |
AZ_POSTGRES_USERNAME |
De standaardgebruikersnaam van de beheerder voor uw PostgreSQL-databaseserver. |
AZ_POSTGRES_PASSWORD |
Het standaardwachtwoord voor uw PostgreSQL-databaseserver. Gebruik een beveiligd wachtwoord. |
Notitie
U kunt uw Azure-resources op elke gewenste manier een naam geven, maar we raden u aan afkortingsvoorbeelden voor Azure-resources te bekijken. Dit artikel bevat voorbeelden van afkortingen voor veel Azure-resources (bijvoorbeeld rg voor resourcegroepen en ca voor container-apps).
Gebruik de volgende opdrachten om de variabelen in te stellen. Zorg ervoor dat u de waarden wijzigt zoals beschreven in de voorgaande tabel.
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>}"
Deze omgevingsvariabelen worden in de rest van deze module gebruikt.
Maak vervolgens een resourcegroep:
az group create \
--name $AZ_RESOURCE_GROUP \
--location $AZ_LOCATION
Een exemplaar van Azure Database for PostgreSQL maken
U maakt nu een beheerde PostgreSQL-server. Voer de volgende opdracht uit om een klein exemplaar van Azure Database for PostgreSQL te maken:
Als u nog nooit een PostgreSQL-server hebt gemaakt, moet u de provider registreren. Voer de volgende opdracht uit om de PostgreSQL-provider te registreren:
az provider register --namespace Microsoft.DBforPostgreSQL
Maak vervolgens de 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"
Met deze opdracht maakt u een kleine PostgreSQL-server die gebruikmaakt van de variabelen die u eerder hebt ingesteld.
Quarkus configureren voor toegang tot de PostgreSQL-database
U verbindt de Quarkus-toepassing nu met de PostgreSQL-database. Hiervoor moet u eerst de verbindingsreeks voor de database ophalen:
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"
Noteer de verbindingsreeks die wordt geretourneerd.
Notitie
Microsoft raadt aan de veiligste verificatiestroom te gebruiken die beschikbaar is. De verificatiestroom die in deze procedure wordt beschreven, zoals voor databases, caches, berichten of AI-services, vereist een hoge mate van vertrouwen in de toepassing en draagt risico's die niet aanwezig zijn in andere stromen. Gebruik deze stroom alleen als veiligere opties, zoals beheerde identiteiten voor wachtwoordloze of sleutelloze verbindingen, niet haalbaar zijn. Voor bewerkingen van lokale machines geeft u de voorkeur aan gebruikersidentiteiten voor verbindingen zonder wachtwoord of sleutelloze verbindingen.
De Quarkus-toepassing configureren om verbinding te maken met de PostgreSQL-database
Werk het application.properties bestand bij in de src/main/resources map van het project om de verbindingsreeks te configureren voor de PostgreSQL-database. Hiervoor stelt u de eigenschap quarkus.datasource.jdbc.url in op de eerder uitgevoerde $POSTGRES_CONNECTION_STRING_SSL waarde. Het &ssl=true&sslmode=require deel van de verbindingsreeks dwingt het stuurprogramma ssl te gebruiken, een vereiste voor Azure Database for PostgreSQL.
quarkus.hibernate-orm.database.generation=update
quarkus.datasource.jdbc.url=<the POSTGRES_CONNECTION_STRING_SSL value>
De Quarkus-toepassing lokaal uitvoeren om de externe databaseverbinding te testen
Gebruik deze opdracht om de toepassing lokaal uit te voeren:
./mvnw clean quarkus:dev # On Mac or Linux
mvnw.cmd clean quarkus:dev # On Windows
Wanneer Quarkus wordt uitgevoerd, maakt u een paar taken met behulp van de volgende cURL-opdrachten in een afzonderlijk terminalvenster:
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
Controleer vervolgens of de taken zich in de database bevinden door toegang te krijgen tot het GET-eindpunt dat is gedefinieerd in de to-do-app:
curl http://127.0.0.1:8080/api/todos
U ziet nu de volgende uitvoer:
[
{
"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"
}
]
Als u deze uitvoer ziet, hebt u de Quarkus-toepassing uitgevoerd en verbinding gemaakt met de externe PostgreSQL-database.