Øvelse – Konfigurer Azure Container Apps

Fuldført

I dette undermodul skal du oprette en Azure-ressourcegruppe, der indeholder ressourcerne til programmet. Du kan derefter konfigurere PostgreSQL-databasen ved hjælp af Kommandolinjegrænsefladen i Azure. Endelig skal du konfigurere Quarkus-programmet for at få adgang til den eksterne PostgreSQL-database. Brug en terminal efter eget valg til at køre kommandoerne.

Forbered arbejdsmiljøet

Du skal konfigurere nogle miljøvariabler. Her er nogle noter om de variabler, du opretter:

Variabel Beskrivelse
AZ_PROJECT Navnet på projektet. Hvis du vil bevare denne værdi entydig, anbefaler vi, at du bruger AZ_PROJECT_<your initials>.
AZ_RESOURCE_GROUP Navnet på den ressourcegruppe, der indeholder ressourcerne.
AZ_LOCATION Azure-området. Vi anbefaler, at du bruger et område, der er tæt på det, du bor i. Hvis du vil se listen over tilgængelige områder, skal du angive az account list-locations ved en kommandoprompt.
AZ_CONTAINERAPP Navnet på forekomsten af Azure Container Apps, der indeholder objektbeholderne.
AZ_CONTAINERAPP_ENV Navnet på Azure Container Apps-miljøet.
AZ_POSTGRES_SERVER_NAME Navnet på postgreSQL-serveren. Ikke-numeriske tegn er ikke tilladt: -, _, !, $, #, %. Navnet skal være entydigt på tværs af Azure. Sørg for at bruge et entydigt id.
AZ_POSTGRES_DB_NAME Navnet på PostgreSQL-databasen. Standardnavnet på PostgreSQL-databasen er postgres.
AZ_POSTGRES_USERNAME Standardadministratorbrugernavnet for postgreSQL-databaseserveren.
AZ_POSTGRES_PASSWORD Standardadgangskoden til PostgreSQL-databaseserveren. Brug en sikker adgangskode.

Seddel

Du kan navngive dine Azure-ressourcer på den ønskede måde, men vi anbefaler, at du gennemser eksempler på forkortelser for Azure-ressourcer . Denne artikel indeholder et eksempel på forkortelser for mange Azure-ressourcer (f.eks. rg for ressourcegrupper og ca for objektbeholderapps).

Brug følgende kommandoer til at konfigurere variablerne. Sørg for at ændre værdierne som beskrevet i den foregående 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>}"

Disse miljøvariabler bruges i resten af dette modul.

Opret derefter en ressourcegruppe:

az group create \
    --name $AZ_RESOURCE_GROUP \
    --location $AZ_LOCATION

Opret en forekomst af Azure Database til PostgreSQL

Du skal nu oprette en administreret PostgreSQL-server. Kør følgende kommando for at oprette en lille forekomst af Azure Database til PostgreSQL:

Hvis du aldrig har oprettet en PostgreSQL-server før, skal du registrere udbyderen. Kør følgende kommando for at registrere PostgreSQL-provideren:

az provider register --namespace Microsoft.DBforPostgreSQL

Opret derefter PostgreSQL-serveren.

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"

Denne kommando opretter en lille PostgreSQL-server, der bruger de variabler, du oprettede tidligere.

Konfigurer Quarkus for at få adgang til PostgreSQL-databasen

Du skal nu oprette forbindelse mellem Quarkus-programmet og PostgreSQL-databasen. Det gør du ved først at hente forbindelsesstrengen til databasen:

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"

Bemærk den forbindelsesstreng, der returneres.

Seddel

Microsoft anbefaler, at du bruger det mest sikre godkendelsesflow, der er tilgængeligt. Det godkendelsesflow, der er beskrevet i denne procedure, f.eks. for databaser, cachelagre, beskeder eller AI-tjenester, kræver en høj grad af tillid til programmet og medfører risici, der ikke findes i andre flow. Brug kun dette flow, når mere sikre indstillinger, f.eks. administrerede identiteter for adgangskodeløse eller nøgleløse forbindelser, ikke er levedygtige. I forbindelse med lokale computerhandlinger skal du foretrække brugeridentiteter for adgangskodeløse eller nøgleløse forbindelser.

Konfigurer Quarkus-programmet for at oprette forbindelse til PostgreSQL-databasen

Opdater application.properties-filen i mappen src/main/resources for projektet for at konfigurere forbindelsesstrengen til PostgreSQL-databasen. Det gør du ved at angive egenskaben quarkus.datasource.jdbc.url til den tidligere outputværdi $POSTGRES_CONNECTION_STRING_SSL værdi. Den &ssl=true&sslmode=require del af forbindelsesstrengen tvinger driveren til at bruge SSL, som er et krav til Azure Database for PostgreSQL.

quarkus.hibernate-orm.database.generation=update
quarkus.datasource.jdbc.url=<the POSTGRES_CONNECTION_STRING_SSL value>

Kør Quarkus-programmet lokalt for at teste fjerndatabaseforbindelsen

Brug denne kommando til at køre programmet lokalt:

./mvnw clean quarkus:dev    # On Mac or Linux
mvnw.cmd clean quarkus:dev  # On Windows

Når Quarkus kører, skal du oprette et par gørepunkter ved hjælp af følgende cURL-kommandoer i et separat terminalvindue:

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

Kontrollér derefter, at opgaverne er i databasen, ved at få adgang til det GET-slutpunkt, der er defineret i appen to-do:

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

Du bør kunne se følgende output:

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

Hvis du kan se dette output, har du kørt Quarkus-programmet og oprettet forbindelse til den eksterne PostgreSQL-database.