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 en utilisant 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 que cette valeur reste unique, nous vous recommandons d’utiliser AZ_PROJECT_<your initials>.
AZ_RESOURCE_GROUP Nom du groupe de ressources qui détient les ressources.
AZ_LOCATION Région Azure. Nous vous recommandons d’utiliser une région proche de là où vous vous trouvez. Pour obtenir la liste complète des régions disponibles, entrez az account list-locations à une invite de commandes.
AZ_CONTAINERAPP Nom de l’instance Azure Container Apps qui détient les conteneurs.
AZ_CONTAINERAPP_ENV Nom de l’environnement Azure Container Apps.
AZ_POSTGRES_SERVER_NAME Nom de votre serveur PostgreSQL. Les caractères non alphanumériques ne sont pas autorisés : -, _, !, $, #, %. Le nom doit être unique dans tout 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 de votre serveur de base de données PostgreSQL.
AZ_POSTGRES_PASSWORD Mot de passe par défaut de votre serveur de base de données PostgreSQL. Utilisez un mot de passe sécurisé.

Remarque

Vous pouvez nommer vos ressources Azure comme 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 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 tout au long du 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 Azure Database pour 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.

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&sslmode=require"

echo "POSTGRES_CONNECTION_STRING_SSL=$POSTGRES_CONNECTION_STRING_SSL"

Notez la chaîne de connexion retournée.

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 générée précédente. La partie &ssl=true&sslmode=require de la chaîne de connexion force le pilote à utiliser le protocole SSL, qui est une condition requise pour Azure Database pour PostgreSQL.

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

Exécuter 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

Quand Quarkus est exécuté, créez quelques tâches en utilisant les 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 qui est défini dans l’application de tâches :

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

Vous devez normalement voir la sortie suivante :

[
   {
      "description" : "Take Quarkus MS Learn",
      "details" : "Take the MS Learn on deploying Quarkus to Azure Container Apps",
      "done" : true,
      "id" : 1
   },
   {
      "description" : "Take Azure Container Apps MS Learn",
      "details" : "Take the ACA Learn module",
      "done" : false,
      "id" : 2
   }
]

Si vous voyez cette sortie, vous avez réussi à exécuter l’application Quarkus et à vous connecter à la base de données PostgreSQL distante.