Skip to content

使用 TypeScript 实现 Azure App Configuration 集中配置管理

解决分布式应用中配置碎片化问题:通过 Azure App Configuration 为 TypeScript 项目提供统一的配置中心,支持无需重启应用即可动态更新参数,并实现灵活的功能开关控制。

为什么需要这个技能

在复杂的云原生应用中,将配置硬编码在 .env 文件或代码中会导致维护困难,尤其是在多环境(开发、测试、生产)部署时。如果每次修改配置都需要重新构建和部署应用,将严重影响迭代效率。

Azure App Configuration 允许将所有配置项集中存储。配合 TypeScript SDK,开发者可以实现:

  • 动态刷新:在不重启服务的情况下实时更新配置。
  • 功能开关(Feature Flags):快速开启或关闭特定功能,支持灰度发布和 A/B 测试。
  • 安全集成:直接引用 Azure Key Vault 中的敏感密钥,无需在配置中心存储明文密码。

适用场景

  • 需要在多个微服务之间共享统一配置集。
  • 需要实现“开关”机制,快速上线或回滚某个新功能。
  • 处于多环境部署阶段,需要通过 Label(标签)快速切换环境配置。
  • 需要将配置与代码生命周期解耦,实现配置的实时热更新。

核心工作流

1. 环境初始化与身份认证

安装核心 SDK 并在代码中配置认证。推荐使用 DefaultAzureCredential 以支持多种认证方式(如 Managed Identity 或本地 CLI)。

typescript
import { AppConfigurationClient } from "@azure/app-configuration";
import { DefaultAzureCredential } from "@azure/identity";

const client = new AppConfigurationClient(
  process.env.AZURE_APPCONFIG_ENDPOINT!,
  new DefaultAzureCredential()
);

2. 配置项的 CRUD 操作

使用低级 SDK 进行配置的创建、读取和删除。通过 label 区分环境(如 productiondevelopment)。

typescript
// 设置配置项
await client.setConfigurationSetting({
  key: "app:settings:message",
  value: "Updated value",
  label: "production",
});

// 读取单个配置
const setting = await client.getConfigurationSetting({
  key: "app:settings:message",
  label: "production",
});

3. 应用运行时加载与动态刷新

使用 @azure/app-configuration-provider 实现高性能的配置加载。通过设置 refreshIntervalInMs 实现自动刷新。

typescript
import { load } from "@azure/app-configuration-provider";

const appConfig = await load(endpoint, credential, {
  selectors: [{ keyFilter: "app:*", labelFilter: "production" }],
  refreshOptions: {
    enabled: true,
    refreshIntervalInMs: 30_000, // 每30秒自动检查更新
  },
});

const value = appConfig.get("settings:message");

4. 功能开关(Feature Flags)评估

利用 FeatureManager 根据特定条件(如用户 ID 或百分比)判断功能是否开启。

typescript
import { FeatureManager, ConfigurationMapFeatureFlagProvider } from "@microsoft/feature-management";

const featureProvider = new ConfigurationMapFeatureFlagProvider(appConfig);
const featureManager = new FeatureManager(featureProvider);

const isEnabled = await featureManager.isEnabled("BetaFeature");

下载和安装

下载 azure-appconfiguration-ts 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐