Руководство. Использование динамической конфигурации в Служба Azure Kubernetes

Если вы используете Служба Azure Kubernetes (AKS), в этом руководстве показано, как включить динамическую конфигурацию для рабочих нагрузок в AKS, используя Конфигурация приложений Azure и поставщика Kubernetes. В этом руководстве предполагается, что вы работаете с кратким руководством и настроили Конфигурация приложений поставщика Kubernetes, поэтому прежде чем продолжить, убедитесь, что Конфигурация приложений Azure use Конфигурация приложений Azure в Служба Azure Kubernetes кратком руководстве.

Совет

См. параметры рабочих нагрузок, размещенных в Kubernetes, для доступа к Конфигурация приложений Azure.

Необходимые компоненты

Завершите краткое руководство. Использование Конфигурация приложений Azure в Служба Azure Kubernetes.

Совет

Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять инструкции командной строки, описанные в этой статье. Она содержит предварительно установленные общие инструменты Azure, включая пакет SDK для .NET Core. Если вы вошли в подписку Azure, запустите Azure Cloud Shell на сайте shell.azure.com. Дополнительные сведения об Azure Cloud Shell см. в нашей документации.

Добавление ключа Sentinel

Ключ sentinel — это ключ , который вы обновляете после завершения изменения всех остальных ключей. Приложение отслеживает ключ sentinel. При обнаружении изменения приложение обновляет все значения конфигурации. Этот подход помогает обеспечить согласованность конфигурации в приложении и сократить общее количество запросов, сделанных в хранилище Конфигурация приложений, по сравнению с мониторингом всех ключей для изменений.

Добавьте следующее значение ключа в хранилище Конфигурация приложений. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".

Ключ Значение
Параметры:Sentinel 1

Перезагрузка данных из App Configuration

  1. Откройте файл appConfigurationProvider.yaml, расположенный в каталоге развертывания. Затем добавьте refresh раздел в configuration свойство. Он включает обновление конфигурации, отслеживая ключ 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 секунд для обнаружения изменений. Однако это поведение можно изменить, задав interval свойство объекта refresh. Если вы хотите уменьшить количество запросов в хранилище Конфигурация приложений, можно настроить его на более высокое значение.

  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-адресу, полученному на предыдущем шаге. Веб-страница выглядит следующим образом:

    Screenshot of the web app with old values.

  5. Обновите следующие ключевые значения в хранилище Конфигурация приложений, чтобы обновить ключ sentinel последним.

    Ключ Значение
    Параметры:Message Привет от Конфигурация приложений Azure - теперь с динамическими обновлениями!
    Параметры:Sentinel 2
  6. После обновления браузера несколько раз вы увидите обновленное содержимое после обновления ConfigMap в течение 30 секунд.

    Screenshot of the web app with updated values.

Перезагрузить конфигурацию и секрет

Конфигурация приложений поставщик Kubernetes создает конфигурацию Карты или секреты, которые можно использовать в качестве переменных среды или файлов, подключенных к тому. В этом руководстве показано, как загрузить конфигурацию из JSON-файла с помощью поставщика конфигурации JSON .NET, который автоматически перезагрузит конфигурацию при обнаружении изменения в подключенном файле. В результате приложение автоматически получает обновленную конфигурацию всякий раз, когда поставщик Kubernetes Конфигурация приложений обновляет ConfigMap.

Если приложение зависит от переменных среды для конфигурации, может потребоваться перезагрузка для получения всех обновленных значений. В Kubernetes перезапуск приложения можно оркестрировать с помощью последовательного обновления в соответствующих модулях pod или контейнерах. Чтобы автоматизировать обновления конфигурации, можно использовать сторонние средства, такие как stakater/Reloader, которые могут автоматически запускать последовательные обновления при любых изменениях, внесенных в конфигурацию Карты или секреты.

Следующие шаги

Дополнительные сведения о поставщике kubernetes Конфигурация приложений Azure см. в Конфигурация приложений Azure справочнике по поставщику Kubernetes.