Migrer le service de configuration d’application vers Config Server pour Spring dans Azure Container Apps

Remarque

Les abonnements Basic, Standard et Enterprise sont entrés dans une période de retraite le 17 mars 2025. Pour plus d’informations, consultez l’annonce de mise hors service d’Azure Spring Apps.

Cet article s’applique à : ❎ Essentiel/Standard ✅ Entreprise

Cet article explique comment migrer le service de configuration d’application (SCA) et Config Server vers Config Server pour Spring dans Azure Container Apps. Azure Container Apps gère Config Server pour Spring, qui possède des fonctions similaires au SCA ou à Spring Cloud Config Server dans Azure Spring Apps.

Prérequis

  • Une instance de plan Entreprise Azure Spring Apps, dans laquelle le service de configuration d’application est activé.
  • Un environnement Azure Container Apps pour Config Server et une instance Azure Container Apps.

Approvisionner Config Server

Les étapes suivantes vous montrent comment provisionner un Config Server pour Spring dans vos Azure Container Apps :

  1. Accédez à votre environnement Azure Container Apps dans le Portail Microsoft Azure.

  2. Dans le menu, sélectionnez Services>Services.

  3. Ouvrez la liste déroulante Configurer, puis sélectionnez Composant Java.

  4. Dans le panneau Configurer le composant Java, entrez les valeurs suivantes :

    Propriété Valeur
    Type de composant Java Sélectionnez Config Server pour Spring.
    Nom du composant Java Entrez configserver.
  5. Dans la section Référentiels Git, sélectionnez Ajouter, puis migrez les valeurs du service de configuration d’application vers ici, comme indiqué dans le tableau suivant. Choisissez un référentiel comme référentiel par défaut de Config Server pour Spring.

    Propriété Valeur
    Type Sélectionnez PAR DÉFAUT.
    URI Entrez la valeur de l’URI du référentiel.
    Nom de la branche Entrez la valeur de l’étiquette du référentiel.
    Chemins de recherche Entrez la valeur du chemin de recherche du référentiel.
    Authentification Sélectionnez le type d’authentification du référentiel et saisissez les informations correspondantes.

    Laissez le reste des champs avec les valeurs par défaut, puis sélectionnez Ajouter.

  6. Si vous disposez de plusieurs référentiels, sélectionnez Ajouter pour migrer d’autres référentiels. Pour Type, sélectionnez Autre, puis migrez les autres propriétés comme indiqué à l’étape précédente et dans le tableau suivant :

    Propriété Valeur
    Type Sélectionnez PAR DÉFAUT.
    Modèle Saisissez la valeur des Modèles pour le référentiel au format {application} ou {application}/{profile}.
  7. Dans la section Liaison, ouvrez la liste déroulante pour sélectionner les applications à lier à Config Server pour Spring.

  8. Cliquez sur Suivant.

  9. Pour configurer Config Server, dans l’onglet Révision, sélectionnez Configurer, puis suivez les instructions de la section de configuration.

Une fois la création réussie, vous pouvez voir que l’état d’approvisionnement de Config Server pour Spring est Réussi.

Allocation des ressources

L’allocation des ressources du conteneur pour le Config Server managé dans Azure Container Apps est fixée sur les valeurs suivantes :

  • CPU : 0,5 vCPU
  • Memory : 1 Gi

Pour configurer le nombre d’instances de Config Server pour Spring, vous devez mettre à jour les paramètres --min-replicas et --max-replicas avec la même valeur. Cette configuration garantit que le nombre d’instances reste fixe. Actuellement, le système ne prend pas en charge les configurations de mise à l’échelle automatique pour la mise à l’échelle dynamique.

Configurer Config Server

Sélectionnez un référentiel Git du service de configuration d’application (SCA) comme référentiel par défaut dans Config Server et d’autres référentiels en tant que référentiels supplémentaires.

Le tableau suivant fournit un mappage entre les propriétés dans le SCA et les configurations correspondantes dans Config Server :

Nom de propriété dans le SCA CONFIGURATION_KEY CONFIGURATION_VALUE
name Vous n’avez pas besoin de mapper cette valeur vers Config Server.
pattern Vous n’avez pas besoin de mapper cette valeur vers Config Server.
uri spring.cloud.config.server.git.uri
spring.cloud.config.server.git.repos.{repoName}.uri
L’URI du référentiel distant.
search path spring.cloud.config.server.git.search-paths
spring.cloud.config.server.git.repos.{repoName}.search-paths
Les chemins de recherche à utiliser dans la copie de travail locale. Par défaut, recherche uniquement la racine.
label spring.cloud.config.server.git.default-label
spring.cloud.config.server.git.repos.{repoName}.default-label
L’étiquette utilisée pour Git.
username spring.cloud.config.server.git.username
spring.cloud.config.server.git.repos.{repoName}.username
Le nom d’utilisateur pour l’authentification avec le référentiel distant si le type d’authentification est HTTP Basic.
password spring.cloud.config.server.git.password
spring.cloud.config.server.git.repos.{repoName}.password
Le mot de passe pour l’authentification avec le référentiel distant si le type d’authentification est HTTP Basic.
private key spring.cloud.config.server.git.private-key
spring.cloud.config.server.git.repos.{repoName}.private-key
Clé privée SSH valide si le type d’authentification est SSH.
host key spring.cloud.config.server.git.host-key
spring.cloud.config.server.git.repos.{repoName}.host-key
Clé d’hôte SSH valide si le type d’authentification est SSH. Doit être défini si host-key-algorithm est également défini.
host key algorithm spring.cloud.config.server.git.host-key-algorithm
spring.cloud.config.server.git.repos.{repoName}.host-key-algorithm
Une des options parmi ssh-dss, ssh-rsa, ssh-ed25519, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ou ecdsa-sha2-nistp521 si le type d’authentification est SSH. Doit être défini si host-key est également défini.

Pour plus de propriétés de Config Server, consultez la section Options de configuration de Se connecter à un Config Server managé pour Spring dans Azure Container Apps.

Prenons l’exemple de la configuration suivante dans le SCA :

"settings": {
    "gitProperty": {
        "repositories": [
            {
                "name": "r1",
                "patterns": [
                    "application"
                ],
                "label": "master",
                "uri": "https://github.com/Azure-Samples/spring-petclinic-microservices-config"
            },
            {
                "name": "r2",
                "patterns": [
                    "customers-service"
                ],
                "label": "master",
                "uri": "https://github.com/Azure-Samples/spring-petclinic-microservices-config"
            },
            {
                "name": "r3",
                "patterns": [
                    "payment"
                ],
                "label": "main",
                "uri": "https://github.com/Azure-Samples/acme-fitness-store-config"
            }
        ]
    }
}

Avec cette configuration du SCA, vous pouvez migrer vers Config Server pour Spring avec les configurations suivantes :

spring.cloud.config.server.git.uri=https://github.com/Azure-Samples/spring-petclinic-microservices-config
spring.cloud.config.server.git.default-label=master
spring.cloud.config.server.git.repos.repo1.uri=https://github.com/Azure-Samples/acme-fitness-store-config
spring.cloud.config.server.git.repos.repo1.default-label=main

Modifier la configuration de l’application

Après avoir approvisionné et configuré le Config Server pour Spring, procédez comme suit pour ajuster la configuration de votre application afin de l’utiliser efficacement :

  1. Mettez les dépendances Spring Boot à jour. Ajoutez les dépendances de la configuration Spring Cloud suivantes à votre pom.xml pour Maven ou build.gradle pour Gradle.

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    
  2. Configurez un profil. Le profil du SCA est fourni à titre de modèles dans un déploiement Azure Spring Apps, tandis que dans Config Server, le profil est configuré dans le code source de l’application.

    Vérifiez que votre application utilise les profils appropriés – dev, prod, et ainsi de suite – de sorte que le Config Server puisse servir pour des configurations propres à l’environnement.

    Mettez à jour le fichier bootstrap.yml ou application.yml dans votre application avec les propriétés de configuration appropriées afin qu’il pointe vers le Config Server, comme illustré dans l’exemple suivant :

    spring:
      cloud:
        config:
          profile: dev
    
  3. Configurez un intervalle d’actualisation. Si vous définissez un intervalle d’actualisation dans le SCA, vous pouvez également spécifier la valeur correspondante dans la configuration spring.cloud.config.server.git.refreshRate de Config Server pour Spring. Cette valeur détermine la fréquence à laquelle Config Server pour Spring récupère les données de configuration mises à jour à partir du back-end Git.

    Pour charger les modifications de propriété dans le code de votre application, procédez comme suit :

    1. Inscrivez une tâche planifiée pour actualiser le contexte dans un intervalle donné.
    2. Activez autorefresh et définissez l’intervalle d’actualisation approprié dans le fichier application.yml.
    3. Ajoutez @RefreshScope à votre code.

    Pour plus d’informations, consultez Actualiser Config Server.

Déployer l’application sur Azure Container Apps

Après avoir testé l’application localement, vous pouvez déployer la nouvelle image sur l’application Azure Container Apps.

Procédez comme suit pour déployer :

  1. Accédez à votre application Azure Container Apps dans le Portail Microsoft Azure.
  2. Dans le menu, sélectionnez Application>Conteneurs.
  3. Sélectionnez Modifier et déployer pour ouvrir la page Créer et déployer une nouvelle révision.
  4. Dans la section Image du conteneur, sélectionnez l’image, puis sélectionnez Modifier.
  5. Dans la section Modifier un conteneur, sous l’onglet Propriétés, choisissez la nouvelle image de l’application.
  6. Dans l’onglet Variables d’environnement, pour Nom, spécifiez spring.application.name. Ensuite, pour Source, choisissez Saisie manuelle et spécifiez le nom du fichier de configuration dans lequel l’application consomme la configuration.
  7. Sélectionnez Enregistrer pour déployer la nouvelle révision.

Résolution des problèmes

Vous pouvez afficher les journaux du Config Server managé pour Spring dans Azure Container Apps à l’aide de Log Analytics. Utiliser les étapes suivantes :

  1. Accédez à votre environnement Azure Container Apps dans le Portail Microsoft Azure.

  2. Sélectionnez le menu Surveillance>Journaux.

  3. Pour afficher les journaux, entrez une requête dans l’éditeur de requêtes pour la table ContainerAppSystemLogs_CL, comme indiqué dans l’exemple suivant :

    ContainerAppSystemLogs_CL
    | where ComponentType_s == "SpringCloudConfig"
    | project Time=TimeGenerated, ComponentName=ComponentName_s, Message=Log_s
    | take 100
    

Pour plus d’informations sur l’interrogation des journaux, consultez Observabilité des composants Java managés dans Azure Container Apps.

Limitation connue

La migration du SCA vers Config Server pour Spring s’applique uniquement aux applications Java. Cela est dû au fait que le SCA gère la configuration à l’aide de l’option ConfigMap native Kubernetes. Cette méthode permet des mises à jour de configuration dynamiques dans les environnements Kubernetes, ce qui la rend polyvalente pour différentes applications avec plusieurs langages de programmation. Spring Cloud Config Server est principalement conçu pour les applications Java, qui utilise des fonctionnalités Spring Framework. Il prend donc uniquement en charge la gestion de la configuration pour Java.