Compartir vía


Configuración de una instancia administrada de Spring Cloud Config Server en Azure Spring Apps

Nota:

Los planes de Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retiro de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.

El plan de consumo estándar y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para obtener más información, consulte Migrar el plan de consumo y dedicado Azure Spring Apps Standard a Azure Container Apps.

Este artículo se aplica a:✅ Java ✅ C#

Este artículo se aplica a:✅ consumo estándar y dedicado (versión preliminar) ✅ Básico/Estándar ✅ Enterprise

En este artículo se muestra cómo configurar una instancia administrada de Spring Cloud Config Server en el servicio Azure Spring Apps.

Spring Cloud Config Server ofrece soporte técnico para servidor y cliente para las configuraciones externalizadas de un sistema distribuido. La instancia de Spring Cloud Config Server proporciona un lugar centralizado donde administrar las propiedades externas de las aplicaciones en todos los entornos. Para más información, consulte Spring Cloud Config.

Nota:

Para usar el servidor de configuración en el plan estándar de consumo Estándar y dedicado, primero debe habilitarlo. Para más información, consulte Habilitar y deshabilitar Spring Cloud Config Server en Azure Spring Apps.

Requisitos previos

  • Suscripción a Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Habilitar Spring Cloud Config Server

Puede habilitar Spring Cloud Config Server al aprovisionar una instancia de servicio del plan Enterprise de Azure Spring Apps. Si ya tiene una instancia del plan de Azure Spring Apps Enterprise, consulte la sección Administración de Spring Cloud Config Server en una instancia del plan Enterprise existente de este artículo.

Puede habilitar Spring Cloud Config Server mediante Azure Portal o la CLI de Azure.

Siga estos pasos para habilitar Spring Cloud Config Server:

  1. Abra Azure Portal.

  2. En la pestaña aspectos básicos, seleccione nivel Enterprise en la sección Precios y especifique la información necesaria. A continuación, seleccione Siguiente: Componentes administrados.

  3. En la pestaña Componentes administrados, seleccione Habilitar Spring Cloud Config Server.

    Captura de pantalla de Azure Portal que muestra la pestaña Configuración de VMware Tanzu con la casilla Habilitar Spring Cloud Config Server resaltada.

  4. Especifique otras opciones de configuración y, a continuación, seleccione Revisar y crear.

  5. En la pestaña Revisar y crear, asegúrese de que Habilitar Spring Cloud Config Server esté establecido en . Seleccione Crear para crear la instancia del plan Enterprise.

Restricciones

Cuando se usa Config Server con un back-end de Git, hay algunas restricciones. Las propiedades siguientes se insertan automáticamente en el entorno de una aplicación para acceder a Config Server y a Service Discovery. Si también configura esas propiedades desde los archivos de Config Server, pueden aparecer conflictos y un comportamiento inesperado.

  • eureka.client.service-url.defaultZone
  • eureka.client.tls.keystore
  • eureka.instance.preferIpAddress
  • eureka.instance.instance-id
  • server.port
  • spring.cloud.config.tls.keystore
  • spring.config.import
  • spring.application.name
  • spring.jmx.enabled
  • management.endpoints.jmx.exposure.include

Precaución

No coloque estas propiedades en los archivos de aplicación de Config Server.

Creación de los archivos del servidor de configuración

Azure Spring Apps admite Azure DevOps Server, GitHub, GitLab y Bitbucket para almacenar los archivos de Config Server. Cuando el repositorio esté listo, podrá crear los archivos de configuración y almacenarlos en él.

Algunas propiedades configurables solo están disponibles para ciertos tipos. En las siguientes secciones se describen las propiedades de cada tipo de repositorio.

Nota:

Si no se especifica una etiqueta para Config Server, se le asignará la etiqueta predeterminada master (en el Git). Sin embargo, en GitHub, la rama predeterminada se ha cambiado recientemente de master a main. Para evitar errores de Config Server de Azure Spring Apps, preste atención a la etiqueta predeterminada al configurar Config Server con GitHub, especialmente para los repositorios recién creados.

El uso de un guion (-) para separar palabras es la única convención de nomenclatura que se admite actualmente. Por ejemplo, puede usar default-label, pero no defaultLabel.

Repositorio público

Si se usa un repositorio público, las propiedades configurables son más limitadas que con un repositorio privado.

En la tabla siguiente se enumeran las propiedades configurables que puede usar para configurar un repositorio de Git público:

Propiedad Obligatorio Característica
uri El URI del repositorio de Git que se usa como back-end de Config Server. Debe comenzar por http://, https://, git@ o ssh://.
default-label No Etiqueta predeterminada del repositorio de Git. Debe ser el nombre de rama, el nombre de etiqueta o el id. de confirmación del repositorio.
search-paths No Matriz de cadenas que se usan para buscar en subdirectorios del repositorio de Git.

Repositorio privado con autenticación SSH

En la tabla siguiente se enumeran las propiedades configurables que puede usar para configurar un repositorio de Git privado con SSH:

Propiedad Obligatorio Característica
uri El URI del repositorio de Git que se usa como back-end de Config Server. Debe comenzar por http://, https://, git@ o ssh://.
default-label No Etiqueta predeterminada del repositorio de Git. Debe ser el nombre de rama, el nombre de etiqueta o el identificador de confirmación del repositorio.
search-paths No Matriz de cadenas que se usa para buscar en subdirectorios del repositorio de Git.
private-key No Clave privada SSH para acceder al repositorio de Git. Necesario cuando el URI comienza por git@ o ssh://.
host-key No La clave de host del servidor del repositorio de Git. No debe incluir el prefijo del algoritmo, tal y como se describe en host-key-algorithm.
host-key-algorithm No Algoritmo de la clave de host. Debe ser ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 o ecdsa-sha2-nistp521. Se requiere solo si host-key existe.
strict-host-key-checking No El indicador de Config Server que muestra si no se puede iniciar al usar el host-key privado. Debería ser true (valor predeterminado) o false.

Repositorio privado con autenticación básica

En la tabla siguiente se enumeran las propiedades configurables que puede usar para configurar un repositorio de Git privado con autenticación básica:

Propiedad Obligatorio Característica
uri El URI del repositorio de Git que se usa como back-end de Config Server. Debe comenzar por http://, https://, git@ o ssh://.
default-label No Etiqueta predeterminada del repositorio de Git. Debe ser el nombre de rama, el nombre de etiqueta o el id. de confirmación del repositorio.
search-paths No Matriz de cadenas que se usa para buscar en subdirectorios del repositorio de Git.
username No El nombre de usuario que se usa para acceder al servidor del repositorio de Git. Es necesario cuando el servidor del repositorio de Git admite la autenticación básica HTTP.
password No La contraseña o el token de acceso personal que se emplea para acceder al servidor del repositorio de Git. Es necesario cuando el servidor del repositorio de Git admite la autenticación básica HTTP.

Nota:

Muchos servidores de repositorio de Git admiten el uso de tokens, en lugar de contraseñas, para la autenticación HTTP básica. Algunos repositorios permiten que los tokens se conserven indefinidamente. Pero algunos servidores de repositorio de Git, incluido Azure DevOps Server, obligan a que los tokens expiren en unas horas. Los repositorios que hacen que los tokens expiren no deben usar la autenticación basada en tokens con Azure Spring Apps. Si usa este token, recuerde actualizarlo antes de que expire.

GitHub ha eliminado la compatibilidad con la autenticación de contraseña, por lo que debe usar un token de acceso personal en lugar de la autenticación de contraseña en GitHub. Para más información, consulte Requisitos de autenticación de tokens para las operaciones de Git.

Otros repositorios Git

En la tabla siguiente se enumeran las propiedades configurables que puede usar para configurar repositorios de Git con un patrón:

Propiedad Obligatorio Característica
repos No Mapa que consta de los valores de un repositorio de Git con un nombre determinado.
repos."uri" Sí en repos El URI del repositorio de Git que se usa como back-end de Config Server. Debe comenzar por http://, https://, git@ o ssh://.
repos."name" Sí en repos Un nombre para identificar el repositorio; por ejemplo, team-A o team-B. Se requiere solo si repos existe.
repos."pattern" No Matriz de cadenas que se utiliza para coincidir con un nombre de aplicación. Para cada patrón, use el formato {application}/{profile} con caracteres comodín.
repos."default-label" No Etiqueta predeterminada del repositorio de Git. Debe ser el nombre de rama, el nombre de etiqueta o el IOD de confirmación del repositorio.
repos."search-paths" No Matriz de cadenas que se usa para buscar en subdirectorios del repositorio de Git.
repos."username" No El nombre de usuario que se usa para acceder al servidor del repositorio de Git. Es necesario cuando el servidor del repositorio de Git admite la autenticación básica HTTP.
repos."password" No La contraseña o el token de acceso personal que se emplea para acceder al servidor del repositorio de Git. Es necesario cuando el servidor del repositorio de Git admite la autenticación básica HTTP.
repos."private-key" No Clave privada SSH para acceder al repositorio de Git. Obligatorio cuando el URI comienza por git@ o ssh://.
repos."host-key" No La clave de host del servidor del repositorio de Git. No debe incluir el prefijo del algoritmo, tal y como se describe en host-key-algorithm.
repos."host-key-algorithm" No Algoritmo de la clave de host. Debe ser ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 o ecdsa-sha2-nistp521. Se requiere solo si host-key existe.
repos."strict-host-key-checking" No Indica si la instancia de Config Server no se inicia al usar el valor de tipo privado host-key. Debería ser true (valor predeterminado) o false.

En la tabla siguiente se muestran algunos ejemplos de patrones para configurar el servicio con un repositorio adicional opcional. Para obtener más información, consulte la sección Repositorios adicionales de este artículo y la sección Coincidencia de patrones y varios repositorios de Spring Cloud Config.

Patrones Descripción
test-config-server-app-0/* El patrón y el URI del repositorio coincide con una aplicación de Spring Boot denominada test-config-server-app-0 con cualquier perfil.
test-config-server-app-1/dev El patrón y el URI del repositorio coincide con una aplicación de Spring Boot denominada test-config-server-app-1 con un perfil de desarrollador.
test-config-server-app-2/prod El patrón y el URI del repositorio coincide con una aplicación de Spring Boot denominada test-config-server-app-2 con un perfil de producción.

Recorte de pantalla de Azure Portal que muestra la página Config Server con la columna Patrones de la tabla Repositorios adicionales resaltada.

Recorte de pantalla de Azure Portal que muestra la página Config Server con la columna Patrones de la tabla Repositorios adicionales resaltada.

Configuración de un repositorio de Git en Config Server

Una vez que los archivos de configuración se han guardado en un repositorio, siga estos pasos para conectar Azure Spring Apps al repositorio:

  1. Inicie sesión en Azure Portal.

  2. Vaya a la página Información general de Azure Spring Apps.

  3. Seleccione Spring Cloud Config Server en el panel de navegación.

  4. En la sección Repositorio predeterminado, establezca el valor del URI en https://github.com/Azure-Samples/piggymetrics-config.

  5. Seleccione Validar.

    Recorte de pantalla de Azure Portal que muestra la página Config Server.

    Recorte de pantalla de Azure Portal que muestra la página Config Server.

  6. Cuando finalice la validación, seleccione Aplicar para guardar los cambios.

    Recorte de pantalla de Azure Portal que muestra la página Config Server con el botón Aplicar resaltado.

    Recorte de pantalla de Azure Portal que muestra la página Config Server con el botón Aplicar resaltado.

La actualización de la configuración puede tardar unos minutos. Cuando se haya completado la configuración, debería recibir una notificación.

Especificación de la información del repositorio directamente en Azure Portal

Puede especificar la información del repositorio para el repositorio predeterminado y, opcionalmente, para repositorios adicionales.

Repositorio predeterminado

Siga los pasos de esta sección para especificar la información del repositorio de un repositorio público o privado. Para un repositorio privado, puede usar la autenticación básica o SSH.

Siga estos pasos para escribir la información del repositorio para un repositorio público:

  1. en la sección Repositorio predeterminado, en el cuadro URI, pegue el identificador URI del repositorio.
  2. Para el valor Etiqueta, escriba config.
  3. Asegúrese de que la configuración Autenticación sea Pública.
  4. Seleccione Aplicar.

Siga estos pasos para escribir la información del repositorio para un repositorio privado mediante la autenticación básica basada en tokens o contraseñas:

  1. en la sección Repositorio predeterminado, en el cuadro URI, pegue el identificador URI del repositorio.

  2. En Autenticación, seleccione Editar autenticación.

  3. En el panel Editar autenticación, en la lista desplegable Tipo de autenticación, seleccione HTTP Básico.

  4. Escriba el nombre de usuario y la contraseña o el token para conceder acceso a Azure Spring Apps.

  5. Seleccione OK (Aceptar) y Apply (Aplicar) para terminar de configurar la instancia de Config Server.

    Recorte de pantalla de Azure Portal que muestra la sección Repositorio predeterminado de la configuración de autenticación para la autenticación Básica.

    Nota:

    Muchos servidores de repositorio de Git admiten el uso de tokens, en lugar de contraseñas, para la autenticación HTTP básica. Algunos repositorios permiten que los tokens se conserven indefinidamente. Pero algunos servidores de repositorio de Git, incluido Azure DevOps Server, obligan a que los tokens expiren en unas horas. Los repositorios que hacen que los tokens expiren no deben usar la autenticación basada en tokens con Azure Spring Apps. Si usa este token, recuerde actualizarlo antes de que expire.

    GitHub ha eliminado la compatibilidad con la autenticación de contraseña, por lo que debe usar un token de acceso personal en lugar de la autenticación de contraseña en GitHub. Para más información, consulte Requisitos de autenticación de tokens para las operaciones de Git.

Siga estos pasos para escribir la información del repositorio para un repositorio privado mediante SSH:

  1. en la sección Repositorio predeterminado, en el cuadro URI, pegue el identificador URI del repositorio.

  2. En Autenticación, seleccione Editar autenticación.

  3. En el panel Editar autenticación, en la lista desplegable Tipo de autenticación, seleccione SSH.

  4. Escriba la clave privada. También puede especificar la clave de host y el algoritmo de claves de host.

  5. Incluya la clave pública en el repositorio de Config Server.

  6. Seleccione OK (Aceptar) y Apply (Aplicar) para terminar de configurar la instancia de Config Server.

    Recorte de pantalla de Azure Portal que muestra la sección Repositorio predeterminado de la configuración de autenticación para la autenticación de SSH.

Repositorios adicionales

Si desea configurar el servicio con un repositorio adicional opcional, siga estos pasos:

  1. Especifique la configuración de URI y la Autenticación como lo hizo para el repositorio predeterminado. Asegúrese de incluir la configuración de Nombre para el patrón.
  2. Seleccione Aplicar para adjuntar el repositorio a la instancia.

Configuración de un repositorio de Git mediante la importación de un archivo YAML

Si ha escrito un archivo YAML con la configuración del repositorio, puede importarlo directamente a Azure Spring Apps desde la máquina local. En el ejemplo siguiente se muestra un archivo YAML simple para un repositorio privado con autenticación básica:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/azure-spring-apps-samples-pr/config-server-repository.git
          username: <username>
          password: <password/token>

Siga estos pasos para importar un archivo YAML:

  1. Seleccione el botón Importar configuración y, después, seleccione el archivo YAML en el directorio del proyecto. Seleccione Import (Importar).

    Recorte de pantalla de Azure Portal que muestra el panel de configuración Importar Config Server.

    Recorte de pantalla de Azure Portal que muestra el panel de configuración Importar Config Server.

    El panel Notificaciones muestra una operación async. Config Server debe informar de que se ha realizado correctamente después de 1 o 2 minutos. La información del archivo YAML se muestra en Azure Portal.

  2. Seleccione Aplicar para finalizar la importación.

Configuración de Azure Repos en Config Server

Azure Spring Apps puede acceder a los repositorios de Git públicos, protegidos mediante SSH o protegidos mediante la autenticación HTTP básica. La autenticación básica HTTP es la opción más fácil para crear y administrar repositorios con Azure Repos.

Obtención de la dirección URL y credenciales del repositorio

Siga estos pasos para obtener las credenciales y la dirección URL del repositorio:

  1. En el portal de Azure Repos de su proyecto, seleccione el botón Clonar.

  2. Copie la dirección URL de clonación del cuadro de texto. Esta dirección URL suele tener el formato siguiente:

    https://<organization name>@dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    Quite todo lo que hay después de https:// y antes de dev.azure.com, incluido el símbolo @. La dirección URL resultante debe tener el siguiente formato:

    https://dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    Guarde esta dirección URL para usarla más adelante.

  3. Seleccione Generar credenciales de Git para mostrar un nombre de usuario y una contraseña. Guarde este nombre de usuario y contraseña para usarlo en la sección siguiente.

Configuración de un repositorio de Git en Config Server

Siga los siguientes pasos para configurar el enrutamiento:

  1. Inicie sesión en Azure Portal.

  2. Vaya a la página Información general de Azure Spring Apps.

  3. Seleccione el servicio que desea configurar.

  4. En el panel izquierdo de la página del servicio, en Configuración, seleccione la pestaña Spring Cloud Config Server.

  5. Siga estos pasos para configurar el repositorio que creó:

    • Agregue el URI del repositorio que guardó anteriormente.
    • Seleccione la configuración en Autenticación para abrir el panel Edición de autenticación.
    • En Tipo de autenticación, seleccione HTTP básica.
    • En Nombre de usuario, especifique el nombre de usuario que guardó anteriormente.
    • En Contraseña, especifique la contraseña que guardó anteriormente.
    • Seleccione Aceptar y espere a que finalice la operación.

    Recorte de pantalla de Azure Portal que muestra las opciones de configuración del repositorio predeterminadas con el URI y el tipo de autenticación resaltados.

Enlazar una aplicación a Spring Cloud Config Server

Use el siguiente comando para enlazar una aplicación a Spring Cloud Config Server, lo que permite que la aplicación extraiga configuraciones de Config Server.

az spring config-server bind \
    --resource-group <resource-group> \
    --service <service-name> \
    --app <app-name>

También puede configurar los enlaces de aplicación desde Azure Portal, como se muestra en la captura de pantalla siguiente:

Captura de pantalla de Azure Portal que muestra la página Spring Cloud Config Server con la lista desplegable Enlace de aplicaciones resaltada.

Nota:

Estos cambios tardan unos minutos en propagarse a todas las aplicaciones cuando cambia el estado del servidor de configuración.

Si cambia el estado de enlace o desenlace, debe reiniciar o volver a implementar la aplicación.

Ahora puede optar por enlazar la aplicación a Spring Cloud Config Server directamente al crear una aplicación mediante el siguiente comando:

az spring app create \ 
    --resource-group <resource-group> \ 
    --service <service-name> \ 
    --name <app-name> \ 
    --bind-config-server

También puede enlazar la aplicación a Spring Cloud Config Server desde Azure Portal, como se muestra en la captura de pantalla siguiente:

Captura de pantalla de Azure Portal que muestra la página Crear aplicación con la lista desplegable Enlazar resaltada.

Eliminación de la configuración

Seleccione Restablecer en la pestaña Spring Cloud Config Server para borrar la configuración existente. Elimine la configuración de Config Server si desea conectar la instancia de Config Server a otro origen, por ejemplo, cuando la pasa de GitHub a Azure DevOps Server.

Actualizar Config Server

Cuando se cambian las propiedades, es necesario notificarlo a los servicios que las consumen antes de que se puedan realizar cambios. La solución predeterminada para Spring Cloud Config Server es desencadenar manualmente el evento de actualización, lo que puede no ser factible si hay muchas instancias de aplicación. Para más información, vea Configuración centralizada.

Como alternativa, puede actualizar automáticamente los valores de Config Server al dejar que el cliente de configuración examine los cambios en función de una actualización interna.

Siga estos pasos para actualizar automáticamente los valores de Config Server:

  1. Registre una tarea programada para actualizar el contexto en un intervalo determinado, como se muestra en el ejemplo siguiente:

    @ConditionalOnBean({RefreshEndpoint.class})
    @Configuration
    @AutoConfigureAfter({RefreshAutoConfiguration.class, RefreshEndpointAutoConfiguration.class})
    @EnableScheduling
    public class ConfigClientAutoRefreshConfiguration implements SchedulingConfigurer {
        @Value("${spring.cloud.config.refresh-interval:60}")
        private long refreshInterval;
        @Value("${spring.cloud.config.auto-refresh:false}")
        private boolean autoRefresh;
        private RefreshEndpoint refreshEndpoint;
        public ConfigClientAutoRefreshConfiguration(RefreshEndpoint refreshEndpoint) {
            this.refreshEndpoint = refreshEndpoint;
        }
        @Override
        public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
            if (autoRefresh) {
                // set minimal refresh interval to 5 seconds
                refreshInterval = Math.max(refreshInterval, 5);
                scheduledTaskRegistrar.addFixedRateTask(() -> refreshEndpoint.refresh(), refreshInterval * 1000);
            }
        }
    }
    
  2. Habilite la actualización automática y establezca el intervalo de actualización adecuado en el archivo application.yml. En el ejemplo siguiente, el cliente sondea un cambio de configuración cada 60 segundos, que es el valor mínimo que puede establecer para un intervalo de actualización.

    De forma predeterminada, la actualización automática se establece en false y el intervalo de actualización se establece en 60 seconds.

    spring:
        cloud:
             config:
              auto-refresh: true
              refresh-interval: 60
    management:
        endpoints:
             web:
              exposure:
                include:
                  - refresh
    
  3. Agregue @RefreshScope al código. En el ejemplo siguiente, la variable connectTimeout se actualiza automáticamente cada 60 segundos.

    @RestController
    @RefreshScope
    public class HelloController {
        @Value("${timeout:4000}")
        private String connectTimeout;
    }
    

Para obtener más información, consulte la muestra config-client-polling.

Administración de Spring Cloud Config Server en una instancia de plan Enterprise existente

Puede habilitar y deshabilitar Spring Cloud Config Server después de la creación del servicio mediante Azure Portal o la CLI de Azure. Antes de deshabilitar Spring Cloud Config Server, es necesario desenlazar todas las aplicaciones.

Siga estos pasos para habilitar o deshabilitar Spring Cloud Config Server:

  1. Vaya a la instancia de servicio y seleccione Spring Cloud Config Server.

  2. Seleccione Administrar.

  3. Seleccione o anule la selección de Habilitar Spring Cloud Config Server y, a continuación, seleccione Guardar.

    Recorte de pantalla de Azure Portal que muestra el panel Administrar con la opción Habilitar Config Server resaltada.

  4. Ahora puede ver el estado de Spring Cloud Config Server en la página Spring Cloud Config Server.

Azure Spring Apps