Рубрики
Uncategorized

Важность разделенных сред

TL; DR разделительные среды (DEV, STG, PRD) на учетную запись облачного поставщика (AWS, Azure, GCP и т. Д.) Это P … Помечено с DevOps, AWS, Azure, Google Cloud.

TL; DR Разделительные среды (DEV, STG, PRD) на счет облака-поставщика ( AWS , Azure , GCP и т. Д.) Предпочтительно для того, чтобы иметь минимум до нулевого простоя при развертывании до производства. Это включает в себя отделение DEV от STG, даже если он распространен для управления Dev и STG на том же счете.

Пролог

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

В этом блоге-посте я поделюсь трудностями, с которыми я столкнулся во время развертывания к производству при использовании двух учетных записей Dev + STG и PRD Отказ Эти трудности могут быть избежать, отделяя все среды на разные счета Dev, STG и PRD Отказ

Допущения

  • Ради простоты, отныне я ссылаюсь на облачный поставщик как AWS Хотя это отношение к другим облачным провайдерам.
  • Все Среда — это развернут В том же регионе Поскольку мы не хотим выяснить, что в Ирландии доступен какой-то облачный сервис, но не в Лондоне.

Без дальнейшего ADO, Dev + STG и PRD против dev, stg и prd

# 1 Сервисные квоты сюрпризы

Предположим, что каждая среда включает в себя VPC и одну виртуальную машину (экземпляр EC2). Виртуальная машина развернута в публичной подсети и имеет общедоступный статический IP (EIP — упругий IP).

Квота по умолчанию EIP 5 в регионе Отказ Наше приложение выросло больше, и вдруг мы попали в предел максимальных EIP. В Dev + STG Учет, мы идем к Запрашивая рост квоты Страница и поднимите предел от 5 до 20 («на всякий случай»). Это может занять минуты до часа для квоты для обновления; Обычно это вопрос минут (тебе повезет?)

Пришло время развернуть из dev к СТГ , и так как мы знаем, что мы делаем, мы используем инфраструктуру в качестве кода (IAC) для управления ресурсами нашей среды, в частности, мы используем Террафом Отказ

Dev + STG (тот же аккаунт)

Мы запускаем CI/CD-трубопровод и план от dev к СТГ ; Все хорошо, поэтому мы применяем изменения в СТГ и … Это работало как ожидалось. Теперь пришло время планировать от СТГ к преступность И если план в порядке, то применяя изменения в PRD полностью безопасен, верно? Неправильно Отказ Terraform не принимает во внимание квоты служб, поэтому, даже если план пройдет, применяя изменения в PRD приведет к неудачному развертыванию к вашему PRD окружающая обстановка. Это потому, что «мы» забыли поднять квоту службы в преступность Итак, теперь мы должны войти в PRD-счет и попросить увеличить квоту, молиться, чтобы она не займет много времени, и повторно развернуть преступность .

dev и stg (отдельные аккаунты)

Перемотание, приложение стало больше, и мы попали в предел EIP. В dev Учетная запись, мы запрашиваем рост квоты и так далее. Теперь пришло время планировать от дев к СТГ ; Всего идет хорошо, поэтому мы применяем изменения в СТГ и бум 💥, мы получаем ошибку. К счастью, это произошло в СТГ а не в преступность Итак, теперь мы знаем, что мы должны запросить рост квоты перед развертыванием до преступность . Мы даже получили доказательство того, что в журналах сервиса CI/CD.

# 2 Политики репозитория радости О, радость

Давайте поговорим о Эластичный реестр контейнера (ECR) ; Обычно я храним все изображения Docker на одной учетной записи, а также доступа к всем другим аккаунтам. Некоторые компании предпочитают хранить изображения в DEV-счет (или DEV + STG-счет), некоторые в PRD-счет; В любом случае, он требует совместного использования изображений между учетными записями.

Изображения дифференцируются тегами, такие как Приложение: 1.0.1.2383-dev и Приложение: 1.0.1.2383-PRD . Вы можете увидеть здесь, что я опущенных СТГ потому что PRD Изображения развернуты до stg прежде чем они будут развернуты на преступность ; Мы не строим что-то новое для преступность . Это не обязательно, а некоторые приложения могут потребовать определенной сборки для преступность Хотя это не рекомендуется.

Dev + STG (тот же аккаунт)

Работа на Dev + STG отлично, потому что нет накладных расходов с Политики репозитория Поскольку они на одном и том же счете, поэтому просто установите его один раз для них обоих. Развертывание контейнеров в СТГ работает как ожидалось без сюрпризов. Сроки изготовления! Ты угадал; это терпит неудачу, потому что преступность Учетная запись не может получить доступ к изображениям, если вы не добавите политику репозитории, которая его позволяет.

dev и stg (отдельные аккаунты)

Я горжусь тобой. Вы догадались снова, снова; Та же проблема произойдет, когда мы развертываем СТГ заставляя нас добавить соответствующую политику репозитории, чтобы позволить доступу от СТГ и от преступность .

Мы люди люди

Забыть запросить рост квоты в PRD это то, что может случиться с кем угодно, так почему принять шанс?

«Я человек. Я был разработан, чтобы сделать ошибки. Работа команды DEVOPS состоит в том, чтобы разработать систему, которая смягчает риск от этих ошибок максимально возможным (честен здесь, ни одна система не является идиоттеком). « (мной)

Развертывание до СТГ Учетная запись, отделенная от dev Предоставляет оптимальные условия для избежания непрерывных исключений при развертывании к PRD , что именно то, что мы стремимся — Нет сюрпризов в производстве .

Но затраты?!

Важно учитывать расходы на разделительную среду на разные счета. Например, если вы используете AWS Web Application Firewall (WAF) , можно прикрепить брандмауэр к ресурсам обоих дев и СТГ Отказ Разделение dev и СТГ На разные учетные записи означает, что вам необходимо создать ресурс WAF в обеих учетных записях, следовательно, оплатить его «дважды».

Все дело доходит до вопроса о том, что будет стоить больше, потенциально уплачивающих для ресурсов, которые могли бы поделиться между dev и СТГ или иметь непредсказуемые развертывания к PRD это может привести к нежелательным простоям времени. Как только вы ответите на этот вопрос, вы будете знать, если вы готовы отделить stg от дев .

Бонусная точка — OPS аккаунт

Если вы получили это далеко, это значит, что вы на самом деле в нем, поэтому, если вы хотите сделать его еще дальше, лучше всего создать еще одну учетную запись для «операций» (OPS); Некоторые могут назвать это «управлением» (MGMT).

Некоторые компании используют свой Dev-счет как OPS-счет. Это не так уж плохо, хотя это немного упустить точку зрения, которые влияют на всю среду и счета, в DEV-счет.

Вот основные причины иметь отдельный OPS-счет:

  • DNS : Легко управлять всеми записями DNS на одном аккаунте. Делать это в Dev-счет в заблуждение, поскольку DNS Records актуальны для всех учетных записей и сред поэтому использование учетной записи OPS имеет больше смысла
  • CI/CD : Самоустановленные услуги CI/CD («бегуны») Развертывание всех условий Так что это должно быть на отдельном счете
  • Впутник : Если у вас есть VPN-соединение от вашей предельной среды к ресурсам облачных поставщиков, то облачные ресурсы VPN-соединения должны быть выполнены на отдельной учетной записи.
  • «Топ/централизованный аккаунт» : Некоторые поставщики облака предоставляют управляемые услуги для обработки всех учетных записей в одном месте. Управляю, я ссылаюсь на выставление счетов, обеспечению политики безопасности на счетах, стандартизированной Конвенции об именах на счетах и многое другое. Примеры этих типов услуг: AWS Организации , Azure DevOps , GCP Resource Manager Отказ Использование этих услуг полезно для достижения Hipaa / GDPR Правила, где «обеспечение безопасности на счетах» жизненно важно.

использованная литература

Окончательные слова

И если вы получили это далеко, то я думаю, вы узнали что-то новое сегодня:) Примеры, представленные в этом блоге, являются лишь верхушкой айсберга. Есть еще много случаев, когда разделяющие среды на разные счета уменьшают количество белых волос, которые вы растут каждый день; Я уверен, что это было научно доказано где-то.

Оригинал: «https://dev.to/unfor19/the-importance-of-separated-environments-1gja»