Поделиться через


Поддержка службы Конфигурация приложений Azure для файлов конфигурации

Распространенный способ хранения данных конфигурации — использовать файлы. Если вы хотите использовать конфигурацию приложений Azure для управления данными конфигурации, но в настоящее время используете файлы, вам не нужно вводить данные вручную. Вы можете использовать средства для импорта файлов конфигурации.

Если вы планируете управлять данными в конфигурации приложений, операция импорта является однократной миграцией данных. Другой вариант — продолжить управление данными конфигурации в файлах и импортировать файлы периодически в рамках процесса непрерывной интеграции и непрерывной доставки (CI/CD). Этот случай возникает при внедрении конфигурации в качестве кода.

Два профиля содержимого файлов доступны при использовании файлов конфигурации:

  • Профиль содержимого файла по умолчанию: обычная схема файла конфигурации
  • Профиль содержимого файла KVSet: схема, содержащая все свойства key-value конфигурации приложения

В этой статье рассматриваются оба профиля содержимого файла. Он также содержит примеры импорта и экспорта файлов конфигурации. В примерах используется Azure CLI, но основные понятия, описанные в этой статье, также применяются к другим методам импорта конфигурации приложений.

Профиль содержимого файла: по умолчанию

В средствах настройки приложений профиль содержимого файла по умолчанию — это стандартная схема файла конфигурации, которая широко используется существующими платформами программирования и системами. Этот профиль используется в средствах импорта конфигурации приложений, таких как портал Azure, Azure CLI, задача импорта конфигурации приложений Azure в Azure Pipelines и GitHub Actions. Конфигурация приложений поддерживает форматы файлов JSON, YAML и Properties.

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

В следующем файле конфигурации appsettings.jsonприведен пример профиля содержимого файла по умолчанию. Этот файл содержит один параметр конфигурации и один флаг компонента.

{
    "Logging": {
        "LogLevel": {
            "Default": "Warning"
        }
    },
    "feature_management": {
        "feature_flags": [
            {
                "id": "Beta",
                "enabled": false
            }
        ]
    }
}

Чтобы импортировать этот файл в конфигурацию приложений, выполните следующую команду Azure CLI. Он применяет dev метку к параметру и флагу функции, и он использует двоеточие (:) в качестве разделителя для упрощения имени ключа.

az appconfig kv import --label dev --separator : --name <App-Configuration-store-name> --source file --path appsettings.json --format json

При необходимости можно добавить следующий параметр в предыдущую команду: --profile appconfig/default Параметр является необязательным, так как профиль по умолчанию имеет значение appconfig/default.

Для ссылок Azure Key Vault требуется определенный тип контента во время импорта. В результате они хранятся в отдельном файле, как показано в следующем файле, keyvault-refs.json:

{
    "Database:ConnectionString": {
        "uri": "https://<Key-Vault-name>.vault.azure.net/secrets/db-secret"
    }  
}

Чтобы импортировать этот файл, выполните следующую команду Azure CLI. Она применяет метку к ссылке test Key Vault и использует тип содержимого ссылки на Key Vault.

az appconfig kv import --label test --content-type "application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8" --name <App-Configuration-store-name> --source file --path keyvault-refs.json --format json

В следующей таблице показаны все импортированные данные в хранилище конфигурации приложений:

Ключ значение Метка Тип контента
.appconfig.featureflag/Beta {"id":"Beta","description":"","enabled": false,"conditions":{"client_filters":[]}} dev application/vnd.microsoft.appconfig.ff+json;charset=utf-8
Logging:LogLevel:Default Предупреждение dev
Database:ConnectionString {"URI":"https://<Key-Vault-name.vault.azure.net/secrets/db-secret>"} test application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

Профиль содержимого файла: KVSet

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

При использовании профиля KVSet можно определить обычные значения ключей, ссылки на Key Vault и флаги компонентов в одном файле. В результате этот профиль полезен, если вы хотите управлять всеми данными конфигурации приложений в одном файле и импортировать его на одном шаге.

Файлы, использующие этот профиль, находятся в формате JSON. Спецификация схемы см. в схеме файла KVSet.

Следующий файл ,appconfigdata.json, основан на профиле содержимого файла KVSet. Этот файл содержит флаг компонента, ссылку Key Vault и стандартное значение ключа.

{
  "items": [
    {
      "key": ".appconfig.featureflag/Beta",
      "value": "{\"id\":\"Beta\",\"description\":\"Beta feature\",\"enabled\":true,\"conditions\":{\"client_filters\":[]}}",
      "label": "dev",
      "content_type": "application/vnd.microsoft.appconfig.ff+json;charset=utf-8",
      "tags": {}
    },
    {
      "key": "Database:ConnectionString",
      "value": "{\"uri\":\"https://<Key-Vault-name>.vault.azure.net/secrets/db-secret\"}",
      "label": "test",
      "content_type": "application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8",
      "tags": {}
    },
    {
      "key": "Logging:LogLevel:Default",
      "value": "Debug",
      "label": "dev",
      "content_type": null,
      "tags": {}
    }
  ]
}

В предыдущем разделе показано, как импортировать данные в хранилище конфигурации приложений. Эти данные можно экспортировать в файл с помощью следующей команды Azure CLI:

az appconfig kv export --profile appconfig/kvset --label * --name <App-Configuration-store-name> --destination file --path appconfigdata.json --format json 

После экспорта файла откройте его в текстовом редакторе и внесите следующие изменения:

  • Задайте свойству флага функции Betaenabled значение true.
  • Задайте для свойства Logging:LogLevel:Default значение Debug.

Чтобы импортировать обновленный файл в хранилище конфигурации приложений, выполните следующую команду CLI, которая включает --profile appconfig/kvset параметр. Вам не нужно указывать правила преобразования данных, такие как разделитель, метка или тип контента, как вы сделали для профиля содержимого файла по умолчанию. Все необходимые сведения уже есть в файле.

az appconfig kv import --profile appconfig/kvset --name <App-Configuration-store-name> --source file --path appconfigdata.json --format json

Примечание.

В настоящее время поддерживается профиль содержимого файла KVSet в:

В следующей таблице показаны все импортированные данные в хранилище конфигурации приложений:

Ключ значение Метка Тип контента
.appconfig.featureflag/Beta {"id":"Бета","description":"Функция бета","enabled":true,"conditions":{"client_filters":[]}} dev application/vnd.microsoft.appconfig.ff+json;charset=utf-8
Logging:LogLevel:Default Debug dev
Database:ConnectionString {"URI":"https://<Key-Vault-name.vault.azure.net/secrets/db-secret>"} test application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

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