Compartir vía


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.

  1. 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.
  2. Inicio de sesión en Azure con la CLI de Azure.

    az login
    
  3. Cree un grupo de recursos.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. 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.

  1. 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
    
  2. 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

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

  1. 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 de AssignableScopes por el identificador de suscripción.

  2. 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)
    
  3. 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.

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

Recorte de pantalla del panel de Eureka Server for Spring.

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

Pasos siguientes