Compartir a través de


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 permiten agrupar claves relacionadas mediante un prefijo común en sus nombres. Los prefijos pueden incluir varios segmentos separados por delimitadores como / o :, formando un espacio de nombres jerárquico. Este enfoque es útil al almacenar claves de configuración para varias aplicaciones o microservicios dentro de un único almacén de App Configuration.

Es importante recordar que el código de aplicación hace referencia directamente a las claves para recuperar sus valores correspondientes. Por lo tanto, las claves deben permanecer estables para evitar cambios en el código. Si es necesario, puede usar el proveedor de App Configuration para recortar los prefijos de clave en tiempo de ejecución.

Las etiquetas permiten crear variaciones de una clave, como versiones diferentes o configuraciones específicas del entorno. Al asignar etiquetas, puede mantener varios valores para la misma clave. A continuación, la aplicación puede recuperar diferentes conjuntos de valores clave especificando la etiqueta adecuada, lo que permite que las referencias de clave en el código sigan siendo coherentes.

Composiciones de pares clave-valor

App Configuration trata cada clave almacenada dentro de ella como una entidad independiente. No deduce las relaciones entre claves ni hereda valores en función de la jerarquía de claves. Sin embargo, puede agregar varios conjuntos de claves de forma eficaz mediante etiquetas combinadas con el apilamiento de configuración en la aplicación.

Considere un ejemplo en el que tiene una configuración denominada TestApp:MySetting, cuyo valor varía en función del entorno. Puede crear dos claves con el mismo nombre, pero asignar etiquetas diferentes, una sin etiqueta (valor predeterminado) y otra etiqueta Desarrollo. La clave sin etiqueta contiene el valor predeterminado, mientras que la clave etiquetada contiene el valor específico del entorno.

En el código de la aplicación, primero carga los valores de clave predeterminados (sin etiquetar) y, a continuación, carga los valores de clave específicos del entorno mediante la etiqueta Desarrollo . Al cargar el segundo conjunto, las claves coincidentes sobrescriben los valores cargados anteriormente. Este enfoque permite "apilar" varios conjuntos de configuración, con el último valor cargado teniendo prioridad. Los proveedores de App Configuration en los lenguajes y plataformas admitidos ofrecen esta funcionalidad de apilamiento.

En el ejemplo siguiente se muestra cómo implementar la composición de clave-valor en una aplicación .NET:

configBuilder.AddAzureAppConfiguration(options => {
    options.Connect(new Uri("<your-app-config-endpoint>"), new DefaultAzureCredential())
           // Load all keys that start with `TestApp:` and compose with two different labels
           .Select(keyFilter: "TestApp:*", labelFilter: LabelFilter.Null)
           .Select(keyFilter: "TestApp:*", labelFilter: "Development");
});

Uso de etiquetas para habilitar diferentes configuraciones para distintos entornos proporciona un ejemplo completo.

Actualización de configuración

Azure App Configuration admite la actualización dinámica de la configuración sin necesidad de reiniciar la aplicación. Los proveedores de App Configuration pueden supervisar los cambios de configuración mediante dos enfoques:

Supervisión de todas las claves seleccionadas

En este enfoque, el proveedor supervisa todas las claves seleccionadas. Si se detecta un cambio en alguno de los pares clave-valor seleccionados, se vuelve a cargar toda la configuración. Este enfoque garantiza actualizaciones inmediatas sin necesidad de modificaciones clave adicionales.

configBuilder.AddAzureAppConfiguration(options =>
{
    options.Connect(new Uri("<your-app-config-endpoint>"), new DefaultAzureCredential())
           // Load all keys that start with `TestApp:` and have no label
           .Select(keyFilter: "TestApp:*", labelFilter: LabelFilter.Null)
           .ConfigureRefresh(refreshOptions =>
           {
               // Trigger full configuration refresh when any selected key changes.
               refreshOptions.RegisterAll();
           });
});

Supervisión de una clave centinela

Como alternativa, puede supervisar una clave individual, a menudo denominada clave centinela. Este enfoque es útil al actualizar varios valores de clave. Al actualizar la clave centinela solo después de que se completen todos los demás cambios de configuración, asegúrese de que la aplicación vuelve a cargar la configuración una vez, manteniendo la coherencia.

configBuilder.AddAzureAppConfiguration(options =>
{
    options.Connect(new Uri("<your-app-config-endpoint>"), new DefaultAzureCredential())
           // Load all keys that start with `TestApp:` and have no label
           .Select(keyFilter: "TestApp:*", labelFilter: LabelFilter.Null)
           .ConfigureRefresh(refreshOptions =>
           {
               // Trigger full configuration refresh only if the `SentinelKey` changes.
               refreshOptions.Register("SentinelKey", refreshAll: true);
           });
});

Ambos enfoques están disponibles a través de proveedores de configuración de aplicaciones en los idiomas y plataformas compatibles.

Para reducir el riesgo de incoherencias de configuración, use instantáneas de configuración para garantizar la integridad de la configuración.

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 Azure App Configuration, puede autenticarse mediante una cadena de conexión o un identificador de Microsoft Entra. Aunque las cadenas de conexión están disponibles fácilmente en Azure Portal, contienen información de credenciales y deben tratarse como secretos. Si elige este enfoque, almacene la cadena de conexión de forma segura en Azure Key Vault y asegúrese de que la aplicación se autentica en Key Vault para recuperarla.

Un enfoque más seguro y recomendado es usar la autenticación de Id. de Microsoft Entra. Si la aplicación está hospedada en Azure(por ejemplo, en Azure Kubernetes Service, App Service o Azure Functions), puede usar identidades administradas proporcionadas por el identificador de Microsoft Entra. Las identidades administradas eliminan la necesidad de administrar los secretos explícitamente. Con este método, la aplicación solo requiere la dirección URL del punto de conexión de App Configuration, que se puede incrustar de forma segura en el código de la aplicación o los archivos de configuración.

Para más información, consulte Uso de identidades administradas para acceder a App Configuration.

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 al clúster de AKS, tiene la opción de incorporar datos de App Configuration al clúster de Kubernetes utilizando Helm mediante 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:

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.

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 actualización, especialmente si los valores de configuración no cambian con frecuencia. Especifique un nuevo intervalo de actualización mediante el método SetRefreshInterval.

  • 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 adopta la configuración como código y administra las configuraciones en GitHub o Azure DevOps, puede configurar la importación en curso de archivos de configuración mediante Acciones de GitHub o Tarea de Importación de la 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. Para obtener más información, consulte Resistencia y recuperación ante desastres.

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 usar 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. Para obtener más información, consulte Resistencia y recuperación ante desastres.
  • 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. También puede hacer referencia al código de ejemplo para la configuración de aplicaciones multiusuario.

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 el almacén 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.
  • Para otros usuarios, puede importar 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.

Pasos siguientes