Tutorial: Conexión a un servidor Eureka administrado para Spring en Azure Container Apps
Eureka Server para Spring es un registro de servicios que permite a los microservicios registrarse y detectar otros servicios. Disponible como componente de Azure Container Apps, puede enlazar la aplicación contenedora a un servidor Eureka para Spring para el registro automático con el servidor Eureka.
En este tutorial, aprenderá a:
- Creación de un componente Eureka Server para Spring Java
- Enlace de la aplicación contenedora al componente Eureka Server for Spring Java
Importante
En este tutorial se usan servicios que pueden afectar a la factura de Azure. Si decide seguir paso a paso, asegúrese de eliminar los recursos destacados en este artículo para evitar una facturación inesperada.
Requisitos previos
Para completar este proyecto, necesita los siguientes elementos:
Requisito | Instructions |
---|---|
Cuenta de Azure | Se necesita una suscripción vigente de Azure. Si no tiene ninguna, puede crear una gratis. |
CLI de Azure | Instale la CLI de Azure. |
Consideraciones
Al ejecutarse en Eureka Server para Spring en Azure Container Apps, tenga en cuenta los detalles siguientes:
Elemento | Explicación |
---|---|
Ámbito | El componente Eureka Server for Spring se ejecuta en el mismo entorno que la aplicación contenedora conectada. |
Escalado | El servidor Eureka para Spring no se puede escalar. Las propiedades de escalado minReplicas y maxReplicas se establecen en 1 . Para lograr una alta disponibilidad, puede consultar Creación de un servicio Eureka de alta disponibilidad en Azure Container Apps. |
Recursos | Se ha corregido la asignación de recursos de contenedor para Eureka Server for Spring. El número de núcleos de CPU es 0,5 y el tamaño de memoria es 1 Gi. |
Precios | La facturación del servidor Eureka para Spring se encuentra bajo los precios basados en el consumo. Los recursos consumidos por los componentes de Java administrados se facturan a las tarifas activas o inactivas. Puede eliminar componentes que ya no estén en uso para detener la facturación. |
Binding | Las aplicaciones de contenedor se conectan a un componente Eureka Server for Spring a través de un enlace. Los enlaces insertan configuraciones en variables de entorno de la aplicación contenedora. Una vez establecido un enlace, la aplicación contenedora puede leer los valores de configuración de las variables de entorno y conectarse al servidor Eureka para Spring. |
Configurar
Antes de empezar a trabajar con el servidor Eureka para Spring, primero debe crear los recursos necesarios.
Ejecute los siguientes comandos para crear el grupo de recursos y el entorno de Container Apps.
Cree variables para admitir la configuración de la aplicación. Estos valores se proporcionan para usted con fines de esta lección.
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 Descripción LOCATION
Ubicación de la región de Azure donde se crea la aplicación de contenedor y el componente de Java. ENVIRONMENT
El nombre del entorno de Azure Container Apps para la aplicación de demostración. RESOURCE_GROUP
Nombre del grupo de recursos de Azure para la aplicación de demostración. EUREKA_COMPONENT_NAME
Nombre del componente de Java creado para la aplicación contenedora. En este caso, creará un componente Eureka Server para Spring Java. IMAGE
Imagen de contenedor usada en la aplicación contenedora. Inicio de sesión en Azure con la CLI de Azure.
az login
Cree un grupo de recursos.
az group create --name $RESOURCE_GROUP --location $LOCATION
Cree el entorno de aplicaciones de contenedor.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Cree el componente Eureka Server for Spring Java
Ahora que tiene un entorno existente, puede crear la aplicación de contenedor y enlazarla a una instancia de componente de Java de Eureka Server for Spring.
Cree el componente Eureka Server for Spring Java.
az containerapp env java-component eureka-server-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME
Opcional: Actualice la configuración del componente Eureka Server for Spring Java.
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
Enlace de la aplicación contenedora al componente Eureka Server for Spring Java
Cree la aplicación contenedora y enlace con el servidor Eureka para 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
Copie la dirección URL de su aplicación en un editor de texto para poder usarla en un paso siguiente.
Vuelva a la aplicación contenedora en el portal y copie la dirección URL de la aplicación en un editor de texto para que pueda usarla en un paso siguiente.
Vaya a la ruta /allRegistrationStatus
para ver todas las aplicaciones registradas con el servidor Eureka para Spring.
El enlace inserta varias configuraciones en la aplicación como variables de entorno, principalmente la propiedad eureka.client.service-url.defaultZone
. Esta propiedad indica el punto de conexión interno del componente Java del servidor Eureka.
El enlace también inserta las siguientes propiedades:
"eureka.client.register-with-eureka": "true"
"eureka.client.fetch-registry": "true"
"eureka.instance.prefer-ip-address": "true"
La propiedad eureka.client.register-with-eureka
se establece en true
para aplicar el registro con el servidor Eureka. Este registro sobrescribe la configuración local en application.properties
, desde el servidor de configuración, etc. Si quiere establecerlo en false
, puede sobrescribirlo estableciendo una variable de entorno en la aplicación contenedora.
eureka.instance.prefer-ip-address
se establece en true
debido a la regla de resolución DNS específica en el entorno de la aplicación contenedora. No modifique este valor para no interrumpir el enlace.
(Opcional) Desenlace la aplicación contenedora del componente Eureka Server para Spring Java
Para quitar un enlace de una aplicación de contenedor, recurra a la opción --unbind
.
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
Visualización de la aplicación a través de un panel
Importante
Para ver el panel, debe tener al menos el rol de Microsoft.App/managedEnvironments/write
asignado a su cuenta en el recurso de entorno administrado. Puede asignar explícitamente el rol Owner
o Contributor
en el recurso o seguir los pasos para crear una definición de rol personalizada y asignarla a su cuenta.
Cree la definición de rol personalizada.
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>"] }'
Asegúrese de reemplazar el marcador de posición entre los corchetes de
<>
en el valor deAssignableScopes
por el identificador de suscripción.Asigne el rol personalizado a su cuenta en el recurso de entorno administrado.
Obtenga el identificador de recurso del entorno administrado:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id -o tsv)
Asigne el rol a su cuenta.
Antes de ejecutar este comando, reemplace el marcador de posición entre los corchetes
<>
por el identificador de usuario o entidad de servicio.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_ID
Nota:
<USER_OR_SERVICE_PRINCIPAL_ID> normalmente debería ser la identidad que usa para acceder a Azure Portal. <ROLE_NAME> es el nombre que asignó en el paso 1.
Obtenga la dirección URL del panel de Eureka Server for 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
Este comando devuelve la dirección URL que puede usar para acceder al panel de Eureka Server para Spring. A través del panel, la aplicación contenedora también se muestra como se muestra en el recorte de pantalla siguiente.
Opcional: Integrar el servidor Eureka para los componentes de Spring y Admin para Spring Java
Si desea integrar el servidor Eureka para Spring y los componentes de Admin for Spring Java, consulte Integrar el administrador administrado para Spring con Eureka Server for Spring.
Limpieza de recursos
Los recursos creados en este tutorial tienen un efecto en la factura de Azure. Si no va a usar estos servicios a largo plazo, ejecute el siguiente comando para quitar todo lo creado en este tutorial.
az group delete \
--resource-group $RESOURCE_GROUP