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

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

小窍门

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

先决条件

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

从应用配置重载数据

  1. 打开位于部署目录中的 appConfigurationProvider.yaml 文件。 然后,在 configuration 属性下添加 refresh 节。 它使 Kubernetes 提供程序能够在检测到任何所选键值(以 “设置: ”开头且没有标签)发生更改时重新加载整个配置。 有关监视配置更改的详细信息,请参阅 配置刷新的最佳做法

    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
    

    小窍门

    可以设置 interval 属性 refresh 以指定配置刷新之间的最短时间。 在此示例中,使用默认值 30 秒。 如果需要减少对应用配置存储的请求数量,请调整为更高的值。

  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 密钥。

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

    Web 应用的屏幕截图,其中包含更新的值。

重新加载 ConfigMap 和密钥

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

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

后续步骤

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