Ćwiczenie — konfigurowanie usługi Azure Container Apps
W tej lekcji utworzysz grupę zasobów platformy Azure zawierającą zasoby dla aplikacji. Następnie skonfigurujesz bazę danych PostgreSQL przy użyciu interfejsu wiersza polecenia platformy Azure. Na koniec skonfigurujesz aplikację Quarkus w celu uzyskania dostępu do zdalnej bazy danych PostgreSQL. Użyj wybranego terminalu, aby uruchomić polecenia.
Przygotowywanie środowiska roboczego
Należy skonfigurować niektóre zmienne środowiskowe. Oto kilka uwag dotyczących zmiennych, które utworzysz:
| Zmienna | Opis |
|---|---|
AZ_PROJECT |
Nazwa projektu. Aby zachować tę wartość unikatową, zalecamy użycie AZ_PROJECT_<your initials>. |
AZ_RESOURCE_GROUP |
Nazwa grupy zasobów, która zawiera zasoby. |
AZ_LOCATION |
Region świadczenia usługi Azure. Zalecamy użycie regionu, który znajduje się blisko miejsca zamieszkania. Aby wyświetlić listę dostępnych regionów, wprowadź az account list-locations w wierszu polecenia. |
AZ_CONTAINERAPP |
Nazwa wystąpienia usługi Azure Container Apps, które przechowuje kontenery. |
AZ_CONTAINERAPP_ENV |
Nazwa środowiska usługi Azure Container Apps. |
AZ_POSTGRES_SERVER_NAME |
Nazwa serwera PostgreSQL. Znaki nieliczbowe nie są dozwolone: -, _, !, $, #, %. Nazwa powinna być unikatowa na platformie Azure. Pamiętaj, aby użyć unikatowego identyfikatora. |
AZ_POSTGRES_DB_NAME |
Nazwa bazy danych PostgreSQL. Domyślną nazwą bazy danych PostgreSQL jest postgres. |
AZ_POSTGRES_USERNAME |
Domyślna nazwa użytkownika administratora serwera bazy danych PostgreSQL. |
AZ_POSTGRES_PASSWORD |
Domyślne hasło serwera bazy danych PostgreSQL. Użyj bezpiecznego hasła. |
Nota
Zasoby Azure można nazwać w dowolny sposób, ale zalecamy przejrzenie przykładów skrótów dla zasobów Azure. Ten artykuł zawiera przykładowe skróty dla wielu zasobów platformy Azure (na przykład rg dla grup zasobów i ca dla aplikacji kontenerów).
Użyj następujących poleceń, aby skonfigurować zmienne. Pamiętaj, aby zmodyfikować wartości zgodnie z opisem w poprzedniej tabeli.
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>}"
Te zmienne środowiskowe są używane w pozostałej części tego modułu.
Następnie utwórz grupę zasobów:
az group create \
--name $AZ_RESOURCE_GROUP \
--location $AZ_LOCATION
Utwórz instancję Azure Database for PostgreSQL
Teraz utworzysz zarządzany serwer PostgreSQL. Uruchom następujące polecenie, aby utworzyć małe wystąpienie usługi Azure Database for PostgreSQL:
Jeśli wcześniej nie utworzono serwera PostgreSQL, musisz zarejestrować dostawcę. Aby zarejestrować dostawcę PostgreSQL, uruchom następujące polecenie:
az provider register --namespace Microsoft.DBforPostgreSQL
Następnie utwórz serwer 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"
To polecenie tworzy mały serwer PostgreSQL, który używa skonfigurowanych wcześniej zmiennych.
Konfigurowanie aplikacji Quarkus w celu uzyskania dostępu do bazy danych PostgreSQL
Teraz połączysz aplikację Quarkus z bazą danych PostgreSQL. W tym celu należy najpierw uzyskać parametry połączenia dla bazy danych:
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"
Zwróć uwagę na zwrócony ciąg połączenia.
Nota
Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Przepływ uwierzytelniania opisany w tej procedurze, taki jak bazy danych, pamięci podręczne, komunikaty lub usługi sztucznej inteligencji, wymaga wysokiego stopnia zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Użyj tego przepływu tylko wtedy, gdy bardziej bezpieczne opcje, takie jak tożsamości zarządzane dla połączeń bez hasła lub bez kluczy, nie są opłacalne. W przypadku operacji maszyny lokalnej preferuj tożsamości użytkowników dla połączeń bez hasła lub bez klucza.
Konfigurowanie aplikacji Quarkus w celu nawiązania połączenia z bazą danych PostgreSQL
Zaktualizuj plik application.properties w folderze src/main/resources projektu, aby skonfigurować parametry połączenia z bazą danych PostgreSQL. W tym celu ustaw właściwość quarkus.datasource.jdbc.url na wartość wcześniej wyprowadzonego $POSTGRES_CONNECTION_STRING_SSL. Część &ssl=true&sslmode=require parametrów połączenia wymusza użycie protokołu SSL przez sterownik— wymaganie dla usługi Azure Database for PostgreSQL.
quarkus.hibernate-orm.database.generation=update
quarkus.datasource.jdbc.url=<the POSTGRES_CONNECTION_STRING_SSL value>
Uruchamianie aplikacji Quarkus lokalnie w celu przetestowania połączenia zdalnej bazy danych
Użyj tego polecenia, aby uruchomić aplikację lokalnie:
./mvnw clean quarkus:dev # On Mac or Linux
mvnw.cmd clean quarkus:dev # On Windows
Po uruchomieniu aplikacji Quarkus utwórz kilka zadań do wykonania przy użyciu następujących poleceń cURL w osobnym oknie terminalu:
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
Następnie sprawdź, czy zadania do wykonania znajdują się w bazie danych, korzystając z punktu końcowego GET zdefiniowanego w aplikacji to-do:
curl http://127.0.0.1:8080/api/todos
Powinny zostać wyświetlone następujące dane wyjściowe:
[
{
"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"
}
]
Jeśli zobaczysz te dane wyjściowe, pomyślnie uruchomisz aplikację Quarkus i połączysz się z zdalną bazą danych PostgreSQL.