Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo discute padrões comuns e práticas recomendadas quando você estiver usando a Configuração de Aplicativo do Azure.
Agrupamentos-chave
A Configuração do Aplicativo fornece duas opções para organizar chaves:
- Prefixos de chave
- Rótulos / Etiquetas
Você pode usar uma ou ambas as opções para agrupar suas chaves.
Os prefixos de chave permitem agrupar chaves relacionadas usando um prefixo comum em seus nomes. Os prefixos podem incluir vários segmentos separados por delimitadores, como /
ou :
, formando um namespace hierárquico. Essa abordagem é útil ao armazenar chaves de configuração para vários aplicativos ou microsserviços em uma única loja de configuração de aplicativo.
É importante lembrar que as chaves são referenciadas diretamente pelo código do aplicativo para recuperar os valores correspondentes. Portanto, as chaves devem permanecer estáveis para evitar alterações no código. Se necessário, você pode usar o provedor de Configuração de Aplicativo para cortar prefixos de chave em tempo de execução.
As etiquetas permitem-lhe criar variações de uma chave, tais como versões diferentes ou definições específicas do ambiente. Ao atribuir rótulos, você pode manter vários valores para a mesma chave. Seu aplicativo pode recuperar diferentes conjuntos de valores-chave especificando o rótulo apropriado, permitindo que suas referências de chave no código permaneçam consistentes.
Composições de valor-chave
A Configuração do Aplicativo trata cada chave armazenada nela como uma entidade independente. Ele não infere relações entre chaves ou herda valores com base na hierarquia de chaves. No entanto, é possível agregar vários conjuntos de chaves de forma eficaz utilizando rótulos combinados com a sobreposição de configurações na sua aplicação.
Considere um exemplo em que você tem uma definição de configuração chamada TestApp:MySetting, cujo valor varia dependendo do ambiente. Você pode criar duas chaves com o mesmo nome, mas atribuir rótulos diferentes, um sem rótulo (padrão) e outro rotulado Desenvolvimento. A chave sem rótulo contém o valor padrão, enquanto a chave rotulada contém o valor específico do ambiente.
No código do aplicativo, você primeiro carrega os valores-chave padrão (não rotulados) e, em seguida, carrega os valores-chave específicos do ambiente usando o rótulo Desenvolvimento . Ao carregar o segundo conjunto, todas as chaves correspondentes substituem os valores carregados anteriormente. Essa abordagem permite que você "empilhar" vários conjuntos de configurações, com o último valor carregado tendo precedência. Os provedores de configuração de aplicativos em idiomas e plataformas suportados oferecem esse recurso de empilhamento.
O exemplo a seguir demonstra como implementar a composição chave-valor em um aplicativo .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");
});
Usar rótulos para habilitar configurações diferentes para ambientes diferentes fornece um exemplo completo.
Atualização de configuração
A Configuração de Aplicativo do Azure dá suporte à atualização de configuração dinâmica sem exigir uma reinicialização do aplicativo. Os provedores de Configuração de Aplicativo podem monitorar as alterações de configuração usando duas abordagens:
Monitorando todas as chaves selecionadas
Nessa abordagem, o provedor monitora todas as chaves selecionadas. Se for detetada uma alteração em qualquer um dos valores-chave selecionados, toda a configuração será recarregada. Essa abordagem garante atualizações imediatas sem exigir modificações adicionais na chave.
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();
});
});
Monitorização de uma chave sentinela
Em alternativa, pode monitorizar uma chave individual, muitas vezes referida como a chave sentinela. Essa abordagem é útil ao atualizar vários valores-chave. Ao atualizar a chave sentinela somente depois que todas as outras alterações de configuração forem concluídas, você garante que seu aplicativo recarregue a configuração apenas uma vez, mantendo a consistência.
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);
});
});
Ambas as abordagens estão disponíveis por meio de provedores de configuração de aplicativos em idiomas e plataformas suportados.
Para reduzir o risco de inconsistências de configuração, use instantâneos de configuração para garantir a integridade da configuração.
Referências a dados externos
A Configuração do Aplicativo foi projetada para armazenar quaisquer dados de configuração que você normalmente salvaria em arquivos de configuração ou variáveis de ambiente. No entanto, alguns tipos de dados podem ser mais adequados para residir noutras fontes. Por exemplo, armazene segredos no Cofre da Chave, arquivos no Armazenamento do Azure, informações de associação em grupos do Microsoft Entra ou listas de clientes em um banco de dados.
Você ainda pode aproveitar a Configuração do Aplicativo salvando uma referência a dados externos em um valor-chave. Você pode usar o tipo de conteúdo para diferenciar cada fonte de dados. Quando seu aplicativo lê uma referência, ele carrega os dados reais da fonte referenciada, supondo que tenha a permissão necessária para a fonte. Se você alterar o local dos dados externos, só precisará atualizar a referência na Configuração do aplicativo em vez de atualizar e reimplantar todo o aplicativo.
O recurso de referência do Cofre de Chaves na Configuração do Aplicativo é um exemplo neste caso. Ele permite que os segredos necessários para um aplicativo sejam atualizados conforme necessário, enquanto os próprios segredos subjacentes permanecem no Cofre da Chave.
Inicialização da Configuração da Aplicação
Para acessar uma loja de Configuração de Aplicativo do Azure, você pode autenticar usando uma cadeia de conexão ou a ID do Microsoft Entra. Embora as cadeias de conexão estejam prontamente disponíveis no portal do Azure, elas contêm informações de credenciais e devem ser tratadas como segredos. Se você escolher essa abordagem, armazene a cadeia de conexão com segurança no Cofre da Chave do Azure e garanta que seu aplicativo seja autenticado no Cofre da Chave para recuperá-la.
Uma abordagem mais segura e recomendada é usar a autenticação do Microsoft Entra ID. Se seu aplicativo estiver hospedado no Azure, como no Serviço Kubernetes do Azure, no Serviço de Aplicativo ou no Azure Functions, você poderá usar identidades gerenciadas fornecidas pela ID do Microsoft Entra. As identidades gerenciadas eliminam a necessidade de gerenciar segredos explicitamente. Com esse método, seu aplicativo requer apenas a URL do ponto de extremidade de Configuração do Aplicativo, que pode ser incorporada com segurança no código do aplicativo ou nos arquivos de configuração.
Para obter mais informações, consulte Usar identidades gerenciadas para acessar a Configuração do Aplicativo.
Acesso do Serviço Kubernetes do Azure à Configuração do Aplicativo
As opções a seguir estão disponíveis para cargas de trabalho hospedadas no Serviço Kubernetes do Azure (AKS) para acessar a Configuração do Aplicativo do Azure. Essas opções também se aplicam ao Kubernetes em geral.
Adicione o Provedor Kubernetes de Configuração do Aplicativo do Azure ao seu cluster AKS. O provedor Kubernetes é executado como um pod no cluster. Ele pode construir ConfigMaps e Secrets a partir de valores-chave e referências do Cofre de Chaves em sua loja de Configuração de Aplicativos. O ConfigMap e o Secret são consumíveis como variáveis de ambiente ou arquivos montados sem exigir modificações no código do aplicativo. Se você tiver vários aplicativos em execução no mesmo cluster AKS, todos eles poderão acessar os ConfigMaps e Segredos gerados, eliminando a necessidade de solicitações individuais para a Configuração do Aplicativo. O provedor Kubernetes também suporta atualizações de configuração dinâmica. Esta é a opção recomendada, se viável para si.
Atualize seu aplicativo para usar as bibliotecas do provedor de Configuração de Aplicativo do Azure. As bibliotecas do provedor estão disponíveis em muitos frameworks e linguagens, como ASP.NET, .NET,Java Spring, JavaScript/Node.jse Python. Essa abordagem oferece acesso total às funcionalidades da Configuração do aplicativo, incluindo configuração dinâmica e gerenciamento de recursos. Você tem controlo granular sobre quais dados carregar e de qual loja App Configuration para cada aplicação.
Integre com a implantação do Kubernetes usando o Helm. Se não deseja atualizar a sua aplicação ou adicionar um novo pod ao seu cluster AKS, tem a opção de trazer dados da App Configuration para o cluster Kubernetes usando o Helm através de implantação. Essa abordagem permite que seu aplicativo continue acessando a configuração a partir de variáveis e segredos do Kubernetes. Você pode executar a atualização do Helm sempre que quiser que seu aplicativo incorpore novas alterações de configuração.
Acesso do Serviço de Aplicativo ou do Azure Functions à Configuração do Aplicativo
Use o provedor de Configuração de Aplicativo ou bibliotecas SDK para acessar a Configuração de Aplicativo diretamente em seu aplicativo. Essa abordagem oferece acesso total às funcionalidades da Configuração do aplicativo, incluindo configuração dinâmica e gerenciamento de recursos. Seu aplicativo em execução no Serviço de Aplicativo ou no Azure Functions pode obter acesso à sua loja de Configuração de Aplicativo por meio de qualquer um dos seguintes métodos:
- Habilite a identidade gerenciada em seu Serviço de Aplicativo ou Azure Functions e conceda a ela acesso à sua loja de Configuração de Aplicativos. Para obter mais informações, consulte Usar identidades gerenciadas para acessar a Configuração do Aplicativo.
- Armazene a cadeia de conexão em seu repositório de Configuração de Aplicativo nas Configurações de Aplicativo do Serviço de Aplicativo ou do Azure Functions. Para maior segurança, armazene a cadeia de conexão no Cofre da Chave e faça referência a ela no Serviço de Aplicativo ou no Azure Functions.
Você também pode tornar seus dados de Configuração do Aplicativo acessíveis ao seu aplicativo como Configurações do aplicativo ou variáveis de ambiente. Com essa abordagem, você pode evitar alterar o código do aplicativo.
- Adicione referências aos dados de Configuração do Aplicativo nas configurações do Aplicativo do Serviço de Aplicativo ou do Azure Functions. A Configuração do Aplicativo oferece ferramentas para exportar uma coleção de valores-chave como referências de uma só vez. Para obter mais informações, consulte Usar referências de configuração de aplicações para o App Service e Azure Functions.
- Exporte seus dados de Configuração do Aplicativo para as configurações do Aplicativo do seu Serviço de Aplicativo ou do Azure Functions sem selecionar a opção de exportar como referência. Exporte seus dados novamente sempre que fizer novas alterações na Configuração do aplicativo, se quiser que seu aplicativo pegue a alteração.
Reduzir solicitações feitas à Configuração do Aplicativo
Solicitações excessivas à Configuração de Aplicações podem resultar em limitação ou cobranças adicionais. Para reduzir o número de pedidos efetuados:
Aumente o intervalo de atualização, especialmente se os valores de configuração não forem alterados com frequência. Especifique um novo intervalo de atualização usando o
SetRefreshInterval
método.Monitore uma única chave sentinela, em vez de monitorizar chaves individuais. Atualize todas as configurações somente se a chave sentinela mudar. Consulte Usar configuração dinâmica em um aplicativo ASP.NET Core para obter um exemplo.
Use o Fornecedor Kubernetes de Configuração de Aplicações se vós executardes várias tarefas num cluster Kubernetes, cada uma extraindo dados da Configuração de Aplicações de forma individual. O provedor do Kubernetes recupera dados da Configuração do Aplicativo e os disponibiliza como ConfigMaps e Segredos do Kubernetes. Dessa forma, suas cargas de trabalho podem acessar os dados via ConfigMaps e Secrets sem precisar extrair dados da Configuração do Aplicativo separadamente.
Habilite a replicação geográfica de sua loja de configuração de aplicativos e espalhe suas solicitações por várias réplicas. Por exemplo, use uma réplica diferente de cada região geográfica para um aplicativo implantado globalmente. Cada réplica de Configuração de Aplicativo tem sua cota de solicitação separada. Essa configuração oferece um modelo de escalabilidade e resiliência aprimorada contra interrupções transitórias e regionais.
Importando dados de configuração para a Configuração do Aplicativo
A Configuração do Aplicativo oferece a opção de importar em massa suas definições de configuração de seus arquivos de configuração atuais usando o portal do Azure ou a CLI. Você também pode usar as mesmas opções para exportar valores-chave da Configuração do aplicativo, por exemplo, entre lojas relacionadas. Se você adotar Configuração como Código e gerenciar suas configurações no GitHub ou no Azure DevOps, poderá configurar a importação contínua de arquivos de configuração usando as Ações do GitHub ou a Tarefa de Importação do Pipeline do Azure.
Implantação em várias regiões na Configuração do Aplicativo
Se o seu aplicativo for implantado em várias regiões, recomendamos que você habilite a replicação geográfica da sua loja de Configuração de Aplicativos. Você pode permitir que seu aplicativo se conecte principalmente à réplica correspondente à região onde as instâncias do seu aplicativo são implantadas e permitir que elas façam failover para réplicas em outras regiões. Essa configuração minimiza a latência entre seu aplicativo e a Configuração do Aplicativo, distribui a carga à medida que cada réplica tem cotas de limitação separadas e aprimora a resiliência do aplicativo contra interrupções transitórias e regionais. Para obter mais informações, consulte Resiliência e recuperação de desastres.
Construindo aplicações com alta resiliência
Os aplicativos geralmente dependem da configuração para iniciar, tornando a alta disponibilidade da Configuração de Aplicativo do Azure crítica. Para melhorar a resiliência, os aplicativos devem usar os recursos de confiabilidade da Configuração do Aplicativo e considerar tomar as seguintes medidas com base em seus requisitos específicos.
- Provisionamento em regiões com suporte à zona de disponibilidade do Azure. As zonas de disponibilidade permitem que os aplicativos sejam resilientes a interrupções do data center. A Configuração de Aplicações oferece redundância de zona para todos os clientes sem quaisquer encargos adicionais. É recomendável criar sua loja de configuração de aplicativos em regiões com suporte para zonas de disponibilidade. Você pode encontrar uma lista de regiões onde a Configuração do Aplicativo habilitou o suporte à zona de disponibilidade.
- Habilite a replicação geográfica e permita que seu aplicativo faça failover ou distribua carga entre réplicas. Essa configuração oferece um modelo de escalabilidade e resiliência aprimorada contra falhas transitórias e interrupções regionais. Para obter mais informações, consulte Resiliência e recuperação de desastres.
- Implante a configuração com práticas de implantação seguras. Alterações de configuração incorretas ou acidentais podem frequentemente causar tempo de inatividade do aplicativo. Você deve evitar fazer alterações de configuração que afetem a produção diretamente, por exemplo, do portal do Azure sempre que possível. Nas práticas de implantação segura (SDP), você usa um modelo de implantação de exposição progressiva para minimizar o raio de explosão potencial de problemas causados pela implantação. Se você adotar o SDP, poderá criar e testar um instantâneo de configuração antes de implantá-lo na produção. Durante a implantação, você pode atualizar instâncias do seu aplicativo para pegar progressivamente o novo instantâneo. Se forem detetados problemas, você poderá reverter a alteração reimplantando o instantâneo LKG (Last Known-Good). O snapshot é imutável, garantindo consistência em todas as implantações. Você pode utilizar instantâneos juntamente com a configuração dinâmica. Use uma captura instantânea para a configuração base e a configuração dinâmica para substituições de configuração de emergência e marcadores de funcionalidades.
- Inclua a configuração com seu aplicativo. Se você quiser garantir que seu aplicativo sempre tenha acesso a uma cópia da configuração, ou se preferir evitar completamente uma dependência de tempo de execução na Configuração do Aplicativo, você pode extrair a configuração da Configuração do Aplicativo durante o tempo de compilação ou lançamento e incluí-la em seu aplicativo. Para saber mais, confira exemplos de integração da Configuração de Aplicativo com seu pipeline de CI/CD ou implantação do Kubernetes.
- Use provedores de configuração de aplicativo. Os aplicativos desempenham um papel crítico na obtenção de alta resiliência porque podem levar em conta problemas que surgem durante seu tempo de execução, como problemas de rede, e responder a falhas mais rapidamente. Os fornecedores de Configuração de Aplicações oferecem uma variedade de funcionalidades internas de resiliência, incluindo descoberta automática de réplicas, recuperação de réplicas, novas tentativas de inicialização com tempos limite personalizáveis, cache de configuração e estratégias de adaptação para uma atualização de configuração confiável. É altamente recomendável que você use provedores de Configuração de Aplicativo para se beneficiar desses recursos. Se essa não for uma opção, você deve considerar a implementação de recursos semelhantes em sua solução personalizada para alcançar o mais alto nível de resiliência.
Aplicativos cliente na Configuração do Aplicativo
Ao usar a Configuração do Aplicativo em aplicativos cliente, certifique-se de considerar dois fatores principais. Primeiro, se você estiver usando a cadeia de conexão em um aplicativo cliente, corre o risco de expor a chave de acesso da sua loja de configuração de aplicativos ao público. Em segundo lugar, a escala típica de um aplicativo cliente pode causar solicitações excessivas à sua loja de configuração de aplicativos, o que pode resultar em cobranças excessivas ou limitação. Para obter mais informações sobre o controlo da taxa de transferência, consulte as Perguntas frequentes.
Para resolver essas preocupações, recomendamos que você use um serviço de proxy entre seus aplicativos cliente e sua loja de configuração de aplicativos. O serviço de proxy pode autenticar-se com segurança na sua loja de Configuração de Aplicações sem um problema de segurança de fuga de informações de autenticação. Você pode criar um serviço de proxy usando uma das bibliotecas do provedor de Configuração de Aplicativo, para que possa aproveitar os recursos internos de cache e atualização para otimizar o volume de solicitações enviadas à Configuração do Aplicativo. Para obter mais informações sobre como usar provedores de Configuração de Aplicativo, consulte os artigos em Inícios rápidos e Tutoriais. O serviço de proxy serve a configuração do seu cache para as suas aplicações de cliente, e evitam-se os dois possíveis problemas abordados nesta seção.
Aplicações multiclientes na Configuração de Aplicações
Um aplicativo multilocatário é criado em uma arquitetura em que uma instância compartilhada do seu aplicativo atende a vários clientes ou locatários. Por exemplo, você pode ter um serviço de e-mail que ofereça aos usuários contas separadas e experiências personalizadas. Seu aplicativo geralmente gerencia configurações diferentes para cada locatário. Aqui estão algumas considerações de arquitetura para usar a Configuração de Aplicação numa aplicação multi-inquilinos. Você também pode consultar o código de exemplo para a configuração do aplicativo multilocatário.
Configuração como código
A configuração como código é uma prática de gerenciamento de arquivos de configuração sob seu sistema de controle de origem, por exemplo, um repositório git. Ele oferece benefícios como rastreabilidade e processo de aprovação para quaisquer alterações de configuração. Se você adotar a configuração como código, a Configuração do Aplicativo terá ferramentas para ajudá-lo a gerenciar seus dados de configuração em arquivos e implantá-los como parte de seu processo de compilação, lançamento ou CI/CD. Desta forma, as suas aplicações podem aceder aos dados mais recentes a partir da sua App Configuration Store.
- Para o GitHub, você pode importar arquivos de configuração do repositório do GitHub para a loja de configuração de aplicativos usando as Ações do GitHub
- Para o Azure DevOps, você pode incluir a Importação de Configuração do Aplicativo do Azure, uma tarefa de pipeline do Azure, em seus pipelines de compilação ou liberação para sincronização de dados.
- Para outros, você pode importar arquivos de configuração para a Configuração do Aplicativo usando a CLI do Azure como parte do seu sistema de CI/CD. Para obter mais informações, consulte az appconfig kv import.
Esse modelo permite que você inclua etapas de validação e teste antes de confirmar dados na Configuração do aplicativo. Se você usar várias lojas de Configuração de Aplicativos, também poderá enviar os dados de configuração para elas de forma incremental ou de uma só vez.