Что такое стеки развертывания?

Завершено

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

В этом уроке вы узнаете о организации ресурсов в Azure и о том, как стеки развертывания помогут вам управлять ресурсами способами, которые не были возможными раньше.

Организация ресурсов

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

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

Одно приложение группы ресурсов

Существуют случаи, когда для приложения используется одна группа ресурсов. Если вы не знакомы с Azure и только начинаете работу с средой разработки или развертываете рабочее приложение без большого количества ресурсов, одна группа ресурсов может работать.

Группа ресурсов часто используется в качестве границы безопасности для разрешений. Вы можете управлять одним назначением управления доступом на основе ролей (RBAC) в области группы ресурсов, если требования к безопасности не являются строгими.

Предположим, что приложение состоит из службы приложений, аналитики приложений и базы данных SQL, развернутой в одной группе ресурсов. В вашей организации есть отдельные команды для управления вычислительными ресурсами, веб-приложениями и базами данных. Если для политики безопасности вашей организации требуется детализированный RBAC, необходимо ограничить разрешения в области ресурсов вместо области группы ресурсов.

Схема, представляющая приложение со своими ресурсами, развернутыми в одной группе ресурсов.

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

Приложение группы ресурсов с несколькими ресурсами

Что происходит, когда приложение масштабируется до точки, в которой требуется изменение? Возможно, потребуется принять части приложения и разбить их на отдельные группы ресурсов для упрощенных элементов управления безопасностью. Например, можно поместить все вычислительные ресурсы в группу вычислительных ресурсов, ресурсы приложения в группу ресурсов приложения и все базы данных в группу ресурсов базы данных.

Схема, представляющая приложение со своими ресурсами, развернутыми в нескольких группах ресурсов.

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

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

Операции развертывания могут выполняться несколько раз в модели группы ресурсов. При развертывании ресурсов в зависимости от метода развертывания может потребоваться выполнить несколько команд развертывания. Большинство развертываний в Azure относятся к группе ресурсов, поэтому сначала необходимо развернуть сетевые ресурсы, а затем ресурсы приложения. Это же относится к операциям удаления. Если необходимо удалить все группы ресурсов, связанные с приложением, может потребоваться выполнить несколько операций удаления.

Ввод стеков развертывания

Стеки развертывания изменяют, как вы думаете о организации ресурсов в группах ресурсов и подписках. Стек развертывания позволяет сгруппировать все ресурсы, составляющие приложение, независимо от того, где они находятся в иерархии организации ресурсов Azure. Их можно управлять одним блоком. Стеки развертывания позволяют выполнять операции жизненного цикла в коллекции ресурсов, составляющих стек.

Рассмотрим стеки развертывания как ряд указателей, которые группирует ресурсы приложения в один блок. Стеки развертывания можно создавать в разных областях, таких как группы ресурсов, подписки и группы управления.

Схема, представляющая ресурсы приложения, управляемые стеком развертывания и развернутые в нескольких группах ресурсов.

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

Использование стеков развертывания

Какие операции можно выполнять в стеках развертывания? Вы можете создавать, перечислять, обновлять и удалять стеки развертывания. Для ресурсов вы можете просматривать ресурсы в стеке, добавлять и удалять ресурсы в стеке, а также защищать стек и его ресурсы от удаления.

Создание и развертывание стека развертывания и его ресурсов почти идентично стандартному развертыванию Azure, и оно использует те же шаблоны JSON ARM, файлы Bicep или спецификации шаблонов, которые вы используете. Например:

Команда Azure CLI для развертывания Bicep-файла в группе ресурсов:

az deployment group create \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep

Команда Azure CLI для создания стека развертывания в области группы ресурсов:

az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none

Стеки развертывания позволяют эффективно очищать среду. Стеки развертывания позволяют удалять стек и все его ресурсы через один вызов API, не требуя понимания зависимостей. Эта функция упрощает удаление ресурсов надежным способом, что повышает скорость удаления ресурсов. Например:

Команда Azure CLI для удаления стека развертывания в области группы ресурсов вместе со своими ресурсами:

az stack group delete \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --action-on-unmanage detachAll

Примечание.

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

Управляемые ресурсы

При отправке Bicep-файла, шаблона JSON ARM или спецификации шаблона в стек развертывания стек стек будет отвечать за управление ресурсами, описанными в файле. Ресурсы, управляемые стеком, называются управляемыми ресурсами, но эти ресурсы по-прежнему изменяются с помощью исходных файлов шаблонов.

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

Запретить параметры

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