Oefening: Azure Container Apps instellen

Voltooid

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:

Variabele Beschrijving
AZ_PROJECT De naam van het project. Als u deze waarde uniek wilt houden, raden we u aan deze waarde te gebruiken AZ_PROJECT_<your initials>.
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. Voer een opdrachtprompt in az account list-locations om de lijst met beschikbare regio's weer te geven.
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-numerieke 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 voorbeeld 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:

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 verkrijgen:

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"

Noteer de verbindingsreeks die wordt geretourneerd.

De Quarkus-toepassing configureren om verbinding te maken met de PostgreSQL-database

Werk het application.properties bestand in de src/main/resources map van het project bij om de verbindingsreeks naar de PostgreSQL-database te configureren. Hiervoor stelt u de quarkus.datasource.jdbc.url eigenschap in op de eerder uitgevoerde $POSTGRES_CONNECTION_STRING_SSL waarde. Het &ssl=true&sslmode=require deel van de verbindingsreeks dwingt het stuurprogramma om 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 taken-app:

curl http://127.0.0.1:8080/api/todos

U moet de volgende uitvoer zien:

[
   {
      "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
   }
]

Als u deze uitvoer ziet, hebt u de Quarkus-toepassing uitgevoerd en verbinding gemaakt met de externe PostgreSQL-database.