Exercice – Configurer Azure Container Apps

Effectué

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.