Cvičení – nastavení Azure Container Apps

Dokončeno

V této lekci vytvoříte skupinu prostředků Azure, která obsahuje prostředky pro aplikaci. Pak nastavíte databázi PostgreSQL pomocí Azure CLI. Nakonec nakonfigurujete aplikaci Quarkus pro přístup ke vzdálené databázi PostgreSQL. Ke spuštění příkazů použijte terminál podle vašeho výběru.

Příprava pracovního prostředí

Je potřeba nastavit některé proměnné prostředí. Tady je několik poznámek k proměnným, které vytvoříte:

Proměnná Popis
AZ_PROJECT Název projektu. Pokud chcete tuto hodnotu zachovat jedinečnou, doporučujeme použít AZ_PROJECT_<your initials>.
AZ_RESOURCE_GROUP Název skupiny prostředků, která obsahuje zdroje.
AZ_LOCATION Oblast Azure. Doporučujeme použít oblast, která je blízko místa, kde žijete. Seznam dostupných oblastí zobrazíte zadáním az account list-locations na příkazovém řádku.
AZ_CONTAINERAPP Název instance Azure Container Apps, která obsahuje kontejnery.
AZ_CONTAINERAPP_ENV Název prostředí Azure Container Apps.
AZ_POSTGRES_SERVER_NAME Název vašeho serveru PostgreSQL. Neosamocené znaky nejsou povoleny: -, _, !, $, #, %. Název by měl být jedinečný v rámci Azure. Nezapomeňte použít jedinečný identifikátor.
AZ_POSTGRES_DB_NAME Název databáze PostgreSQL. Výchozí název databáze PostgreSQL je postgres.
AZ_POSTGRES_USERNAME Výchozí uživatelské jméno správce pro váš databázový server PostgreSQL.
AZ_POSTGRES_PASSWORD Výchozí heslo pro váš databázový server PostgreSQL. Použijte zabezpečené heslo.

Poznámka

Prostředky Azure můžete pojmenovat libovolným způsobem, ale doporučujeme vám projít si příklady zkratek prostředků Azure. Tento článek obsahuje ukázkové zkratky pro mnoho prostředků Azure (například rg pro skupiny prostředků a ca pro kontejnerové aplikace).

K nastavení proměnných použijte následující příkazy. Nezapomeňte upravit hodnoty, jak je popsáno v předchozí tabulce.

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>}"

Tyto proměnné prostředí se používají ve zbytku tohoto modulu.

Dále vytvořte skupinu prostředků:

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

Vytvoření instance Azure Database for PostgreSQL

Teď vytvoříte spravovaný server PostgreSQL. Spuštěním následujícího příkazu vytvořte malou instanci Azure Database for PostgreSQL:

Pokud jste ještě nikdy nevytvořili Server PostgreSQL, musíte poskytovatele zaregistrovat. Pokud chcete zaregistrovat zprostředkovatele PostgreSQL, spusťte následující příkaz:

az provider register --namespace Microsoft.DBforPostgreSQL

Pak vytvořte Server 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"

Tento příkaz vytvoří malý server PostgreSQL, který používá proměnné, které jste nastavili dříve.

Konfigurace Quarkus pro přístup k databázi PostgreSQL

Teď připojíte aplikaci Quarkus k databázi PostgreSQL. Pokud to chcete udělat, musíte nejprve získat připojovací řetězec pro databázi:

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"

Poznamenejte si vrácený připojovací řetězec.

Poznámka

Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Tok ověřování popsaný v tomto postupu, například u databází, mezipamětí, zasílání zpráv nebo služeb AI, vyžaduje velmi vysoký stupeň důvěryhodnosti v aplikaci a nese rizika, která nejsou přítomna v jiných tocích. Tento tok používejte pouze v případě, že nejsou možné zabezpečit možnosti, jako jsou spravované identity pro připojení bez hesla nebo bez klíčů. V případě místních operací počítačů upřednostňujete identity uživatelů pro připojení bez hesla nebo bez klíčů.

Konfigurace aplikace Quarkus pro připojení k databázi PostgreSQL

Aktualizujte soubor application.properties ve složce src/main/resources projektu a nakonfigurujte připojovací řetězec do databáze PostgreSQL. Uděláte to tak, že vlastnost quarkus.datasource.jdbc.url nastavíte na dříve výstupní hodnotu $POSTGRES_CONNECTION_STRING_SSL. Část &ssl=true&sslmode=require připojovacího řetězce vynutí, aby ovladač používal protokol SSL, což je požadavek pro Azure Database for PostgreSQL.

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

Spusťte aplikaci Quarkus místně a otestujte připojení ke vzdálené databázi.

Pomocí tohoto příkazu spusťte aplikaci místně:

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

Když je quarkus spuštěný, vytvořte několik úkolů pomocí následujících příkazů cURL v samostatném okně terminálu:

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

Dále zkontrolujte, že jsou v databázi úkoly tak, že se připojíte k GET koncovému bodu, který je definován v aplikaci to-do.

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

Měl by se zobrazit následující výstup:

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

Pokud se zobrazí tento výstup, úspěšně jste spustili aplikaci Quarkus a připojili se ke vzdálené databázi PostgreSQL.