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.
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
etspring.cloud.config.server.git.password
.Se connecter à Azure avec Azure CLI.
az login
Créez un groupe de ressources.
az group create --name $RESOURCE_GROUP --location $LOCATION
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.
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
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
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 de0
.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