Exercice – Configurer Azure Container Apps
Dans cette unité, vous créez un groupe de ressources Azure qui contient les ressources de l’application. Vous configurez ensuite la base de données PostgreSQL à l’aide d’Azure CLI. Enfin, vous configurez l’application Quarkus pour accéder à la base de données PostgreSQL distante. Utilisez un terminal de votre choix pour exécuter les commandes.
Préparer l’environnement de travail
Vous devez configurer certaines variables d’environnement. Voici quelques notes sur les variables que vous allez créer :
| Variable | Description |
|---|---|
AZ_PROJECT |
Nom du projet. Pour conserver cette valeur unique, nous vous recommandons d’utiliser AZ_PROJECT_<your initials>. |
AZ_RESOURCE_GROUP |
Nom du groupe de ressources qui contient les ressources. |
AZ_LOCATION |
Région Azure. Nous vous recommandons d’utiliser une région proche de l’endroit où vous vivez. Pour obtenir la liste des régions disponibles, entrez az account list-locations à une invite de commandes. |
AZ_CONTAINERAPP |
Nom de l’instance Azure Container Apps qui contient les conteneurs. |
AZ_CONTAINERAPP_ENV |
Nom de l’environnement Azure Container Apps. |
AZ_POSTGRES_SERVER_NAME |
Nom de votre serveur PostgreSQL. Les caractères nonphanumériques ne sont pas autorisés : -, _, !, $, #, %. Le nom doit être unique dans Azure. Veillez à utiliser un identificateur unique. |
AZ_POSTGRES_DB_NAME |
Nom de la base de données PostgreSQL. Le nom par défaut de la base de données PostgreSQL est postgres. |
AZ_POSTGRES_USERNAME |
Nom d’utilisateur administrateur par défaut pour votre serveur de base de données PostgreSQL. |
AZ_POSTGRES_PASSWORD |
Mot de passe par défaut pour votre serveur de base de données PostgreSQL. Utilisez un mot de passe sécurisé. |
Remarque
Vous pouvez nommer vos ressources Azure de quelque manière que vous le souhaitez, mais nous vous recommandons de consulter exemples d’abréviations pour les ressources Azure. Cet article fournit des exemples d’abréviations pour de nombreuses ressources Azure (par exemple, rg pour les groupes de ressources et les ca pour les applications conteneur).
Utilisez les commandes suivantes pour configurer les variables. Veillez à modifier les valeurs comme décrit dans le tableau précédent.
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>}"
Ces variables d’environnement sont utilisées dans le reste de ce module.
Créez ensuite un groupe de ressources :
az group create \
--name $AZ_RESOURCE_GROUP \
--location $AZ_LOCATION
Créer une instance d’Azure Database pour PostgreSQL
Vous allez maintenant créer un serveur PostgreSQL managé. Exécutez la commande suivante pour créer une petite instance d’Azure Database pour PostgreSQL :
Si vous n’avez jamais créé de serveur PostgreSQL auparavant, vous devez inscrire le fournisseur. Pour inscrire le fournisseur PostgreSQL, exécutez la commande suivante :
az provider register --namespace Microsoft.DBforPostgreSQL
Ensuite, créez le serveur 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"
Cette commande crée un petit serveur PostgreSQL qui utilise les variables que vous avez configurées précédemment.
Configurer Quarkus pour accéder à la base de données PostgreSQL
Vous allez maintenant connecter l’application Quarkus à la base de données PostgreSQL. Pour ce faire, vous devez d’abord obtenir la chaîne de connexion de la base de données :
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"
Notez la chaîne de connexion retournée.
Remarque
Microsoft recommande d’utiliser le flux d’authentification le plus sécurisé disponible. Le flux d’authentification décrit dans cette procédure, par exemple pour les bases de données, les caches, la messagerie ou les services IA, nécessite un degré élevé de confiance dans l’application et comporte des risques non présents dans d’autres flux. Utilisez ce flux uniquement lorsque des options plus sécurisées, telles que les identités managées pour les connexions sans mot de passe ou sans clé, ne sont pas viables. Pour les opérations d’ordinateur local, préférez les identités utilisateur pour les connexions sans mot de passe ou sans clé.
Configurer l’application Quarkus pour se connecter à la base de données PostgreSQL
Mettez à jour le fichier application.properties dans le dossier src/main/resources du projet pour configurer la chaîne de connexion à la base de données PostgreSQL. Pour ce faire, définissez la propriété quarkus.datasource.jdbc.url sur la valeur $POSTGRES_CONNECTION_STRING_SSL de sortie précédente. La partie &ssl=true&sslmode=require de la chaîne de connexion force le pilote à utiliser SSL, une exigence pour Azure Database pour PostgreSQL.
quarkus.hibernate-orm.database.generation=update
quarkus.datasource.jdbc.url=<the POSTGRES_CONNECTION_STRING_SSL value>
Exécutez l'application Quarkus localement pour tester la connexion à la base de données distante.
Utilisez cette commande pour exécuter l’application localement :
./mvnw clean quarkus:dev # On Mac or Linux
mvnw.cmd clean quarkus:dev # On Windows
Lorsque Quarkus tourne, créez quelques éléments à faire à l’aide des commandes cURL suivantes dans une fenêtre de terminal distincte :
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
Ensuite, vérifiez que les tâches se trouvent dans la base de données en accédant au point de terminaison GET défini dans l’application to-do :
curl http://127.0.0.1:8080/api/todos
La sortie suivante doit s’afficher :
[
{
"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"
}
]
Si vous voyez cette sortie, vous avez correctement exécuté l’application Quarkus et vous êtes connecté à la base de données PostgreSQL distante.