Procedimientos recomendados para Azure App Configuration
En este artículo se describen patrones comunes y procedimientos recomendados cuando se usa Azure App Configuration.
Agrupaciones de claves
App Configuration proporciona dos opciones para organizar las claves:
- Prefijos de clave
- Etiquetas
Puede usar una o ambas opciones para agrupar sus claves.
Los prefijos de clave son lo que va al principio de la clave. Puede agrupar lógicamente un conjunto de claves utilizando el mismo prefijo en sus nombres. Los prefijos pueden contener varios componentes conectados por un delimitador, como /
, de forma similar a una ruta de dirección de URL, para formar un espacio de nombres. Estas jerarquías son útiles cuando se están almacenando las claves para muchas aplicaciones y microservicios en un almacén de App Configuration.
Una cuestión importante que debe tener en cuenta es que las claves son a lo que el código de aplicación hace referencia para recuperar los valores de la configuración correspondiente. Las claves no deberían cambiar o bien tendrá que modificar el código cada vez que suceda.
Las etiquetas son un atributo en las claves. Se usan para crear variantes de una clave. Por ejemplo, puede asignar etiquetas a varias versiones de una clave. Una versión podría ser una iteración, un entorno o cualquier otra información contextual. La aplicación puede solicitar un conjunto completamente distinto de los valores de clave al especificar otra etiqueta. Como resultado, todas las referencias de clave permanecen sin cambios en el código.
Composiciones de pares clave-valor
App Configuration trata todas las claves que se almacenan con él como entidades independientes. App Configuration no intenta deducir ninguna relación entre las claves o heredar valores de clave en función de su jerarquía. Sin embargo, es posible agregar varios conjuntos de claves mediante el uso de etiquetas junto con la configuración correcta del apilamiento en el código de la aplicación.
Veamos un ejemplo. Suponga que tiene una opción denominada Asset1 (Recurso1), cuyo valor puede variar según el entorno de desarrollo. Cree una clave denominada "Asset1" con una etiqueta vacía y una etiqueta denominada "Development" (Desarrollo). En la primera etiqueta, coloca el valor predeterminado de Asset1 y debe incluir un valor específico para "Development" en la última.
En el código, primero recupera los valores de clave sin ninguna etiqueta y, a continuación, recupera el mismo conjunto de valores de clave con la etiqueta "Development". Cuando se recuperan los valores la segunda vez, se sobrescriben los valores anteriores de las claves. El sistema de configuración de .NET permite "apilar" varios conjuntos de datos de configuración en la parte superior entre sí. Si una clave existe en más de un conjunto, se utiliza el último conjunto que la contiene. Con un marco de programación moderno, como .NET, obtiene esta funcionalidad de apilamiento de forma gratuita si usa un proveedor de configuración nativo para tener acceso a App Configuration. El fragmento de código siguiente le muestra cómo puede implementar el apilamiento en una aplicación .NET:
// Augment the ConfigurationBuilder with Azure App Configuration
// Pull the connection string from an environment variable
configBuilder.AddAzureAppConfiguration(options => {
options.Connect(configuration["connection_string"])
.Select(KeyFilter.Any, LabelFilter.Null)
.Select(KeyFilter.Any, "Development");
});
Uso de etiquetas para habilitar diferentes configuraciones para distintos entornos proporciona un ejemplo completo.
Referencias a datos externos
App Configuration está diseñado para almacenar los datos de configuración que normalmente se guardarían en archivos de configuración o variables de entorno. Sin embargo, algunos tipos de datos pueden ser más adecuados para residir en otros orígenes. Por ejemplo, almacene secretos en el almacén de claves, archivos en Azure Storage, información de miembros en grupos de Microsoft Entra o listas de clientes en una base de datos.
Aún puede aprovechar App Configuration si guarda una referencia a datos externos en un par clave-valor. Puede utilizar el tipo de contenido a fin de diferenciar cada origen de datos. Cuando la aplicación lee una referencia, carga los datos reales del origen al que se hace referencia, suponiendo que tenga el permiso necesario para el origen. En caso de que cambie la ubicación de los datos externos, solo tendrá que actualizar la referencia en App Configuration en lugar de actualizar y volver a implementar toda la aplicación.
La característica de referencias de Key Vault de App Configuration es un ejemplo en este caso. Permite que los secretos necesarios para una aplicación se actualicen según sea necesario mientras los propios secretos subyacentes permanecen en Key Vault.
Arranque de App Configuration
Para acceder a un almacén de App Configuration, puede usar su cadena de conexión, que está disponible en Azure Portal. Dado que las cadenas de conexión contienen información de credenciales, se consideran secretos. Estos secretos deben almacenarse en Azure Key Vault y el código debe autenticarse en Key Vault para recuperarlos.
Una mejor opción es usar la característica identidades administradas en el identificador de Microsoft Entra ID. Con las identidades administradas, solo necesita la dirección URL del punto de conexión de App Configuration para el acceso de arranque a su almacén de App Configuration. Puede insertar la dirección URL en el código de aplicación (por ejemplo, en el archivo appsettings.json). Consulte Uso de identidades administradas para acceder a App Configuration para más información.
Acceso de Azure Kubernetes Service a App Configuration
Las siguientes opciones están disponibles para las cargas de trabajo hospedadas en Azure Kubernetes Service (AKS) para acceder a Azure App Configuration. Estas opciones también se aplican a Kubernetes en general.
Agregue el Proveedor de Kubernetes de Azure App Configuration al clúster de AKS. El proveedor de Kubernetes se ejecuta como un pod en el clúster. Puede construir ConfigMaps y Secretos a partir de valores clave y referencias de Key Vault en el almacén de App Configuration. ConfigMap y Secret se pueden consumir como variables de entorno o archivos montados sin requerir ninguna modificación en el código de su aplicación. Si tiene varias aplicaciones ejecutándose en el mismo clúster de AKS, todas pueden acceder a los ConfigMaps y secretos generados, lo que elimina la necesidad de realizar solicitudes individuales a App Configuration. El proveedor de Kubernetes también admite actualizaciones de configuración dinámicas. Esta es la opción recomendada si es factible para usted.
Actualice la aplicación para usar las bibliotecas del proveedor de Azure App Configuration. Las bibliotecas de proveedores están disponibles en muchos marcos y lenguajes, como ASP.NET, .NET, Java Spring, JavaScript/Node.js y Python. Este enfoque proporciona acceso total a las funcionalidades de App Configuration, incluida la configuración dinámica y la administración de características. Tiene un control pormenorizado de los datos que se van a cargar y desde qué almacén de App Configuration se va a cargar para cada aplicación.
Integrar con la implementación de Kubernetes mediante Helm. Si no desea actualizar su aplicación o agregar un nuevo pod a su clúster de AKS, tiene la opción de llevar datos de App Configuration a su clúster de Kubernetes mediante Helm a través de la implementación. Este enfoque permite a la aplicación seguir accediendo a la configuración desde variables y secretos de Kubernetes. Puede ejecutar la actualización de Helm siempre que quiera que la aplicación incorpore nuevos cambios de configuración.
Acceso a App Configuration con App Service o Azure Functions
Use el proveedor de App Configuration o las bibliotecas del SDK para acceder a App Configuration directamente desde la aplicación. Este enfoque proporciona acceso total a las funcionalidades de App Configuration, incluida la configuración dinámica y la administración de características. La aplicación que se ejecuta en App Service o Azure Functions puede obtener acceso al almacén de App Configuration con cualquiera de los métodos siguientes:
- Habilite la identidad administrada en App Service o Azure Functions y concédale acceso al almacén de App Configuration. Para más información, consulte Uso de identidades administradas para acceder a App Configuration.
- En Azure Portal, escriba la cadena de conexión al almacén de App Configuration en Configuración de aplicación de App Service o Azure Functions. Para mejorar la seguridad, almacene la cadena de conexión en Key Vault y haga referencia a ella desde App Service o Azure Functions.
También puede hacer que los datos de App Configuration sean accesibles para la aplicación como Configuración de aplicación o variables de entorno. Con este enfoque, puede evitar cambiar el código de la aplicación.
- Agregue referencias a los datos de App Configuration en Configuración de aplicación de App Service o Azure Functions. App Configuration ofrece herramientas para exportar una colección de pares clave-valor como referencias a la vez. Para más información, consulte Uso de referencias de App Configuration para App Service y Azure Functions.
- Exporte los datos de App Configuration a la configuración de la aplicación de App Service o Azure Functions sin seleccionar la opción de exportar como referencia. Vuelva a exportar los datos cada vez que realice nuevos cambios en App Configuration si desea que la aplicación los recoja.
Reducción de las solicitudes realizadas a App Configuration
Una cantidad excesiva de solicitudes a App Configuration puede dar lugar a cargos por superar el límite de ancho de banda o el de uso. Para reducir el número de solicitudes realizadas:
Aumente el intervalo de la actualización, especialmente si los valores de configuración no cambian con frecuencia. Especifique un nuevo intervalo de actualización mediante el método
SetCacheExpiration
.Vea una sola clave de Sentinel, en lugar de ver claves individuales. Actualice toda la configuración solo si cambia la clave de Sentinel. Consulte Uso de la configuración dinámica en una aplicación de ASP.NET Core para obtener un ejemplo.
Use el proveedor de Kubernetes de App Configuration si ejecuta varias cargas de trabajo en un clúster de Kubernetes, cada una de las cuales extrae datos de App Configuration individualmente. El proveedor de Kubernetes recupera datos de App Configuration y los pone a disposición como ConfigMaps y Secrets de Kubernetes. De este modo, las cargas de trabajo pueden acceder a los datos a través de ConfigMaps y Secrets sin necesidad de extraer datos de App Configuration por separado.
Habilite la replicación geográfica del almacén de App Configuration y distribuya las solicitudes entre varias réplicas. Por ejemplo, utilice una réplica distinta de cada región geográfica para una aplicación implementada globalmente. Cada réplica de App Configuration tiene una cuota de solicitud independiente. Esta configuración proporciona un modelo para la escalabilidad y una mayor resistencia frente a interrupciones transitorias y regionales.
Importación de datos de configuración en App Configuration
App Configuration ofrece la opción de importación masiva de las opciones de los archivos de configuración actuales mediante Azure Portal o la CLI de Azure. También puede usar las mismas opciones para exportar pares clave-valor de App Configuration, por ejemplo, entre almacenes relacionados. Si ha adoptado Configuración como código y administra las configuraciones en GitHub o Azure DevOps, puede configurar la importación de archivos de configuración en curso mediante Acciones de GitHub o Tarea de importación de canalización de Azure.
Implementación en varias regiones en App Configuration
Si la aplicación se implementa en varias regiones, se recomienda habilitar la replicación geográfica del almacén de App Configuration. Puede permitir que la aplicación se conecte principalmente a la réplica que coincida con la región en la que se implementan las instancias de la aplicación y permitirles conmutar por error a las réplicas de otras regiones. Esta configuración minimiza la latencia entre la aplicación y App Configuration, distribuye la carga a medida que cada réplica tiene cuotas de limitación independientes y mejora la resistencia de la aplicación frente a interrupciones transitorias y regionales. Vea Resistencia y recuperación ante desastres para más información.
Creación de aplicaciones con alta resistencia
Las aplicaciones suelen depender de la configuración para empezar, lo que hace que la alta disponibilidad de Azure App Configuration sea fundamental. Para mejorar la resistencia, las aplicaciones deben aprovechar las características de confiabilidad de App Configuration y considerar la posibilidad de tomar las siguientes medidas en función de sus requisitos específicos.
- Aprovisionamiento en regiones con compatibilidad con la zona de disponibilidad de Azure. Las zonas de disponibilidad permiten que las aplicaciones sean resistentes a las interrupciones del centro de datos. App Configuration ofrece redundancia de zona para todos los clientes sin cargos adicionales. Se recomienda crear el almacén de App Configuration en regiones compatibles con zonas de disponibilidad. Puede encontrar una lista de regiones donde App Configuration ha habilitado la compatibilidad con zonas de disponibilidad.
- Habilite la replicación geográfica y permita que la aplicación conmute por error o distribuya la carga entre réplicas. Esta configuración proporciona un modelo para escalabilidad y resistencia mejorada frente a errores transitorios y interrupciones regionales. Vea Resistencia y recuperación ante desastres para más información.
- Implemente la configuración con prácticas de implementación seguras. Los cambios de configuración incorrectos o accidentales pueden provocar con frecuencia el tiempo de inactividad de la aplicación. Debe evitar realizar cambios de configuración que afecten directamente a la producción desde, por ejemplo, Azure Portal siempre que sea posible. En los procedimientos de implementación seguros (SDP), se usa un modelo de implementación de exposición progresiva para minimizar el radio potencial de explosión de problemas causados por la implementación. Si adopta SDP, puede crear y probar una instantánea de configuración antes de implementarla en producción. Durante la implementación, puede actualizar instancias de la aplicación para seleccionar progresivamente la nueva instantánea. Si se detectan problemas, puede revertir el cambio mediante la reimplementación de la última instantánea correcta conocida (LKG). La instantánea es inmutable y garantiza la coherencia en todas las implementaciones. Puede usar instantáneas junto con la configuración dinámica. Use una instantánea para la configuración básica y la configuración dinámica para invalidaciones de configuración de emergencia y marcas de características.
- Incluya la configuración con la aplicación. Si quiere asegurarse de que la aplicación siempre tiene acceso a una copia de la configuración, o si prefiere evitar una dependencia en tiempo de ejecución en App Configuration por completo, puede extraer la configuración de App Configuration durante la compilación o el tiempo de lanzamiento e incluirla con la aplicación. Para más información, consulte ejemplos de integración de App Configuration con la canalización de CI/CD o la implementación de Kubernetes.
- Usar proveedores de App Configuration. Las aplicaciones desempeñan una parte fundamental para lograr una alta resistencia, ya que pueden tener en cuenta los problemas que surgen durante su tiempo de ejecución, como los problemas de red, y responder a errores más rápidamente. Los proveedores de App Configuration ofrecen una variedad de características de resistencia integradas, como la detección automática de réplicas, la conmutación por error de réplica, los reintentos de inicio con tiempos de espera personalizables, el almacenamiento en caché de configuración y las estrategias adaptables para la actualización de configuración confiable. Se recomienda encarecidamente usar proveedores de App Configuration para beneficiarse de estas características. Si no es una opción, considere la posibilidad de implementar características similares en la solución personalizada para lograr el mayor nivel de resistencia.
Aplicaciones cliente en App Configuration
Cuando use App Configuration en aplicaciones cliente, asegúrese de tener en cuenta dos factores principales. En primer lugar, si va a usar la cadena de conexión en una aplicación cliente, corre el riesgo de exponer la clave de acceso del almacén de App Configuration al público. En segundo lugar, la escala típica de una aplicación cliente podría provocar demasiadas solicitudes a su almacén de App Configuration, lo que puede dar lugar a cargos por uso por encima del límite o ciertas limitaciones. Para más información acerca de las limitaciones, consulte las preguntas frecuentes.
Para solucionar estos problemas, se recomienda usar un servicio de proxy entre las aplicaciones cliente y el almacén de App Configuration. El servicio de proxy puede autenticarse de forma segura con el almacén de App Configuration sin que se produzca un problema de seguridad de pérdida de información de autenticación. Para crear cualquier servicio de proxy se puede usar una de las bibliotecas de proveedores de App Configuration, con el fin de que pueda aprovechar las funcionalidades integradas de almacenamiento en caché y actualización para optimizar el volumen de solicitudes enviadas a App Configuration. Para más información sobre el uso de proveedores de App Configuration, consulte los artículos que encontrará en los inicios rápidos y tutoriales. El servicio de proxy sirve la configuración desde su caché a las aplicaciones cliente, con lo que se evitan los dos posibles problemas que se tocan en esta sección.
Aplicaciones multiinquilino en App Configuration
Una aplicación multiinquilino se basa en una arquitectura en la que una instancia compartida de la aplicación atiende a varios clientes o inquilinos. Por ejemplo, puede tener un servicio de correo electrónico que ofrezca a los usuarios cuentas independientes y experiencias personalizadas. Normalmente, la aplicación administra diferentes configuraciones para cada inquilino. Estas son algunas consideraciones de arquitectura para usar App Configuration en una aplicación multiinquilino.
Configuración como código
La configuración como código es una práctica de administración de archivos de configuración en el sistema de control de código fuente, por ejemplo, un repositorio git. Proporciona ventajas como la rastreabilidad y el proceso de aprobación para cualquier cambio de configuración. Si adopta la configuración como código, App Configuration tiene herramientas para ayudarle a administrar los datos de configuración en archivos e implementarlos como parte del proceso de compilación, versión o CI/CD. De este modo, las aplicaciones pueden acceder a los datos más recientes desde los almacenes de App Configuration.
- Para GitHub, puede importar archivos de configuración desde el repositorio de GitHub en el almacén de App Configuration mediante Acciones de GitHub
- Para Azure DevOps, puede incluir la Importación de Azure App Configuration, una tarea de canalización de Azure, en las canalizaciones de compilación o versión para la sincronización de datos.
- También puede importar los archivos de configuración a App Configuration mediante la CLI de Azure como parte del sistema de CI/CD. Para más información, consulte az appconfig kv import.
Este modelo permite incluir pasos de validación y prueba antes de confirmar datos en App Configuration. Si usa varios almacenes de App Configuration, también puede insertar los datos de configuración en ellos incrementalmente o todos a la vez.