共用方式為


教學課程:在 Azure Kubernetes Service 中使用動態組態

如果您使用 Azure Kubernetes Service (AKS),本教學課程會示範如何利用 Azure 應用程式組態及其 Kubernetes 提供者,為 AKS 中的工作負載啟用動態組態。 本教學課程假設您已完成快速入門,並已設定應用程式組態 Kubernetes 提供者,因此在繼續之前,請確定您已完成在 Azure Kubernetes Service 中使用 Azure 應用程式組態快速入門。

提示

請參閱 Kubernetes 中裝載的工作負載選項,以存取 Azure 應用程式組態。

必要條件

完成快速入門:在 Azure Kubernetes Service中使用 Azure 應用程式組態。

提示

Azure Cloud Shell 是免費的互動式 Shell,可讓您用來執行本文中的命令列指令。 其中已預先安裝常用的 Azure 工具,包括 .NET Core SDK。 如果您已登入 Azure 訂用帳戶,請從 shell.azure.com 啟動您的 Azure Cloud Shell。 您可以閱讀我們的文件,以深入了解 Azure Cloud Shell。

新增 Sentinel 金鑰

「Sentinel 金鑰」是您完成所有其他金鑰變更之後才更新的金鑰。 您的應用程式會監視 Sentinel 金鑰。 偵測到變更時,您的應用程式會重新整理所有設定值。 相較於監視所有金鑰是否變更,此方法有助於確保應用程式中設定的一致性,並減少對您應用程式組態存放區提出的整體要求數目。

將下列金鑰值新增至您的應用程式組態存放區。 如需如何使用 Azure 入口網站或 CLI 將金鑰值新增至存放區的詳細資訊,請移至建立金鑰值

機碼
Settings: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 應用程式的螢幕快照。

  5. 更新應用程式組態存放區中的下列金鑰值,確保最後更新 sentinel 金鑰。

    機碼
    Settings:Message 來自 Azure 應用程式組態的問候 - 現在可以即時更新了!
    Settings:Sentinel 2
  6. 重新整理瀏覽器幾次之後,您會在 ConfigMap 30 秒內更新後看到更新的內容。

    Web 應用程式的螢幕快照,其中包含更新的值。

重新載入 ConfigMap 和祕密

應用程式組態 Kubernetes 提供者會產生 ConfigMaps 或祕密,可用來做為環境變數或磁碟區掛接的檔案。 本教學課程示範如何使用 .NET JSON 組態提供者從 JSON 檔案載入組態,每當掛接的檔案中偵測到變更時,就會自動重新載入組態。 因此,每當應用程式組態 Kubernetes 提供者更新 ConfigMap 時,您的應用程式就會自動取得更新的組態。

如果您的應用程式相依於組態的環境變數,可能需要重新啟動以挑選任何更新的值。 在 Kubernetes 中,應用程式重新啟動可以使用對應 Pod 或容器上的輪流更新來協調。 若要自動化組態更新,您可以利用 stakater/Reloader 等第三方工具,在對 ConfigMaps 或祕密所做的任何變更時,自動觸發輪流更新。

下一步

若要深入了解 Azure 應用程式組態 Kubernetes 提供者,請參閱 Azure 應用程式組態 Kubernetes 提供者參考