В этой статье изложены ответы на часто задаваемые вопросы о Конфигурации приложений Azure.
Чем отличается служба "Конфигурация приложений" от решения Azure Key Vault?
Конфигурация приложений помогает разработчикам управлять параметрами приложений и доступностью функций. Она предназначена для упрощения многих задач, связанных с данными сложных конфигураций.
Конфигурация приложений поддерживает:
- Иерархические пространства имен
- Добавление меток
- расширенные запросы;
- Пакетное извлечение
- специализированные операции управления;
- пользовательский интерфейс управления функциями.
Конфигурация приложений дополняет Key Vault, и в большинстве развертываний приложений следует использовать эти две службы параллельно.
Следует ли хранить секреты в Конфигурации приложений?
Конфигурация приложений обеспечивает усиленную безопасность, но Key Vault по-прежнему остается оптимальным местом для хранения секретов приложений. Key Vault обеспечивает шифрование на уровне оборудования, детализированные политики доступа и встроенные операции управления, например для смены сертификатов.
Вы можете создать Конфигурация приложений значения ключей, ссылающиеся на секреты, хранящиеся в Key Vault. Дополнительные сведения см. в руководстве по использованию ссылок Key Vault в приложении ASP.NET Core.
Шифрует ли Конфигурация приложений мои данные?
Да. Конфигурация приложений всегда шифрует все данные при передаче и хранении. Весь сетевой обмен данными выполняется по протоколу TLS 1.2 или TLS 1.3. Конфигурация приложений поддерживает шифрование неактивных данных с помощью ключей, управляемых корпорацией Майкрософт, или ключей, управляемых клиентом.
Чем отличается Конфигурация приложений от параметров в Службе приложений Azure?
Служба приложений Azure позволяет определять параметры приложений для каждого экземпляра Службы приложений. Эти параметры передаются в код приложения в виде переменных среды. При желании вы можете связать любой параметр с конкретным слотом развертывания. Дополнительные сведения см. в разделе Настройка параметров приложения.
В свою очередь, Конфигурация приложений Azure позволяет определять параметры, которые могут совместно использоваться в нескольких приложениях. Это могут быть приложения, работающие не только в Службе приложений, но и на других платформах. Код приложения обращается к этим параметрам через поставщики конфигураций для .NET и Java, через пакет SDK для Azure или напрямую через REST API.
Вы можете добавить ссылки на данные Конфигурации приложений в параметры приложения в Службе приложений. Кроме того, параметры можно импортировать и экспортировать для передачи между Службой приложений и Конфигурацией приложений. Эта возможность позволяет быстро настроить новое хранилище для Конфигурации приложений, используя уже существующие параметры Службы приложений. Вы также можете передать конфигурацию в существующее приложение, в котором используются параметры Службы приложений.
Существуют ли ограничения на размер ключей и значений, хранящихся в Конфигурации приложений?
Для каждой пары "ключ-значение", включая такие атрибуты, как метка, тип содержимого, теги и другие метаданные, действует ограничение в 10 КБ. Нет ограничений на количество ключей и меток, если их общий размер ниже предела хранилища.
Это ограничение значения ключа должно быть достаточно для одного параметра в большинстве приложений. Если вы обнаружите, что ваш параметр больше этого ограничения, вы можете рассмотреть возможность хранения данных в другом месте и добавить ссылку на эти данные в Конфигурация приложений.
Полный список ограничений см. в статье об ограничениях подписки и служб Azure.
Как лучше хранить конфигурации для нескольких разных сред (тестирования, промежуточного хранения, рабочей среды и т. д.)?
Вы можете управлять доступом к Конфигурации приложений на уровне хранилища. Используйте отдельные хранилища для разных сред, если для них нужны разные разрешения. Такой подход обеспечивает максимальную защиту путем изоляции.
Если вам не нужна изоляция безопасности между средами, можно использовать метки для различения значений конфигурации. Полный пример см. в статье о создании конфигураций для разных сред с помощью меток.
Как рекомендуется использовать Конфигурацию приложений?
Рекомендации на эту тему см. здесь.
Сколько стоит использование Конфигурации приложений?
Существует три ценовых категории: "Бесплатный", "Стандартный" и "Премиум". Подробные сведения о ценах см. на странице цен Конфигурация приложений.
Какой уровень Конфигурации приложений следует использовать?
Все уровни Конфигурация приложений предлагают основные функциональные возможности, включая параметры конфигурации, флаги компонентов, ссылки на Key Vault, моментальные снимки конфигурации, основные операции управления, метрики и журналы.
Ниже приведены рекомендации по выбору уровня.
Назначение. Уровень "Бесплатный" идеально подходит для оценки службы в непроизводственных средах, что позволяет изучить ее функции без каких-либо затрат. Уровень "Стандартный" предназначен для вариантов использования среднего объема, обеспечивая баланс производительности и экономичности. Для высокопроизводительных или корпоративных рабочих потребностей уровень "Премиум" обеспечивает высокий уровень производительности и масштабируемости, обеспечивая плавность работы приложений даже при высокой нагрузке.
Количество ресурсов на подписку. Каждый ресурс состоит из одного хранилища конфигурации. Каждая подписка ограничена одним хранилищем конфигурации для каждого региона на уровне "Бесплатный". Подписки могут иметь неограниченное количество хранилищ конфигураций на уровнях "Стандартный" и "Премиум".
Хранилище на ресурс. На уровне "Бесплатный" каждое хранилище конфигурации ограничено 10 МБ регулярного хранилища и 10 МБ хранилища моментальных снимков. На уровне "Стандартный" каждый хранилище конфигурации может использовать до 1 ГБ регулярного хранилища и дополнительное 1 ГБ хранилища моментальных снимков. На уровне "Премиум" каждый хранилище конфигурации может использовать до 4 ГБ регулярного хранилища и дополнительного 4 ГБ хранилища моментальных снимков.
Журнал редакций. Конфигурация приложений хранит журнал всех изменений, которые вносятся в ключи. На уровне "Бесплатный" эта история хранится в течение семи дней. На уровнях "Стандартный" и "Премиум" эта история хранится в течение 30 дней.
Квоты запросов. На уровне "Бесплатный" хранилища обслуживают не более 1000 запросов в день. Когда для хранилища достигается ограничение в 1000 запросов, в ответ на любые запросы вплоть до наступления полуночи в формате UTC оно возвращает код состояния HTTP 429.
На уровне "Стандартный" хранилища обслуживают до 30 000 запросов в час. После исчерпания почасовой квоты дополнительные запросы могут возвращать код состояния HTTP 429, указывающий на слишком много запросов до конца часа. При отправке большего числа запросов, превышающих квоту, эти запросы в большем количестве случаев могут возвращать код состояния 429.
Хранилища уровня "Премиум" не имеют ограничения квоты на запросы, гарантируя, что доступ к хранилищу никогда не блокируется.
Пропускная способность: Конфигурация приложений хранилища на всех уровнях имеют квоту пропускной способности. Запросы, превышающие это пособие, получают ответ http-состояния 429. Магазины на уровне "Бесплатный" не имеют гарантированной пропускной способности.
Хранилища на уровне "Стандартный" позволяют частоту выполнения† до 300 запросов в секунду (RPS) для запросов на чтение и до 60 запросов на запись.
Хранится на уровне "Премиум"† до 450 RPS для запросов на чтение и до 100 RPS для запросов на запись.
† Скорость выполнения обычно измеряется как среднее количество запросов, обрабатываемых хранилищем Конфигурация приложений без регулирования за указанный период.
Соглашение об уровне обслуживания: уровень "Бесплатный" не имеет соглашения об уровне обслуживания. Уровень "Стандартный" имеет соглашение об уровне обслуживания 99,9 % доступности и 99,95 % доступности с поддержкой георепликации. Уровень "Премиум" имеет соглашение об уровне обслуживания 99,9 % доступности и 99,99 % доступности с поддержкой георепликации.
Функции. Все уровни включают функции, включая шифрование с помощью ключей, управляемых Корпорацией Майкрософт, проверку подлинности с помощью ключа доступа или идентификатора Microsoft Entra, управления доступом на основе ролей Azure (RBAC), управляемого удостоверения, тегов служб и избыточности зоны доступности. Уровни "Стандартный" и "Премиум" предоставляют дополнительные функциональные возможности, включая поддержку Приватный канал, шифрование с помощью ключей, управляемых клиентом, защиту обратимого удаления и возможность георепликации.
Стоимость: нет затрат на использование хранилища уровня "Бесплатный".
В магазинах уровня "Стандартный" взимается плата за ежедневное использование, включающее первые 200 000 запросов каждый день. Запросы за пределы этого ежедневного распределения повлечет за собой превышение расходов.
В магазинах уровня "Премиум" также взимается плата за ежедневное использование и включается реплика. Первые 800 000 запросов к источнику и первые 800 000 запросов для реплики каждый день включаются в ежедневную плату. Запросы, превышающие это ежедневное выделение, влечет за собой превышение расходов.
Можно ли обновить или уменьшить уровень хранилища Конфигурация приложений?
Вы можете в любое время обновить хранилище Конфигурация приложений, например, с уровня "Бесплатный" до уровня "Стандартный" или "Премиум" или с уровня "Стандартный" до уровня "Премиум".
Например, с уровня "Премиум" до уровня "Стандартный" или с уровня "Стандартный" до уровня "Стандартны Конфигурация приложений й" до уровня "Бесплатный". Однако вы можете создать новое хранилище на нужном уровне, а затем импортировать данные конфигурации в это хранилище.
Где физически находятся данные, сохраненные в Конфигурации приложений?
Клиентские данные, сохраненные в Конфигурации приложений, находятся в том же регионе, где было создано клиентское хранилище Конфигурации приложений. Данные клиента реплицируются в другой регион, только если клиент включает георепликацию для этого региона. Это относится ко всем поддерживаемым регионам. Клиенты могут обращаться к клиентским данным, перемещать их или копировать из любой точки мира.
За счет чего Конфигурация приложений обеспечивает высокий уровень доступности данных?
Конфигурация приложений Azure поддерживает георепликацию для повышения устойчивости к региональным сбоям.
Конфигурация приложений Azure поддерживает Зоны доступности Azure для защиты данных и приложений от сбоев, затрагивающих один центр обработки данных. Все регионы с поддержкой зоны доступности состоят из трех зон доступности, где каждый из них является физически независимым центром обработки данных. Для обеспечения устойчивости поддержка этой возможности включена для всех клиентов Конфигурации приложений без дополнительной платы. Ниже приведены регионы, в которых служба "Конфигурация приложений" включила поддержку зон доступности. Дополнительные сведения см. в статье Регионы и Зоны доступности в Azure.
Ниже приведены регионы, в которых служба "Конфигурация приложений" включила поддержку зон доступности.
Северная и Южная Америка | Европа | Ближний Восток | Африка | Азиатско-Тихоокеанский регион |
---|---|---|---|---|
Brazil South | Центральная Франция | Центральный Катар | Восточная Австралия | |
Центральная Канада | Северная Италия | Северная часть ОАЭ; | Центральная Индия | |
Центральная часть США | Центрально-Западная Германия | Израиль, центральный регион | Восточная Япония | |
Восточная часть США | Северная Европа | Республика Корея, центральный регион | ||
Восточная часть США 2 | Восточная Норвегия; | Юго-Восточная Азия | ||
Центрально-южная часть США | южная часть Соединенного Королевства | Восточная Азия | ||
US Gov (Вирджиния) | Западная Европа | Северный Китай 3 | ||
западная часть США 2 | Центральная Швеция | |||
Западная часть США — 3 | Северная Швейцария | |||
Центральная Мексика | Центральная Польша | |||
Центральная Испания |
Существуют ли ограничения на количество запросов к Конфигурации приложений?
Конфигурация приложений хранилища имеют разные квоты запросов на основе их уровня. Бесплатные магазины уровня ограничены 1000 запросов в день, хранилища уровня "Стандартный" до 30 000 запросов в час, а магазины уровня "Премиум" не имеют ограничений на запросы, обеспечивая непрерывный доступ.
Конфигурация приложений магазины имеют квоты пропускной способности на основе их уровня. Бесплатные хранилища уровня не имеют гарантированной пропускной способности. Хранилища уровня "Стандартный" поддерживают скорость выполнения до 300 запросов в секунду (RPS) для операций чтения и до 60 RPS для операций записи. Хранилища уровня "Премиум" поддерживают скорость выполнения до 450 RPS для операций чтения и до 100 RPS для операций записи.
Разделы справки оценить количество запросов, которые мое приложение может отправить в Конфигурация приложений?
Давайте рассмотрим пример и предположим, что у вас есть приложение с 1000 параметрами конфигурации. Приложение загружает все эти параметры из Конфигурация приложений при запуске. После этого он проверяет наличие ключа sentinel для изменения конфигурации каждые 30 секунд. Независимо от того, работаете ли вы на kubernetes, Служба приложений или виртуальных машинах, предположим, что у вас есть 50 экземпляров приложения, работающих одновременно.
Во-первых, давайте рассмотрим запросы на мониторинг конфигурации. Каждый экземпляр приложения отправляет один запрос на ключ sentinel в Конфигурация приложений каждые 30 секунд, поэтому он отправляет 120 запросов (=3600/30) в час. Учитывая, что у вас есть 50 экземпляров приложения, приложение отправляет 6000 (=120x50) общих запросов каждый час для мониторинга конфигурации. Обратите внимание, что, поскольку запросы на ключ sentinel часто и в основном не изменяются, большинство из них не учитываются в пределах почасовой квоты хранилища† для хранилища уровня "Стандартный".
Во-вторых, давайте рассмотрим запросы на загрузку и перезагрузку конфигурации. Приложение загружает все параметры при запуске или при обнаружении изменения ключа sentinel. Каждый запрос к Конфигурация приложений может получить до 100 значений ключей, поэтому для загрузки всех параметров требуется 10 (=1000/100). Учитывая, что у вас есть 50 экземпляров приложений, вы отправляете 500 (=10x50) общих запросов при перезапуске приложения или перезагрузке конфигурации.
Наконец, давайте сложим его вместе. Если вы дважды обновили ключ sentinel в течение часа, ваше хранилище Конфигурация приложений таким образом получит 7000 (=6000+500x2) общих запросов в течение этого часа. Обратите внимание, что из этих запросов только около 1000 (=500x2) запросов используют доступную почасовую квоту для хранилища уровня "Стандартный". Обновите числа в этом примере, чтобы соответствовать определенной настройке и проектированию соответствующим образом, чтобы иметь достаточный буфер для почасового ограничения квоты.
†Уровневые магазины не имеют частых повторяющихся запросов, исключенных из их ежедневного ограничения.
Мое приложение получает ответы с кодом состояния HTTP 429. Почему?
Приложение может получить ответ 429 состояния HTTP в следующих случаях:
- Превышение квоты ежедневного запроса для хранилища на уровне "Бесплатный".
- Превышение квоты почасового запроса для хранилища на уровне "Стандартный".
- Превышение квоты пропускной способности для хранилища на любом уровне.
- Превышение квоты пропускной способности для хранилища на любом уровне.
- Попытка создать или изменить значение ключа при превышении квоты хранилища.
Конкретная причина невыполнения запроса будет указана в тексте ответа с кодом 429. Вы также можете собирать журналы для хранилища Конфигурация приложений в Azure Monitor и настраивать оповещения для метрики использования квоты запросов.
Получение мгновенного кода состояния HTTP 429 обычно не причиняет вреда, так как Конфигурация приложений клиенты обрабатывают их корректно. Однако если приложение регулярно испытывает ответы на код состояния HTTP 429, рассмотрите следующие варианты:
- Обновите хранилище до уровня "Премиум": этот уровень не имеет ограничения квоты на запросы и увеличил квоту хранилища и более высокую пропускную способность.
- Используйте поставщики Конфигурация приложений: у поставщиков есть встроенные возможности повторных попыток и кэширования, а также множество других функций устойчивости. Обязательно обновите последнюю версию поставщика для всех последних улучшений.
- Используйте пакеты SDK Конфигурация приложений, если приложению нужно отправлять запросы на запись. Хотя пакеты SDK могут быть не столь функциональными, как поставщики, они автоматически повторяют код состояния HTTP 429 и другие временные ошибки.
- Включите логику повторных попыток в пользовательские клиенты, если вы не можете использовать поставщики Конфигурация приложений или пакеты SDK. Заголовок
retry-after-ms
в ответе предоставляет предлагаемое время ожидания (в миллисекундах) перед повтором запроса. - Распределение запросов между несколькими экземплярами клиента: это помогает достичь максимальной пропускной способности из хранилища Конфигурация приложений.
- Уменьшите количество запросов, сделанных в Конфигурация приложений. Следуйте инструкциям, чтобы свести к минимуму количество запросов.
- Повышение устойчивости приложения: рекомендуется интегрировать георепликацию, чтобы разрешить отработку отказа и балансировку нагрузки. Ознакомьтесь с рекомендациями по созданию высоконадежных приложений.
Почему не удается создать хранилище Конфигурации приложений с тем же именем, которое было у только что удаленного хранилища?
Все хранилища Конфигурация приложений уровня "Стандартный" и "Премиум" автоматически включили функцию обратимого удаления. Если хранилище уровня "Стандартный" или "Премиум" Конфигурация приложений удаляется, его имя зарезервировано в течение периода хранения. Чтобы повторно создать хранилище с тем же именем до истечения периода хранения, необходимо сначала очистить обратимо удаленное хранилище. Это возможно только в том случае, если для хранилища не включена защита от очистки. Если защита от очистки включена, придется дождаться окончания периода хранения. Используйте функцию очистки или задайте более короткий срок хранения, если вам часто требуется удалять и повторно создавать хранилища с тем же именем. Рабочие процессы, требующие повторного создания хранилища с тем же именем, должны разрешать один час между очисткой хранилища конфигурации и последующим созданием. Эта рекомендация выполняется асинхронно, так как после запроса очистки ресурсов хранилища конфигурации требуется немного дополнительного времени для завершения. Чтобы избежать необходимости ждать, рекомендуется использовать уникальные имена рабочих процессов, создающих эфемерные хранилища конфигураций.
Как восстановить хранилище Конфигурации приложений, удаленное по ошибке?
Все Конфигурация приложений хранилища в уровнях "Стандартный" и "Премиум" поддерживают функцию обратимого удаления, которая не может быть отключена. Вы можете восстановить удаленное хранилище в течение заданного срока хранения. Выполните эти инструкции, чтобы восстановить случайно удаленное хранилище Конфигурации приложений.
Можно ли создавать и обновлять флаги компонентов или ссылки на Key Vault программным способом?
Да. В то время как вы можете управлять флагами компонентов и ссылками на Key Vault в Конфигурации приложений с помощью портала Azure или CLI, вы также можете создавать и обновлять их программными средствами с помощью пакетов SDK Конфигурации приложений. Следовательно, вы можете написать настроенный портал управления или управлять ими в Ci/CD программным способом. API-интерфейсы флага компонентов и ссылок на Key Vault доступны в пакетах SDK для всех поддерживаемых языков. Примеры для каждого поддерживаемого языка см. по этим ссылкам на примеры.
Для оценки и использования флагов компонентов в приложении требуются поставщик Конфигурации приложений и библиотеки управления функциями, доступные в .NET и Java Spring. Дополнительные сведения см. в разделе Управление функциями в разделах Краткие руководства и Учебники.
Как использовать профили Java Spring в Конфигурация приложений?
Профили Spring предоставляют способ разделения частей приложения, включая конфигурацию, и сделать его доступным только в определенных средах или при использовании определенных библиотек.
Рекомендуется задать метку значений ключей в соответствии с профилями Spring. По умолчанию библиотека поставщика Конфигурация приложений Spring загружает значения ключей с метками, соответствующими текущим активным профилям Spring (${spring.profiles.active}
), если фильтр меток не задан явным образом. Если нет активного набора профилей Spring, ключ-значения без метки будут загружены.
Например, с профилями dev
и prod
значениями ключей создаются соответствующим образом с помощью следующих меток.
Ключ | Название | Значение |
---|---|---|
/application/config.message | dev | Hello from dev |
/application/config.message | prod | Hello from prod |
Если для профиля Spring задано dev
значение, значение config.message
будет.Hello from dev
Если для профиля Spring задано prod
значение, значение config.message
будет.Hello from prod
Это поведение по умолчанию можно переопределить, задав фильтр меток в файле начальной загрузки. Библиотека поставщиков Spring загружает значения ключей с указанными метками независимо от активного профиля Spring.
spring.cloud.azure.appconfiguration.stores[0].selects[0].label-filter: my-label
Чтобы выбрать другие метки и профили Spring, можно использовать фильтр меток, например ',${spring.profiles.active}'
, который будет выбирать все ключи без метки и те, которые соответствуют профилям Spring. Наиболее правые метки имеют приоритет при обнаружении повторяющихся ключей.
Как включить управление функциями в приложениях Blazor или в качестве служб с областью действия в приложениях .NET?
Начиная с версии 3.1.0 Microsoft.FeatureManagement
библиотека позволяет запускать службы управления функциями, включая фильтры компонентов, как службы с областью действия в приложениях .NET на основе зависимостей. Чтобы воспользоваться этой функцией, можно просто заменить AddFeatureManagement
вызов в коде AddScopedFeatureManagement
следующим фрагментом кода:
services.AddScopedFeatureManagement();
Фильтры функций могут оценивать флаг компонента на основе свойств HTTP-запроса. Обычно это выполняется путем проверки HttpContext
с помощью одноэлементного IHttpContextAccessor
шаблона. Однако этот шаблон не работает для серверных приложений Blazor, где следует использовать службы с областью действия. В этом случае AddScopedFeatureManagement
следует использовать метод.
Как настроить получение объявлений о новых выпусках и других сведений о службе "Конфигурация приложений"?
Подпишитесь на наш репозиторий объявлений на GitHub.
Как сообщить о проблеме или внести предложение?
Вы можете связаться с нами прямо на сайте GitHub.