Partager via


Tutoriel : se connecter à une administration gérée pour Spring dans Azure Container Apps

Le composant administration gérée pour Spring offre une interface d’administration pour les applications web Spring Boot qui exposent des points de terminaison d’actionneur. En tant que composant managé dans Azure Container Apps, vous pouvez facilement lier votre application conteneur à administration pour Spring pour une intégration et une gestion transparentes.

Ce tutoriel vous montre comment créer un composant Java Administration pour Spring et le lier à votre application conteneur afin de pouvoir surveiller et gérer facilement vos applications Spring.

Capture d’écran montrant une vue d’ensemble du tableau de bord des informations d’Administration pour Spring.

Dans ce tutoriel, vous allez apprendre à :

  • Créez un composant Java Administration pour Spring.
  • Liez votre application conteneur à un composant Java Administration pour Spring.

Si vous souhaitez intégrer Administration pour Spring à un serveur Eureka pour Spring, consultez plutôt Intégrer Administration pour Spring à un serveur Eureka pour Spring dans Azure Container Apps.

Important

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

Prérequis

À propos de l’installation

Lorsque vous exécutez le composant Administration pour Spring dans Container Apps, tenez compte des détails suivants :

Article Explication
Étendue Les composants s’exécutent dans le même environnement que l’application conteneur connectée.
Mise à l'échelle Le composant ne peut pas être mis à 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 les composants est fixe. Le nombre de cœurs de processeur est 0,5 et la taille de la mémoire est 1 Gi.
Tarification La facturation des composants est soumise à des tarifs basés sur la consommation. Les ressources consommées par les composants 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 Les applications conteneur se connectent à un composant via une liaison. La liaison injecte les configurations dans les variables d’environnement de l’application conteneur. Une fois la liaison établie, l’application conteneur peut lire ces valeurs de configuration à partir des variables d’environnement et se connecter au composant.

Programme d’installation

Avant de commencer à utiliser un composant Administration pour Spring, vous devez d’abord créer les ressources nécessaires.

Les commandes suivantes vous aident à créer votre groupe de ressources et l’environnement de votre application conteneur.

  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-resource-group
    export ENVIRONMENT=my-environment
    export JAVA_COMPONENT_NAME=admin
    export APP_NAME=sample-admin-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"
    
    Variable Description
    LOCATION Emplacement de la région Azure où vous créez votre application conteneur et votre composant Java.
    ENVIRONMENT Le nom de l’environnement de l’application conteneur 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(e) administrateur(-trice) composant Java pour Spring.
    IMAGE Image conteneur utilisée dans votre application conteneur.
  2. Se connecter à Azure avec Azure CLI.

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

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION \
        --query "properties.provisioningState"
    

    Lorsque vous utilisez le paramètre --query, la réponse filtre jusqu’à un simple message de succès ou d’échec.

  4. Créez l’environnement de votre application conteneur.

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

Utiliser le composant

Maintenant que vous avez un environnement existant, vous pouvez créer votre application conteneur et la lier à l’instance du composant Java Administration pour Spring.

  1. Créez le composant Java Administration pour Spring.

    az containerapp env java-component admin-for-spring create \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --min-replicas 1 \
        --max-replicas 1
    
  2. Mettez à jour le composant Java Administration pour Spring.

    az containerapp env java-component admin-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --min-replicas 2 \
        --max-replicas 2
    

Lier votre application conteneur au composant Java de l’administration pour Spring

  1. Créez l’application conteneur et liez-la au composant Administration pour Spring.

    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 \
        --bind $JAVA_COMPONENT_NAME
    

L’opération de liaison lie l’application conteneur au composant Java de l’Administration pour Spring. L’application conteneur peut maintenant lire les valeurs de configuration des variables d’environnement, en particulier la propriété SPRING_BOOT_ADMIN_CLIENT_URL, et se connecter au composant Administration pour Spring.

La liaison injecte aussi la propriété suivante :

"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",

Cette propriété indique que le client du composant Administration pour Spring doit préférer l’adresse IP de l’instance d’application conteneur lorsque vous vous connectez au serveur Administration pour Spring.

Facultatif : dissociez votre application conteneur du composant Java Administration 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

Afficher le tableau de bord

Important

Pour afficher le tableau de bord, vous devez disposer au moins du rôle Microsoft.App/managedEnvironments/write, celui-ci devant être attribué à votre compte sur la ressource d’environnement managé. Vous pouvez attribuer explicitement le rôle Owner ou Contributor sur la ressource. Vous pouvez également suivre les étapes pour créer une définition de rôle personnalisé et l’attribuer à votre compte.

  1. Créez la définition de rôle personnalisé.

    az role definition create --role-definition '{
        "Name": "<ROLE_NAME>",
        "IsCustom": true,
        "Description": "Can access managed Java Component dashboards in managed environments",
        "Actions": [
            "Microsoft.App/managedEnvironments/write"
        ],
        "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"]
    }'
    

    Veillez à remplacer les espaces réservés entre les crochets <> par vos valeurs.

  2. Attribuez le rôle personnalisé à votre compte sur la ressource d’environnement managé.

    Obtenez l’ID de ressource de l’environnement managé :

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ 
        --query id \
        --output tsv)
    
  3. Attribuez le rôle à votre compte.

    Avant d’exécuter cette commande, remplacez l’espace réservé (indiqué par des crochets <>) par votre ID d’utilisateur ou de principal de service ou le nom du rôle.

    az role assignment create \
        --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
        --role "<ROLE_NAME>" \
        --scope $ENVIRONMENT_ID
    

    Remarque

    La valeur <USER_OR_SERVICE_PRINCIPAL_ID> doit être l’identité que vous utilisez pour accéder au portail Azure. La valeur <ROLE_NAME> est le nom que vous avez attribué à l’étape 1.

  4. Obtenez l’URL du tableau de bord Administration pour Spring.

    az containerapp env java-component admin-for-spring show \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --query properties.ingress.fqdn \
        --output tsv
    

    Cette commande retourne l’URL que vous pouvez utiliser pour accéder au tableau de bord Administration pour Spring. Avec le tableau de bord, vous pouvez également afficher votre application conteneur, comme illustré dans la capture d’écran suivante.

    Capture d’écran montrant la vue d’ensemble du tableau de bord Administration pour Spring.

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 tutoriel.

az group delete --resource-group $RESOURCE_GROUP

Dépendance

Quand vous utilisez le composant Administration dans votre propre application conteneur, vous devez ajouter la dépendance suivante dans votre fichier pom.xm. Remplacez le numéro de version par la dernière version disponible sur le référentiel Maven.

<dependency>
    <groupId>de.codecentric</groupId>
    <version>3.3.2</version>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>

Propriétés configurables

À compter de Spring Boot 2, les points de terminaison autres que health et info ne sont pas exposés par défaut. Vous pouvez les exposer en ajoutant la configuration suivante dans votre fichier application.properties.

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

Liste de configurations autorisées pour votre composant Administration pour Spring

La liste suivante détaille les propriétés du composant Administration que vous pouvez configurer pour votre application. Pour plus d’informations, consultez Spring Boot Admin.

Nom de la propriété Description Valeur par défaut
spring.boot.admin.server.enabled Active le serveur Spring Boot Admin. true
spring.boot.admin.context-path Le préfixe de chemin d’accès où les ressources statiques et l’API du serveur Administration sont servies. Relativement à Dispatcher-Servlet.
spring.boot.admin.monitor.status-interval Intervalle de vérification de l’état des instances en millisecondes. 10,000ms
spring.boot.admin.monitor.status-lifetime Durée de vie de l’état en millisecondes. L’état n’est pas mis à jour tant que le dernier état n’a pas expiré. 10 000 ms
spring.boot.admin.monitor.info-interval Intervalle de vérification des informations des instances en millisecondes. 1m
spring.boot.admin.monitor.info-lifetime Durée de vie des informations en minutes. Les informations ne sont pas mises à jour tant que les dernières informations n’ont pas expiré. 1m
spring.boot.admin.monitor.default-timeout Délai d’expiration par défaut lors de l’exécution de requêtes. Vous pouvez remplacer les valeurs individuelles de points de terminaison spécifiques avec spring.boot.admin.monitor.timeout.*. 10,000
spring.boot.admin.monitor.timeout.* Paires clé-valeur avec le délai d’expiration par endpointId. Prend par défaut la valeur default-timeout.
spring.boot.admin.monitor.default-retries Nombre de nouvelles tentatives par défaut pour les requêtes ayant échoué. Les requêtes qui modifient des données (PUT, POST, PATCH, DELETE) ne font jamais l’objet de nouvelles tentatives. Vous pouvez remplacer les valeurs individuelles de points de terminaison spécifiques avec spring.boot.admin.monitor.retries.*. 0
spring.boot.admin.monitor.retries.* Paires clé-valeur avec le nombre de nouvelles tentatives par endpointId. Les requêtes qui modifient des données (PUT, POST, PATCH, DELETE) ne font jamais l’objet de nouvelles tentatives. Prend par défaut la valeur default-retries.
spring.boot.admin.metadata-keys-to-sanitize Valeurs de métadonnées pour les clés correspondant aux modèles regex utilisés pour assainir toutes les sorties JSON. À compter de Spring Boot 3, toutes les valeurs d’actionneur sont masquées par défaut. Pour plus d’informations sur la configuration du processus de non-assainissement, consultez Assainir les valeurs sensibles. ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$"
spring.boot.admin.probed-endpoints Pour les applications clientes Spring Boot 1.x, Spring Boot Admin sonde les points de terminaison spécifiés à l’aide d’une requête OPTIONS. Si le chemin d’accès diffère de l’ID, vous pouvez spécifier cette valeur en tant que id:path (par exemple, health:ping). "health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents"
spring.boot.admin.instance-proxy.ignored-headers En-têtes à ne pas transférer dans le cadre de requêtes adressées aux clients. "Cookie", "Set-Cookie", "Authorization"
spring.boot.admin.ui.title Titre de page affiché. "Spring Boot Admin"
spring.boot.admin.ui.poll-timer.cache Durée d’interrogation en millisecondes pour extraire les nouvelles données de cache. 2500
spring.boot.admin.ui.poll-timer.datasource Durée d’interrogation en millisecondes pour extraire les nouvelles données de source de données. 2500
spring.boot.admin.ui.poll-timer.gc Durée d’interrogation en millisecondes pour extraire les nouvelles données gc. 2500
spring.boot.admin.ui.poll-timer.process Durée d’interrogation en millisecondes pour extraire les nouvelles données de processus. 2500
spring.boot.admin.ui.poll-timer.memory Durée d’interrogation en millisecondes pour extraire les nouvelles données de mémoire. 2500
spring.boot.admin.ui.poll-timer.threads Durée d’interrogation en millisecondes pour extraire les nouvelles données de threads. 2500
spring.boot.admin.ui.poll-timer.logfile Durée d’interrogation en millisecondes pour extraire les nouvelles données de fichier journal. 1000
spring.boot.admin.ui.enable-toasts Active ou désactive les notifications toast. false
spring.boot.admin.ui.title Valeur de titre de la fenêtre du navigateur. ""
spring.boot.admin.ui.brand Code HTML affiché dans l’en-tête de navigation. Il s’agit par défaut de l’étiquette Spring Boot Admin. Par défaut, le logo de Spring Boot Admin est suivi de son nom. ""
management.scheme Valeur remplacée dans l’URL de service utilisée pour accéder aux points de terminaison d’actionneur.
management.address Valeur remplacée dans l’URL de service utilisée pour accéder aux points de terminaison d’actionneur.
management.port Valeur remplacée dans l’URL de service utilisée pour accéder aux points de terminaison d’actionneur.
management.context-path Valeur ajoutée à l’URL de service utilisée pour accéder aux points de terminaison d’actionneur. ${spring.boot.admin.discovery.converter.management-context-path}
health.path Valeur ajoutée à l’URL de service utilisée pour la vérification de l’intégrité. Ignorée par le EurekaServiceInstanceConverter. ${spring.boot.admin.discovery.converter.health-endpoint}
spring.boot.admin.discovery.enabled Active la prise en charge de DiscoveryClient pour le serveur Admin. true
spring.boot.admin.discovery.converter.management-context-path Valeur ajoutée à service-url du service découvert lorsque la valeur management-url est convertie par DefaultServiceInstanceConverter. /actuator
spring.boot.admin.discovery.converter.health-endpoint-path Valeur ajoutée à management-url du service découvert lorsque la valeur health-url est convertie par DefaultServiceInstanceConverter. "health"
spring.boot.admin.discovery.ignored-services Services ignorés lors de l’utilisation de la découverte et non inscrits en tant qu’application. Prend en charge des modèles simples tels que "foo*", "*bar" et "foo*bar*".
spring.boot.admin.discovery.services Services inclus lors de l’utilisation de la découverte et inscrits en tant qu’application. Prend en charge des modèles simples tels que "foo*", "*bar" et "foo*bar*". "*"
spring.boot.admin.discovery.ignored-instances-metadata Services ignorés s’ils contiennent au moins un élément de métadonnées qui correspond aux modèles de cette liste. Prend en charge des modèles tels que "discoverable=false".
spring.boot.admin.discovery.instances-metadata Services inclus s’ils contiennent au moins un élément de métadonnées qui correspond aux modèles de la liste. Prend en charge des modèles tels que "discoverable=true".

Configurations courantes

  • Configurations relatives à la journalisation :
    • logging.level.*
    • logging.group.*
    • Toute autre configuration sous l’espace de noms logging.* doit être interdite. Par exemple, l’écriture de fichiers journaux avec logging.file doit être interdite.

Intégrer l’Administration gérée pour Spring à Serveur Eureka pour Spring