你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用 Azure Kubernetes 服务中的动态配置

如果使用 Azure Kubernetes 服务 (AKS),可通过本教程了解如何利用 Azure 应用程序配置及其 Kubernetes 提供程序为 AKS 中的工作负载启用动态配置。 本教程假定你已完成快速入门并设置了应用程序配置 Kubernetes 提供程序,因此在继续操作之前,请确保已完成使用 Azure Kubernetes 服务中的 Azure 应用程序配置快速入门。

提示

请参阅选项,了解在 Kubernetes 中托管的用于访问 Azure 应用配置的工作负荷。

先决条件

完成快速入门:在 Azure Kubernetes 服务中使用 Azure 应用程序配置

提示

Azure Cloud Shell 是免费的交互式 shell,可以使用它运行本文中的命令行指令。 它预安装了常用的 Azure 工具,其中包括 .NET Core SDK。 如果你已登录到 Azure 订阅,请从 shell.azure.com 启动 Azure Cloud Shell。 若要详细了解 Azure Cloud Shell,请阅读我们的文档

添加 sentinel 键

Sentinel 键是完成所有其他键的更改后更新的键。 应用会监视 sentinel 键。 检测到更改时,应用会刷新所有配置值。 与监视所有键来了解更改情况相比,此方法有助于确保应用中配置的一致性,并减少对应用程序配置存储发出的请求总数。

将以下键值添加到应用程序配置存储区。 有关如何使用 Azure 门户或 CLI 将键值添加到存储区的详细信息,请转到创建键值

密钥
设置:Sentinel 1

从应用配置重载数据

  1. 打开位于部署目录中的 appConfigurationProvider.yaml 文件。 然后,在 configuration 属性下添加 refresh 节。 它通过监视 sentinel 密钥来启用配置刷新。

    apiVersion: azconfig.io/v1
    kind: AzureAppConfigurationProvider
    metadata:
      name: appconfigurationprovider-sample
    spec:
      endpoint: <your-app-configuration-store-endpoint>
      target:
        configMapName: configmap-created-by-appconfig-provider
        configMapData: 
          type: json
          key: mysettings.json
      auth:
        workloadIdentity:
          managedIdentityClientId: <your-managed-identity-client-id>
      configuration:
        refresh:
          enabled: true
          monitoring:
            keyValues:
            - key: Settings:Sentinel
    

    提示

    Kubernetes 提供程序默认每隔 30 秒轮询一次监视键值,以检测变化。 可通过设置 refreshinterval 属性来更改此行为。 如果要减少对应用程序配置存储的请求数,可以将其调整为更高的值。

  2. 部署目录中打开 deployment.yaml 文件,并将以下内容添加到 spec.containers 部分。 应用程序会从应用程序配置 Kubernetes 提供程序生成的卷装载文件中加载配置。 通过设置此环境变量,应用程序可以使用轮询来监视装载文件中的更改

    env:
    - name: DOTNET_USE_POLLING_FILE_WATCHER
      value: "true"
    
  3. 运行以下命令来部署更改。 如果使用的是现有 AKS 应用,则请替换命名空间。

    kubectl apply -f ./Deployment -n appconfig-demo
    
  4. 打开浏览器窗口,然后导航到在上一步中获取的 IP 地址。 Web 页面如下所示:

    包含旧值的 Web 应用的屏幕截图。

  5. 更新应用配置存储中的以下键值,确保最终更新 sentinel 密钥。

    密钥
    Settings:Message Azure 应用配置中的问候语 - 现可实时更新!
    设置:Sentinel 2
  6. 刷新浏览器几次后,ConfigMap 会在 30 秒内更新,然后你会看到更新的内容。

    包含更新后的值的 Web 应用的屏幕截图。

重新加载 ConfigMap 和机密

应用程序配置 Kubernetes 提供程序生成可充当环境变量或卷装载文件的 ConfigMap 或机密。 本教程演示了如何使用 .NET JSON 配置提供程序从 JSON 文件加载配置,该提供程序会在当检测到装载文件中的更改时自动重新加载配置。 因此,每当应用程序配置 Kubernetes 提供程序更新 ConfigMap 时,你的应用程序都会自动获取更新的配置。

如果应用程序依赖于用于配置的环境变量,则可能需要重启才能选取任何更新的值。 在 Kubernetes 中,可以在相应的 Pod 或容器上使用滚动更新来安排应用程序重启。 若要自动执行配置更新,可以利用第三方工具(如 stakater/Reloader),在 ConfigMaps 或机密发生任何更改时,这些工具可自动触发滚动更新。

后续步骤

要详细了解 Azure 应用程序配置 Kubernetes 提供程序,请参阅 Azure 应用程序配置 Kubernetes 提供程序参考