Partager via


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

Eureka Server pour Spring est un registre de services qui permet aux microservices de s’inscrire eux-mêmes et de découvrir d’autres services. Disponible sous forme de composant Azure Container Apps, vous pouvez lier votre application conteneur à une instance Eureka Server pour Spring pour qu’elle s’inscrive automatiquement au serveur Eureka.

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

  • Créer un composant Java Eureka Server pour Spring
  • Lier votre application conteneur au composant Java Eureka Server pour Spring

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 Eureka Server pour Spring dans Azure Container Apps, tenez compte des détails suivants :

Article Explication
Portée Le composant Java Eureka Server pour Spring s’exécute dans le même environnement que l’application conteneur connectée.
Mise à l'échelle Eureka Server pour Spring 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. Pour obtenir une haute disponibilité, vous pouvez vous référer à Créer un service Eureka hautement disponible dans Azure Container Apps.
Ressources L’allocation de ressources de conteneur pour Eureka Server pour Spring 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 Eureka Server pour Spring est soumise à des tarifs basés 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 Les applications conteneur se connectent à un composant Eureka Server pour Spring avec 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 à Eureka Server pour Spring.

Programme d’installation

Avant de commencer à utiliser une instance Eureka 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 EUREKA_COMPONENT_NAME=eureka
    export APP_NAME=my-eureka-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest"
    
    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.
    EUREKA_COMPONENT_NAME Nom du composant Java créé pour votre application conteneur. Dans ce cas, vous créez un composant Java Eureka Server 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
    
  4. Créez votre environnement d’applications conteneur.

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

Créer le composant Java Serveur Eureka pour Spring

Maintenant que vous avez un environnement existant, vous pouvez créer votre application conteneur et la lier à une instance de composant Java Eureka Server pour Spring.

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

    az containerapp env java-component eureka-server-for-spring create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $EUREKA_COMPONENT_NAME
    
  2. Facultatif : mettez à jour la configuration du composant Java Serveur Eureka pour Spring.

    az containerapp env java-component eureka-server-for-spring update \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $EUREKA_COMPONENT_NAME 
      --configuration eureka.server.renewal-percent-threshold=0.85 eureka.server.eviction-interval-timer-in-ms=10000
    

Lier votre application conteneur au composant Java Serveur Eureka pour Spring

  1. Créez l’application conteneur et liez-la à l’instance Eureka Server 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 $EUREKA_COMPONENT_NAME \
      --query properties.configuration.ingress.fqdn
    

Copiez l’URL de votre application dans un éditeur de texte pour pouvoir l’utiliser dans une prochaine étape.

Revenez à l’application de conteneur dans le portail et copiez l’URL de votre application dans un éditeur de texte pour pouvoir l’utiliser dans une étape à venir.

Accédez à l’affichage de routage /allRegistrationStatus pour voir toutes les applications inscrites sur l’instance Eureka Server pour Spring.

La liaison injecte plusieurs configurations dans l’application sous forme de variables d’environnement, en particulier la propriété eureka.client.service-url.defaultZone. Cette propriété indique le point de terminaison interne du composant Java Eureka Server.

La liaison injecte aussi les propriétés suivantes :

"eureka.client.register-with-eureka":    "true"
"eureka.client.fetch-registry":          "true"
"eureka.instance.prefer-ip-address":     "true"

La propriété eureka.client.register-with-eureka est définie sur true pour appliquer l’inscription au serveur Eureka. Cette inscription remplace le paramètre local dans application.properties dans le serveur de configuration, et ainsi de suite. Si vous voulez le définir sur false, vous pouvez le remplacer en définissant une variable d’environnement dans votre application conteneur.

eureka.instance.prefer-ip-address est défini sur true en raison de la règle de résolution DNS spécifique dans l’environnement d’application conteneur. Ne modifiez pas cette valeur pour ne pas interrompre la liaison.

(Facultatif) Dissocier votre application de conteneur à partir du composant Java Eureka 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

Afficher l’application via un 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 soit attribuer explicitement le rôle Owner ou Contributor sur la ressource, soit 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": "<YOUR_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 l’espace réservé entre les crochets <> dans la valeur AssignableScopes par votre ID d’abonnement.

  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 -o tsv)
    
  3. Attribuez le rôle à votre compte.

    Avant d’exécuter cette commande, remplacez l’espace réservé entre les crochets <> par votre ID d’utilisateur(-trice) ou de principal de service.

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

    Remarque

    <USER_OR_SERVICE_PRINCIPAL_ID> correspond généralement à l’identité que vous utilisez pour accéder au Portail Azure. <ROLE_NAME> est le nom que vous avez attribué à l’étape 1.

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

    az containerapp env java-component eureka-server-for-spring show \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $EUREKA_COMPONENT_NAME \
      --query properties.ingress.fqdn -o tsv
    

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

Capture d’écran du tableau de bord Serveur Eureka pour Spring.

Facultatif : intégrer les composants Java Serveur Eureka pour Spring et Administration pour Spring

Si vous souhaitez intégrer les composants Java Serveur Eureka pour Spring et Administration pour Spring, consultez Intégrer l’Administration gérée pour Spring à Serveur Eureka 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 didacticiel.

az group delete \
  --resource-group $RESOURCE_GROUP

Étapes suivantes