Partekatu honen bidez:


Tutorial: Conexión a un servidor de configuración administrado para Spring en Azure Container Apps

Config Server para Spring proporciona una ubicación centralizada para que los datos de configuración estén disponibles para varias aplicaciones. En este artículo, aprenderá a conectar una aplicación hospedada en Azure Container Apps a una instancia de Java Config Server para Spring.

El componente Config Server para Spring Java usa un repositorio de GitHub como origen para las opciones de configuración. Los valores de configuración están disponibles para la aplicación contenedora a través de un enlace entre el componente y la aplicación contenedora. A medida que cambian los valores en el servidor de configuración, fluyen automáticamente a la aplicación, todo ello sin necesidad de volver a compilar o volver a implementar la aplicación.

En este tutorial, aprenderá a:

  • Crear un componente de Config Server para Spring
  • Vincular Config Server para Spring a su aplicación contenedora
  • Observe los valores de configuración antes y después de conectar el servidor de configuración a la aplicación
  • Cifrado y descifrado de valores de configuración con una clave simétrica

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

Cuando se ejecute en Config Server para Spring en Azure Container Apps, tenga en cuenta los detalles siguientes:

Elemento Explicación
Ámbito Config Server para Spring se ejecuta en el mismo entorno que la aplicación contenedora conectada.
Escalado Para mantener un único origen de verdad, Config Server para Spring no se escala. Las propiedades de escalado minReplicas y maxReplicas se establecen en 1.
Recursos La asignación de recursos de contenedor para Config Server para Spring es fija, el número de núcleos de CPU es 0,5 y el tamaño de memoria es 1Gi.
Precios La facturación de Config Server para Spring se encuentra en 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 La aplicación contenedora se conecta a un Config Server para Spring a través de un enlace. El enlace inserta configuraciones en variables de entorno de aplicaciones contenedoras. Una vez establecido un enlace, la aplicación contenedora puede leer los valores de configuración de las variables de entorno.

Configurar

Antes de empezar a trabajar con Config Server 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 JAVA_COMPONENT_NAME=configserver
    export APP_NAME=my-config-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-config-client:latest"
    export URI="https://github.com/Azure-Samples/azure-spring-cloud-config-java-aca.git"
    
    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.
    JAVA_COMPONENT_NAME Nombre del componente de Java creado para la aplicación contenedora. En este caso, creará un componente Config Server para Spring Java.
    IMAGE Imagen de contenedor usada en la aplicación contenedora.
    URI Puede reemplazar el URI por la dirección URL del repositorio de Git, si es privada, agregue las configuraciones de autenticación relacionadas, como spring.cloud.config.server.git.username y spring.cloud.config.server.git.password.
  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
    

Este entorno se usa para hospedar tanto el componente Config Server para Spring Java como la aplicación contenedora.

Crear el componente Config Server para Spring Java

Ahora que tiene un entorno de Container Apps, puede crear la aplicación de contenedor y enlazarla a un componente de Config Server para Spring Java. Al enlazar la aplicación contenedora, los valores de configuración se sincronizan automáticamente desde el componente Config Server a la aplicación.

  1. Crear el componente Config Server para Spring Java.

    az containerapp env java-component config-server-for-spring create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $JAVA_COMPONENT_NAME \
      --min-replicas 1 \
      --max-replicas 1 \
      --configuration spring.cloud.config.server.git.uri=$URI
    
  2. Actualizar el componente Config Server para Spring Java.

    az containerapp env java-component config-server-for-spring update \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $JAVA_COMPONENT_NAME \
      --min-replicas 2 \
      --max-replicas 2 \
      --configuration spring.cloud.config.server.git.uri=$URI spring.cloud.config.server.git.refresh-rate=60
    

    Aquí, le indica al componente dónde encontrar el repositorio que contiene la información de configuración a través de la propiedad uri. La propiedad refresh-rate indica a Container Apps con qué frecuencia buscar cambios en el repositorio de Git.

Enlace de la aplicación contenedora al componente Config Server para Spring Java

  1. Cree la aplicación contenedora que consume datos de configuración.

    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 \
      --query properties.configuration.ingress.fqdn
    

    Este comando devuelve la dirección URL de la aplicación contenedora que consume datos de configuración. Copie la dirección URL en un editor de texto para poder usarla en un paso siguiente.

    Si visita la aplicación en un explorador, el valor connectTimeout devuelto es el valor predeterminado de 0.

  2. Enlace a Config Server para Spring.

    Ahora que se han creado la aplicación contenedora y Config Server, las enlaza junto con el comando update a la aplicación contenedora.

    az containerapp update \
      --name $APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --bind $JAVA_COMPONENT_NAME
    

    El parámetro --bind $JAVA_COMPONENT_NAME crea el vínculo entre la aplicación contenedora y el componente de configuración.

Una vez enlazada la aplicación contenedora y el componente Config Server, los cambios de configuración se sincronizan automáticamente con la aplicación contenedora.

Cuando vuelva a visitar la dirección URL de la aplicación, el valor de connectTimeout es ahora 10000. Este valor procede del repositorio de Git establecido en la variable $URI establecida originalmente como origen del componente de configuración. En concreto, este valor se extrae de la propiedad connectionTimeout del archivo application.yml del repositorio.

La solicitud de enlace inserta el valor de configuración en la aplicación como variables de entorno. Estos valores ahora están disponibles para el código de la aplicación que se usará al capturar las opciones de configuración del servidor de configuración.

En este caso, las siguientes variables de entorno están disponibles en la aplicación:

SPRING_CLOUD_CONFIG_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CLOUD_CONFIG_COMPONENT_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CONFIG_IMPORT=optional:configserver:$SPRING_CLOUD_CONFIG_URI

Si desea personalizar su propio SPRING_CONFIG_IMPORT, puede hacer referencia a la variable de entorno SPRING_CLOUD_CONFIG_COMPONENT_URI, por ejemplo, puede invalidar mediante argumentos de línea de comandos, como Java -Dspring.config.import=optional:configserver:${SPRING_CLOUD_CONFIG_COMPONENT_URI}?fail-fast=true.

También puede quitar un enlace de la aplicación.

(Opcional) Desenlace la aplicación contenedora del componente Config Server for 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

Cuando vuelva a visitar la dirección URL de la aplicación, el valor de connectTimeout cambia a 0.

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