Partager via


Configurer un Spring Cloud Config Server managé dans Azure Spring Apps

Remarque

Azure Spring Apps est le nouveau nom du service Azure Spring Cloud. Bien que le service ait un nouveau nom, vous verrez l’ancien nom à divers endroits pendant un certain temps, car nous travaillons à mettre à jour les ressources telles que les captures d’écran, les vidéos et les diagrammes.

Cet article s’applique à : ✔️ Java ✔️ C#

Cet article s’applique à : ✔️ Consommation Standard et dédiée (préversion) ✔️ De base/Standard ✔️ Entreprise

Cet article explique comment configurer un serveur de configuration Spring Cloud managé dans Azure Spring Apps.

Un serveur de configuration Spring Cloud offre la prise en charge côté serveur et côté client d’une configuration externalisée dans un système distribué. L’instance Spring Cloud Config Server fournit un emplacement central pour gérer les propriétés externes pour les applications dans tous les environnements. Pour plus d’informations, consultez Spring Cloud Config.

Remarque

Pour utiliser le serveur de configuration dans la consommation standard et le plan dédié, vous devez d’abord l’activer. Pour plus d’informations, consultez Activer et désactiver Spring Cloud Config Server dans Azure Spring Apps.

Prérequis

  • Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Activer le serveur de configuration Spring Cloud

Vous pouvez activer Spring Cloud Config Server lorsque vous approvisionnez une instance de service de plan Azure Spring Apps Enterprise. Si vous disposez déjà d’une instance de plan Azure Spring Apps Enterprise, consultez la section Gérer Spring Cloud Config Server dans une section d’instance de plan Entreprise existante de cet article.

Vous pouvez activer Spring Cloud Config Server à l’aide du portail Azure ou d’Azure CLI.

Pour activer Spring Cloud Config Server, procédez comme suit :

  1. Ouvrez le portail Azure.

  2. Sous l’onglet Informations de base, sélectionnez Niveau Entreprise dans la section Tarification et spécifiez les informations requises. Sélectionnez ensuite Suivant : composants managés.

  3. Sous l’onglet Composants managés, sélectionnez Activer Spring Cloud Config Server (préversion).

    Capture d’écran du portail Azure montrant l’onglet Paramètres VMware Tanzu avec la case à cocher Activer Spring Cloud Config Server mise en surbrillance.

  4. Spécifiez d’autres paramètres, puis sélectionnez Vérifier et créer.

  5. Sous l’onglet Vérifier une création, vérifiez que Activer Spring Cloud Config Server (préversion) est défini sur Oui. Sélectionnez Créer pour créer l’instance de plan Entreprise.

Restrictions

Certaines restrictions s’appliquent quand vous utilisez le serveur de configuration avec un back-end Git. Les propriétés suivantes sont automatiquement injectées dans votre environnement d’application pour accéder à Config Server et à Service Discovery. Si vous configurez aussi ces propriétés dans les fichiers de votre serveur de configuration, vous vous exposez à des conflits et à un comportement inattendu.

  • eureka.client.service-url.defaultZone
  • eureka.client.tls.keystore
  • eureka.instance.preferIpAddress
  • eureka.instance.instance-id
  • server.port
  • spring.cloud.config.tls.keystore
  • spring.config.import
  • spring.application.name
  • spring.jmx.enabled
  • management.endpoints.jmx.exposure.include

Attention

Évitez de placer ces propriétés dans vos fichiers d’application Config Server.

Créer les fichiers de votre serveur de configuration

Azure Spring Apps prend en charge Azure DevOps Server, GitHub, GitLab et Bitbucket pour stocker vos fichiers Config Server. Quand votre dépôt est prêt, vous pouvez créer les fichiers de configuration et les stocker dedans.

Certaines propriétés configurables ne sont disponibles que pour certains types. Les sections suivantes décrivent les propriétés de chaque type de dépôt.

Remarque

Config Server prend master (sur Git) comme étiquette par défaut si vous n’en spécifiez aucune. Toutefois, GitHub a récemment modifié la branche par défaut master en main. Pour éviter l’échec du serveur de configuration Azure Spring Apps, veillez à prêter attention à l’étiquette par défaut lors de la configuration du serveur de configuration avec GitHub, en particulier pour les dépôts nouvellement créés.

L’utilisation d’un trait d’union (-) pour séparer les mots est la seule convention d’affectation de noms de propriété actuellement prise en charge. Par exemple, vous pouvez utiliser default-label mais pas defaultLabel.

Dépôt public

Lorsque vous utilisez un référentiel public, vos propriétés configurables sont plus limitées qu’avec un référentiel privé.

Le tableau suivant répertorie les propriétés configurables que vous pouvez utiliser pour configurer un dépôt Git public :

Propriété Requis Fonctionnalité
uri Oui URI du dépôt Git utilisé comme back-end Config Server. Doit commencer par http://, https://, git@ ou ssh://.
default-label Non Étiquette par défaut du dépôt Git. Doit être un nom de branche, un nom de balise ou un ID de validation dans le référentiel.
search-paths Non Tableau de chaînes utilisé pour effectuer une recherche dans les sous-répertoires du dépôt Git.

Dépôt privé avec authentification SSH

Le tableau suivant répertorie les propriétés configurables que vous pouvez utiliser pour configurer un dépôt Git privé avec SSH :

Propriété Requis Fonctionnalité
uri Oui URI du dépôt Git utilisé comme back-end Config Server. Doit commencer par http://, https://, git@ ou ssh://.
default-label Non Étiquette par défaut du dépôt Git. Doit être le nom de branche, le nom d’étiquette ou l’ID de commit du dépôt.
search-paths Non Tableau de chaînes utilisé pour effectuer une recherche dans les sous-répertoires du dépôt Git.
private-key Non Clé privée SSH utilisée pour accéder au dépôt Git. Obligatoire quand l’URI commence par git@ ou ssh://.
host-key Non Clé d’hôte du serveur de dépôt Git. Ne doit pas contenir le préfixe d’algorithme couvert par host-key-algorithm.
host-key-algorithm Non Algorithme de clé d’hôte. Doit être ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384ou ecdsa-sha2-nistp521. Obligatoire uniquement si host-key existe.
strict-host-key-checking Non Indicateur config Server qui indique s’il ne parvient pas à démarrer lors de l’utilisation du host-key privé. Doit correspondre à true (valeur par défaut) ou false.

Dépôt privé avec authentification de base

Le tableau suivant répertorie les propriétés configurables que vous pouvez utiliser pour configurer un référentiel Git privé avec l’authentification de base :

Propriété Requis Fonctionnalité
uri Oui URI du dépôt Git utilisé comme back-end Config Server. Doit commencer par http://, https://, git@ ou ssh://.
default-label Non Étiquette par défaut du dépôt Git. Doit être un nom de branche, un nom de balise ou un id de validation dans le référentiel.
search-paths Non Tableau de chaînes utilisé pour effectuer une recherche dans les sous-répertoires du dépôt Git.
username Non Nom d’utilisateur utilisé pour accéder au serveur de dépôt Git. Obligatoire quand le serveur de dépôt Git prend en charge l’authentification de base HTTP.
password Non Mot de passe ou jeton d’accès personnel utilisé pour accéder au serveur de dépôt Git. Obligatoire quand le serveur de dépôt Git prend en charge l’authentification de base HTTP.

Remarque

De nombreux serveurs de dépôt Git prennent en charge l’utilisation de jetons à la place de mots de passe pour l’authentification de base HTTP. Certains référentiels permettent aux jetons d’être conservés indéfiniment. Toutefois, certains serveurs de référentiel Git, notamment Azure DevOps Server, forcent les jetons à expirer en quelques heures. Les dépôts qui entraînent l’expiration des jetons ne doivent pas utiliser l’authentification par jeton avec Azure Spring Apps. Si vous utilisez un tel jeton, n’oubliez pas de le mettre à jour avant son expiration.

GitHub a supprimé la prise en charge de l’authentification par mot de passe. Vous devez donc utiliser un jeton d’accès personnel au lieu de l’authentification par mot de passe pour GitHub. Pour plus d’informations, consultez les exigences de l’authentification par jeton pour les opérations Git.

Autres dépôts Git

Le tableau suivant répertorie les propriétés configurables que vous pouvez utiliser pour configurer des référentiels Git avec un modèle :

Propriété Requis Fonctionnalité
repos Non Carte comprenant les paramètres d’un dépôt Git avec un nom donné.
repos."uri" Oui sur repos URI du dépôt Git utilisé comme back-end Config Server. Doit commencer par http://, https://, git@ ou ssh://.
repos."name" Oui sur repos Nom permettant d’identifier le référentiel ; par exemple, team-A ou team-B. Obligatoire uniquement si repos existe.
repos."pattern" Non Tableau de chaînes utilisé pour faire correspondre un nom d’application. Pour chaque modèle, utilisez le format {application}/{profile} avec des caractères génériques.
repos."default-label" Non Étiquette par défaut du dépôt Git. Doit être le nom de branche, le nom d’étiquette ou l’IOD de commit du dépôt.
repos."search-paths" Non Tableau de chaînes utilisé pour effectuer une recherche dans les sous-répertoires du dépôt Git.
repos."username" Non Nom d’utilisateur utilisé pour accéder au serveur de dépôt Git. Obligatoire quand le serveur de dépôt Git prend en charge l’authentification de base HTTP.
repos."password" Non Mot de passe ou jeton d’accès personnel utilisé pour accéder au serveur de dépôt Git. Obligatoire quand le serveur de dépôt Git prend en charge l’authentification de base HTTP.
repos."private-key" Non Clé privée SSH utilisée pour accéder au dépôt Git. Obligatoire quand l’URI commence par git@ ou ssh://.
repos."host-key" Non Clé d’hôte du serveur de dépôt Git. Ne doit pas contenir le préfixe d’algorithme couvert par host-key-algorithm.
repos."host-key-algorithm" Non Algorithme de clé d’hôte. Doit être ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384ou ecdsa-sha2-nistp521. Obligatoire uniquement si host-key existe.
repos."strict-host-key-checking" Non Indique si l’instance du serveur de configuration ne parvient pas à démarrer lors de l’utilisation du privé host-key. Doit correspondre à true (valeur par défaut) ou false.

Le tableau suivant présente quelques exemples de modèles pour la configuration de votre service avec un référentiel supplémentaire facultatif. Pour plus d’informations, consultez la section Référentiels supplémentaires de cet article et la section Critères de correspondance et plusieurs référentiels de Spring Cloud Config.

Modèles Description
test-config-server-app-0/* Le modèle et l’URI du dépôt correspondent à une application Spring Boot nommée test-config-server-app-0 avec n’importe quel profil.
test-config-server-app-1/dev Le modèle et l’URI du dépôt correspondent à une application Spring Boot nommée test-config-server-app-1 avec un profil dev.
test-config-server-app-2/prod Le modèle et l’URI du dépôt correspondent à une application Spring Boot nommée test-config-server-app-2 avec un profil prod.

Capture d’écran du portail Azure montrant la page Serveur de configuration avec la colonne Modèles de la table Référentiels supplémentaires mise en surbrillance.

Capture d’écran du portail Azure montrant la page Serveur de configuration avec la colonne Modèles de la table Référentiels supplémentaires mise en surbrillance.

Configurer un référentiel Git sur le serveur de configuration

Après avoir enregistré vos fichiers de configuration dans un référentiel, procédez comme suit pour connecter Azure Spring Apps au référentiel :

  1. Connectez-vous au portail Azure.

  2. Accédez à votre page Vue d’ensemble d’Azure Spring Apps.

  3. Sélectionnez Spring Cloud Config Server dans le volet de navigation.

  4. Dans la section Référentiel par défaut, définissez URI sur https://github.com/Azure-Samples/piggymetrics-config.

  5. Sélectionnez Valider.

    Capture d’écran du portail Azure montrant la page Serveur de configuration.

    Capture d’écran du portail Azure montrant la page Serveur de configuration.

  6. Une fois la validation effectuée, sélectionnez Appliquer pour enregistrer vos modifications.

    Capture d’écran du portail Azure montrant la page Serveur de configuration avec le bouton Appliquer mis en surbrillance.

    Capture d’écran du portail Azure montrant la page Serveur de configuration avec le bouton Appliquer mis en surbrillance.

La mise à jour de la configuration peut prendre quelques minutes. Une fois la configuration terminée, vous devriez recevoir une notification.

Entrer les informations de dépôt directement dans le portail Azure

Vous pouvez entrer des informations de référentiel pour le référentiel par défaut et, éventuellement, pour des dépôts supplémentaires.

Dépôt par défaut

Cette section vous montre comment entrer des informations de référentiel pour un référentiel public ou privé. Pour un dépôt privé, vous pouvez utiliser l’authentification de base ou SSH.

Procédez comme suit pour entrer des informations de dépôt pour un référentiel public :

  1. Dans la section Dépôt par défaut, collez l’URI du dépôt dans la zone URI.
  2. Pour le paramètre Étiquette, entrez configuration.
  3. Vérifiez que le paramètre Authentification est Public.
  4. Sélectionnez Appliquer.

Procédez comme suit pour entrer des informations de dépôt pour un référentiel privé à l’aide de l’authentification par mot de passe/jeton de base :

  1. Dans la section Dépôt par défaut, collez l’URI du dépôt dans la zone URI.

  2. Sous Authentification, sélectionnez Modifier l’authentification.

  3. Dans le volet Modifier l’authentification, dans la liste déroulante Type d’authentification, sélectionnez HTTP Basic.

  4. Entrez votre nom d’utilisateur et votre mot de passe/jeton pour accorder l’accès à Azure Spring Apps.

  5. Sélectionnez OK, puis Appliquer pour terminer la configuration de votre instance de serveur de configuration.

    Capture d’écran du portail Azure montrant la section Référentiel par défaut des paramètres d’authentification pour l’authentification de base.

    Remarque

    De nombreux serveurs de dépôt Git prennent en charge l’utilisation de jetons à la place de mots de passe pour l’authentification de base HTTP. Certains référentiels permettent aux jetons d’être conservés indéfiniment. Toutefois, certains serveurs de référentiel Git, notamment Azure DevOps Server, forcent les jetons à expirer en quelques heures. Les dépôts qui entraînent l’expiration des jetons ne doivent pas utiliser l’authentification par jeton avec Azure Spring Apps. Si vous utilisez un tel jeton, n’oubliez pas de le mettre à jour avant son expiration.

    GitHub a supprimé la prise en charge de l’authentification par mot de passe. Vous devez donc utiliser un jeton d’accès personnel au lieu de l’authentification par mot de passe pour GitHub. Pour plus d’informations, consultez les exigences de l’authentification par jeton pour les opérations Git.

Procédez comme suit pour entrer des informations de dépôt pour un référentiel privé à l’aide de SSH :

  1. Dans la section Dépôt par défaut, collez l’URI du dépôt dans la zone URI.

  2. Sous Authentification, sélectionnez Modifier l’authentification.

  3. Dans le volet Modifier l’authentification, dans la liste déroulante type d’authentification, sélectionnez SSH.

  4. Entrez votre clé privée. Vous pouvez également spécifier votre clé d’hôte et l’algorithme de la clé d’hôte.

  5. Indiquez votre clé publique dans votre dépôt Config Server.

  6. Sélectionnez OK, puis Appliquer pour terminer la configuration de votre instance de serveur de configuration.

    Capture d’écran du portail Azure montrant la section Référentiel par défaut des paramètres d’authentification pour l’authentification SSH.

Référentiels supplémentaires

Si vous souhaitez configurer votre service avec un référentiel supplémentaire facultatif, procédez comme suit :

  1. Spécifiez les paramètres URI et authentification comme vous l’avez fait pour le référentiel par défaut. Veillez à inclure un paramètre Name pour votre modèle.
  2. Sélectionnez Appliquer pour attacher le référentiel à votre instance.

Configurer un référentiel Git en important un fichier YAML

Si vous avez écrit un fichier YAML avec vos paramètres de dépôt, vous pouvez importer le fichier directement à partir de votre ordinateur local vers Azure Spring Apps. L’exemple suivant montre un fichier YAML simple pour un référentiel privé avec l’authentification de base :

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/azure-spring-apps-samples-pr/config-server-repository.git
          username: <username>
          password: <password/token>

Pour importer un fichier YAML, procédez comme suit :

  1. Sélectionnez Paramètres d’importation, puis sélectionnez le fichier YAML dans le répertoire de votre projet. Cliquez sur Importer.

    Capture d’écran du portail Azure montrant le volet Paramètres d’importation du serveur de configuration.

    Capture d’écran du portail Azure montrant le volet Paramètres d’importation du serveur de configuration.

    Le volet notifications affiche une opération de async. Après 1 à 2 minutes, Config Server doit signaler la réussite de l’opération. Les informations de votre fichier YAML s’affichent dans le portail Azure.

  2. Sélectionnez Appliquer pour terminer l’importation.

Configurer Azure Repos sur le serveur de configuration

Azure Spring Apps peut accéder aux référentiels Git publics, sécurisés par SSH ou sécurisés à l'aide de l'authentification de base HTTP. L’authentification de base HTTP est l’option la plus simple pour créer et gérer des dépôts avec Azure Repos.

Obtenir l’URL et les informations d’identification du dépôt

Pour obtenir l’URL et les informations d’identification de votre dépôt, procédez comme suit :

  1. Dans le portail Azure Repos pour votre projet, sélectionnez Cloner.

  2. Copiez l'URL du clone à partir de la zone de texte. Cette URL se présente généralement sous la forme suivante :

    https://<organization name>@dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    Supprimez tout ce qui se trouve après https:// et avant dev.azure.com, y compris le symbole @. L’URL résultante doit se présenter sous la forme suivante :

    https://dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    Enregistrez cette URL pour l’utiliser ultérieurement.

  3. Sélectionnez Générer des informations d’identification Git pour afficher un nom d’utilisateur et un mot de passe. Enregistrez ce nom d’utilisateur et ce mot de passe à utiliser dans la section suivante.

Configurer un référentiel Git sur le serveur de configuration

Pour configurer le dépôt, procédez comme suit :

  1. Connectez-vous au portail Azure.

  2. Accédez à votre page Vue d’ensemble d’Azure Spring Apps.

  3. Sélectionnez le service à configurer.

  4. Dans le volet gauche de la page de service, sous Paramètres, sélectionnez l’onglet Spring Cloud Config Server.

  5. Pour configurer le référentiel que vous avez créé, procédez comme suit :

    • Ajoutez l’URI du référentiel que vous avez enregistré précédemment.
    • Sélectionnez le paramètre sous Authentification pour ouvrir le volet Modifier l’authentification.
    • Pour Type d’authentification, sélectionnez HTTP de base.
    • Pour nom d’utilisateur, spécifiez le nom d’utilisateur que vous avez enregistré précédemment.
    • Pour mot de passe, spécifiez le mot de passe que vous avez enregistré précédemment.
    • Sélectionnez OK, puis attendez que l’opération se termine.

    Capture d’écran du portail Azure montrant les paramètres de configuration de référentiel par défaut avec l’URI et le type d’authentification mis en surbrillance.

Lier une application au serveur de configuration Spring Cloud

Utilisez la commande suivante pour lier une application à Spring Cloud Config Server, ce qui permet à l’application d’extraire des configurations à partir du serveur de configuration.

az spring config-server bind \
    --resource-group <resource-group> \
    --service <service-name> \
    --app <app-name>

Vous pouvez également configurer la liaison d’application à partir du portail Azure, comme illustré dans la capture d’écran suivante :

Capture d’écran du portail Azure montrant la page Spring Cloud Config Server avec la liste déroulante liaison d’application mise en surbrillance.

Remarque

Ces modifications prennent quelques minutes pour se propager à toutes les applications lorsque l’état du serveur de configuration change.

Si vous modifiez l’état de liaison/de dissociation, vous devez redémarrer ou redéployer l’application.

Vous pouvez maintenant choisir de lier votre application au serveur de configuration Spring Cloud directement lors de la création d’une application à l’aide de la commande suivante :

az spring app create \ 
    --resource-group <resource-group> \ 
    --service <service-name> \ 
    --name <app-name> \ 
    --bind-config-server

Vous pouvez également lier votre application au serveur de configuration Spring Cloud à partir du portail Azure, comme illustré dans la capture d’écran suivante :

Capture d’écran du Portail Azure montrant la page Créer une application avec mise en évidence de la liste déroulante Liaison.

Supprimer votre configuration

Sélectionnez Réinitialiser sous l’onglet Spring Cloud Config Server pour effacer vos paramètres existants. Supprimez les paramètres du serveur de configuration si vous souhaitez connecter votre instance de serveur de configuration à une autre source, par exemple lorsque vous passez de GitHub à Azure DevOps Server.

Actualiser le serveur de configuration

Quand des propriétés sont modifiées, les services qui les consomment doivent être avertis afin que les modifications puissent être apportées. La solution par défaut pour Spring Cloud Config Server consiste à déclencher manuellement l’événement d’actualisation, ce qui peut ne pas être réalisable s’il existe de nombreuses instances d’application. Pour plus d’informations, consultez Configuration centralisée.

À la place, vous pouvez actualiser automatiquement les valeurs de Config Server en laissant le client de configuration interroger les modifications en fonction d’une actualisation interne.

Procédez comme suit pour actualiser automatiquement les valeurs à partir du serveur de configuration :

  1. Inscrivez une tâche planifiée pour actualiser le contexte dans un intervalle donné, comme illustré dans l’exemple suivant :

    @ConditionalOnBean({RefreshEndpoint.class})
    @Configuration
    @AutoConfigureAfter({RefreshAutoConfiguration.class, RefreshEndpointAutoConfiguration.class})
    @EnableScheduling
    public class ConfigClientAutoRefreshConfiguration implements SchedulingConfigurer {
        @Value("${spring.cloud.config.refresh-interval:60}")
        private long refreshInterval;
        @Value("${spring.cloud.config.auto-refresh:false}")
        private boolean autoRefresh;
        private RefreshEndpoint refreshEndpoint;
        public ConfigClientAutoRefreshConfiguration(RefreshEndpoint refreshEndpoint) {
            this.refreshEndpoint = refreshEndpoint;
        }
        @Override
        public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
            if (autoRefresh) {
                // set minimal refresh interval to 5 seconds
                refreshInterval = Math.max(refreshInterval, 5);
                scheduledTaskRegistrar.addFixedRateTask(() -> refreshEndpoint.refresh(), refreshInterval * 1000);
            }
        }
    }
    
  2. Activez autorefresh et définissez l’intervalle d’actualisation approprié dans votre fichier application.yml. Dans l’exemple suivant, le client interroge les modifications de configuration toutes les 60 secondes, qui est la valeur minimale que vous pouvez définir pour un intervalle d’actualisation.

    Par défaut, autorefresh est défini sur false et l’intervalle d’actualisation est défini sur 60 seconds.

    spring:
        cloud:
             config:
              auto-refresh: true
              refresh-interval: 60
    management:
        endpoints:
             web:
              exposure:
                include:
                  - refresh
    
  3. Ajoutez @RefreshScope à votre code. Dans l’exemple suivant, la variable connectTimeout est automatiquement actualisée toutes les 60 secondes.

    @RestController
    @RefreshScope
    public class HelloController {
        @Value("${timeout:4000}")
        private String connectTimeout;
    }
    

Pour plus d’informations, consultez l’exemple config-client-polling.

Gérer Spring Cloud Config Server dans une instance de plan Entreprise existante

Vous pouvez activer et désactiver Spring Cloud Config Server après la création du service à l’aide du portail Azure ou d’Azure CLI. Avant de désactiver Spring Cloud Config Server, vous devez dissocier toutes vos applications.

Pour activer ou désactiver Spring Cloud Config Server, procédez comme suit :

  1. Accédez à votre instance de service, puis sélectionnez Spring Cloud Config Server.

  2. Sélectionnez Gérer.

  3. Sélectionnez ou désélectionnez Activer le serveur de configuration Spring Cloud, puis sélectionnez Enregistrer.

    Capture d’écran du portail Azure montrant le volet Gérer avec l’option Activer le serveur de configuration mise en surbrillance.

  4. Vous pouvez maintenant afficher l’état du serveur de configuration Spring Cloud sur la page Spring Cloud Config Server.

Azure Spring Apps