Tutoriel : se connecter à une instance Config Server managée pour Spring dans Azure Container Apps

Config Server pour Spring fournit un emplacement centralisé qui rend les données de configuration disponibles pour plusieurs applications. Dans cet article, vous apprenez à connecter une application hébergée dans Azure Container Apps à une instance Java Config Server pour Spring.

Le composant Java Config Server pour Spring utilise un référentiel GitHub comme source des paramètres de configuration. Les valeurs de configuration sont mises à la disposition de votre application conteneur via une liaison entre le composant et votre application conteneur. À mesure que les valeurs changent dans le serveur de configuration, elles circulent automatiquement vers votre application, sans que vous deviez la recompiler ou la redéployer.

Ce didacticiel vous apprend à effectuer les opérations suivantes :

  • Créer un composant Java Config Server pour Spring
  • Lier le Config Server pour Spring à votre application de conteneur
  • Observer les valeurs de configuration avant et après avoir connecté le serveur de configuration à votre application
  • Chiffrer et déchiffrer les valeurs de configuration avec une clé symétrique

Important

Ce tutoriel utilise des services qui peuvent affecter votre facture Azure. Si vous décidez de suivre les étapes pas à pas, veillez à supprimer les ressources présentées dans cet article pour éviter toute facturation inattendue.

Prérequis

Pour mener à bien ce projet, vous avez besoin des éléments suivants :

Condition requise Instructions
Compte Azure Un abonnement actif est requis. Si vous n’en avez pas, vous pouvez en créer un gratuitement.
Azure CLI Installez Azure CLI.

À propos de l’installation

Pendant l’exécution dans Config Server pour Spring dans Azure Container Apps, tenez compte des détails suivants :

Article Explication
Portée Le Config Server pour Spring s’exécute dans le même environnement que l’application de conteneur connectée.
Mise à l'échelle Pour maintenir une source unique de vérité, le Config Server pour Spring ne se met pas à l’échelle. Les propriétés de mise à l’échelle minReplicas et maxReplicas sont toutes deux définies sur 1.
Ressources L’allocation des ressources de conteneur pour le Config Server pour Spring est fixe, le nombre de cœurs de CPU est de 0,5 et la taille de mémoire est 1Gi.
Tarification La facturation Config Server pour Spring est soumise à la tarification basée sur la consommation. Les ressources consommées par les composants Java managés sont facturées aux taux actif/inactif. Vous pouvez supprimer les composants qui ne sont plus utilisés pour arrêter la facturation.
Binding L’application de conteneur se connecte à un Config Server pour Spring via une liaison. La liaison injecte les configurations dans les variables d’environnement de l’application conteneur. Une fois qu’une liaison est établie, l’application conteneur peut lire les valeurs de configuration depuis les variables d’environnement.

Programme d’installation

Avant de commencer à utiliser une instance Config Server pour Spring, vous devez d’abord créer les ressources nécessaires.

Exécutez les commandes suivantes pour créer votre groupe de ressources et votre environnement Container Apps.

  1. Créez des variables pour prendre en charge la configuration de votre application. Ces valeurs sont fournies dans le cadre de cette leçon.

    export LOCATION=eastus
    export RESOURCE_GROUP=my-services-resource-group
    export ENVIRONMENT=my-environment
    export JAVA_COMPONENT_NAME=configserver
    export APP_NAME=my-config-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-config-client:latest"
    export URI="https://github.com/Azure-Samples/azure-spring-cloud-config-java-aca.git"
    
    Variable Description
    LOCATION Emplacement de la région Azure où vous créez votre application conteneur et votre composant Java.
    ENVIRONMENT Nom de l’environnement Azure Container Apps pour votre application de démonstration.
    RESOURCE_GROUP Nom du groupe de ressources Azure de votre application de démonstration.
    JAVA_COMPONENT_NAME Nom du composant Java créé pour votre application conteneur. Dans ce cas, vous créez un composant Java Config Server pour Spring.
    IMAGE Image conteneur utilisée dans votre application conteneur.
    URI Vous pouvez remplacer l’URI par l’URL de votre référentiel Git, s’il est privé, et ajouter les configurations d’authentification associées comme spring.cloud.config.server.git.username et spring.cloud.config.server.git.password.
  2. Se connecter à Azure avec Azure CLI.

    az login
    
  3. Créez un groupe de ressources.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Créez votre environnement d’applications conteneur.

    az containerapp env create \
      --name $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION
    

Cet environnement est utilisé pour héberger à la fois le composant Java Config Server pour Spring et votre application de conteneur.

Créer le composant Java Config Server pour Spring

Maintenant que vous disposez d’un environnement Container Apps, vous pouvez créer votre application de conteneur et la lier à un composant Java Config Server pour Spring. Lorsque vous liez votre application conteneur, les valeurs de configuration se synchronisent automatiquement depuis le composant Config Server vers votre application.

  1. Créez le composant Java Config Server pour Spring.

    az containerapp env java-component config-server-for-spring create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $JAVA_COMPONENT_NAME \
      --min-replicas 1 \
      --max-replicas 1 \
      --configuration spring.cloud.config.server.git.uri=$URI
    
  2. Mettez à jour le composant Java Config Server pour Spring.

    az containerapp env java-component config-server-for-spring update \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $JAVA_COMPONENT_NAME \
      --min-replicas 2 \
      --max-replicas 2 \
      --configuration spring.cloud.config.server.git.uri=$URI spring.cloud.config.server.git.refresh-rate=60
    

    Ici, vous indiquez au composant où trouver le référentiel qui contient vos informations de configuration via la propriété uri. La propriété refresh-rate indique à Container Apps la fréquence à laquelle rechercher les modifications dans votre référentiel Git.

Lier votre application de conteneur au composant Java Config Server pour Spring

  1. Créer l’application conteneur qui consomme les données de configuration.

    az containerapp create \
      --name $APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --environment $ENVIRONMENT \
      --image $IMAGE \
      --min-replicas 1 \
      --max-replicas 1 \
      --ingress external \
      --target-port 8080 \
      --query properties.configuration.ingress.fqdn
    

    Cette commande retourne l’URL de votre application conteneur qui consomme les données de configuration. Copiez l’URL dans un éditeur de texte afin de pouvoir l’utiliser dans une prochaine étape.

    Si vous consultez votre application dans un navigateur, la valeur connectTimeout retournée est la valeur par défaut de 0.

  2. Liez au Config Server pour Spring.

    Maintenant que l’application conteneur et le Config Server sont créés, vous les liez avec la commande update à votre application conteneur.

    az containerapp update \
      --name $APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --bind $JAVA_COMPONENT_NAME
    

    Le paramètre --bind $JAVA_COMPONENT_NAME crée la liaison entre votre application conteneur et le composant de configuration.

Une fois l’application conteneur et le composant Config Server liés, les modifications de configuration sont automatiquement synchronisées vers l’application conteneur.

Si vous vous rendez à nouveau sur l’URL de l’application, la valeur connectTimeout est maintenant 10000. Cette valeur provient du jeu de référentiels Git dans la variable $URI définie à l’origine comme source du composant de configuration. Plus précisément, cette valeur est extraite de la propriété connectionTimeout dans le fichier application.yml du référentiel.

La demande de liaison injecte le paramètre de configuration dans l’application en tant que variables d’environnement. Ces valeurs sont désormais disponibles pour être utilisées par le code de l’application lors de l’extraction des paramètres de configuration depuis le serveur de configuration.

Dans ce cas, les variables d’environnement suivantes sont disponibles pour l’application :

SPRING_CLOUD_CONFIG_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CLOUD_CONFIG_COMPONENT_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CONFIG_IMPORT=optional:configserver:$SPRING_CLOUD_CONFIG_URI

Si vous souhaitez personnaliser votre propre SPRING_CONFIG_IMPORT, vous pouvez faire référence à la variable d’environnement SPRING_CLOUD_CONFIG_COMPONENT_URI, par exemple, vous pouvez substituer des arguments de ligne de commande, comme Java -Dspring.config.import=optional:configserver:${SPRING_CLOUD_CONFIG_COMPONENT_URI}?fail-fast=true.

Vous pouvez également supprimer une liaison de votre application.

(Facultatif) Dissocier votre application conteneur à partir du composant Java Config Server pour Spring

Pour supprimer une liaison d’une application conteneur, utilisez l’option --unbind.

az containerapp update \
  --name $APP_NAME \
  --unbind $JAVA_COMPONENT_NAME \
  --resource-group $RESOURCE_GROUP

Si vous vous rendez à nouveau sur l’URL de l’application, la valeur de connectTimeout revient à 0.

Nettoyer les ressources

Les ressources créées dans ce tutoriel ont un effet sur votre facture Azure. Si vous n’allez pas utiliser ces services à long terme, exécutez la commande suivante pour supprimer tout ce qui a été créé dans ce didacticiel.

az group delete \
  --resource-group $RESOURCE_GROUP

Étapes suivantes