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 más información, consulte Migrar el consumo estándar y el plan dedicado de Azure Spring Apps a Azure Container Apps.
Este artículo se aplica a: ✔️ Java ✔️ C#
Este artículo se aplica a: ✔️ Consumo y dedicado estándar (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.
- Una instancia de servicio de Azure Spring Apps ya aprovisionada y en ejecución con el plan Básico o Estándar. Para configurar e iniciar un servicio de Azure Spring Apps, consulte Inicio rápido: Implementación de la primera aplicación en Azure Spring Apps.
- Una instancia de servicio de Azure Spring Apps ya aprovisionada y en ejecución. Para configurar e iniciar un servicio de Azure Spring Apps, consulte Inicio rápido: Compilación e implementación de aplicaciones en Azure Spring Apps mediante el plan Enterprise.
- Git.
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:
Abra Azure Portal.
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.
En la pestaña Componentes administrados, seleccione Habilitar Spring Cloud Config Server.
Especifique otras opciones de configuración y, a continuación, seleccione Revisar y crear.
En la pestaña Revisar y crear, asegúrese de que Habilitar Spring Cloud Config Server esté establecido en Sí. 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 |
Sí | 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 |
Sí | 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 |
Sí | 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. |
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:
Inicie sesión en Azure Portal.
Vaya a la página Información general de Azure Spring Apps.
Seleccione Spring Cloud Config Server en el panel de navegación.
En la sección Repositorio predeterminado, establezca el valor del URI en
https://github.com/Azure-Samples/piggymetrics-config
.Seleccione Validar.
Cuando finalice la validación, seleccione Aplicar para guardar los cambios.
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:
- en la sección Repositorio predeterminado, en el cuadro URI, pegue el identificador URI del repositorio.
- Para el valor Etiqueta, escriba config.
- Asegúrese de que la configuración Autenticación sea Pública.
- 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:
en la sección Repositorio predeterminado, en el cuadro URI, pegue el identificador URI del repositorio.
En Autenticación, seleccione Editar autenticación.
En el panel Editar autenticación, en la lista desplegable Tipo de autenticación, seleccione HTTP Básico.
Escriba el nombre de usuario y la contraseña o el token para conceder acceso a Azure Spring Apps.
Seleccione OK (Aceptar) y Apply (Aplicar) para terminar de configurar la instancia de Config Server.
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:
en la sección Repositorio predeterminado, en el cuadro URI, pegue el identificador URI del repositorio.
En Autenticación, seleccione Editar autenticación.
En el panel Editar autenticación, en la lista desplegable Tipo de autenticación, seleccione SSH.
Escriba la clave privada. También puede especificar la clave de host y el algoritmo de claves de host.
Incluya la clave pública en el repositorio de Config Server.
Seleccione OK (Aceptar) y Apply (Aplicar) para terminar de configurar la instancia de Config Server.
Repositorios adicionales
Si desea configurar el servicio con un repositorio adicional opcional, siga estos pasos:
- 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.
- 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:
Seleccione el botón Importar configuración y, después, seleccione el archivo YAML en el directorio del proyecto. Seleccione Import (Importar).
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.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:
En el portal de Azure Repos de su proyecto, seleccione el botón Clonar.
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 dedev.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.
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:
Inicie sesión en Azure Portal.
Vaya a la página Información general de Azure Spring Apps.
Seleccione el servicio que desea configurar.
En el panel izquierdo de la página del servicio, en Configuración, seleccione la pestaña Spring Cloud Config Server.
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.
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:
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:
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:
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); } } }
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 en60 seconds
.spring: cloud: config: auto-refresh: true refresh-interval: 60 management: endpoints: web: exposure: include: - refresh
Agregue
@RefreshScope
al código. En el ejemplo siguiente, la variableconnectTimeout
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:
Vaya a la instancia de servicio y seleccione Spring Cloud Config Server.
Seleccione Administrar.
Seleccione o anule la selección de Habilitar Spring Cloud Config Server y, a continuación, seleccione Guardar.
Ahora puede ver el estado de Spring Cloud Config Server en la página Spring Cloud Config Server.