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.
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. 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
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.
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
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
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.
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 valeurAssignableScopes
par votre ID d’abonnement.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)
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.
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.
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