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

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

提示

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

先决条件

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

添加 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 提供程序参考