Преимущество этого подхода в том, что образы Docker собираются довольно быстро, поэтому их можно запускать и тестировать на локальном компьютере. Вы также можете использовать богатые возможности Kubernetes, включая различные стратегии развертывания, автовосстановление, автомасштабирование и т. д. Недостатки связаны с повышением сложности — как с точки зрения инфраструктуры (развертывание кластеров Kubernetes является сложным и дорогим, хотя большинство основных облачных провайдеров теперь предоставляют управляемые сервисы Kubernetes, на которые можно возложить часть этой работы), так и в смысле дополнительных слоев абстракции (Kubernetes, Docker, Packer), которые необходимо изучать, обслуживать и отлаживать.
Резюме
Ниже показана сводная таблица самых популярных средств IaC (табл. 1.4). Заметьте, что здесь приводятся
Таблица 1.4. Сравнение наиболее распространенных способов использования самых популярных средств IaC
Инструмент
Код
Облака
Тип
Инфраструктура
Язык
Агент
Вед. cервер
Сообщество
Зрелость
Chef
Откр.
Все
Упр. конф.
Изменяемая
Процедурный
Есть
Есть
Большое
Высокая
Puppet
Откр.
Все
Упр. конф.
Изменяемая
Декларативный
Есть
Есть
Большое
Высокая
Ansible
Откр.
Все
Упр. конф.
Изменяемая
Процедурный
Нет
Нет
Огромное
Средняя
SaltStack
Откр.
Все
Упр. конф.
Изменяемая
Декларативный
Есть
Есть
Большое
Средняя
CloudFormation
Закр.
AWS
Иниц. рес.
Неизменяемая
Декларативный
Нет
Нет
Маленькое
Средняя
Heat
Откр.
Все
Иниц. рес.
Неизменяемая
Декларативный
Нет
Нет
Маленькое
Низкая
Terraform
Откр.
Все
Иниц. рес.
Неизменяемая
Декларативный
Нет
Нет
Огромное
Низкая
В компании Gruntwork нам нужно было открытое, не привязанное к конкретному облаку средство инициализации ресурсов, которое поддерживает неизменяемую инфраструктуру, декларативный язык, архитектуру, не требующую наличия центральных серверов и агентов, и имеет большое сообщество и зрелую кодовую базу. Как показывает табл. 1.4, проект Terraform хоть и неидеальный, но именно он больше всего удовлетворяет нашим критериям.
Подходит ли он под ваши критерии? Если да, то переходите к главе 2, в которой вы научитесь его использовать.
3 Источник:
4 Идемпотентность — свойство объекта или операции при повторном применении операции к объекту давать тот же результат, что и при первом.
5 В современных операционных системах код выполняется в одном из двух «пространств»: в пространстве ядра и пространстве пользователя. Код, который работает в пространстве ядра, имеет прямой и неограниченный доступ ко всему оборудованию. На него не распространяются ограничения безопасности: вы можете выполнять любые процессорные инструкции, обращаться к любому участку жесткого диска, записывать в любой адрес памяти. При этом сбой в пространстве ядра обычно приводит к сбою всего компьютера. В связи с этим оно обычно отводится для самых низкоуровневых и доверенных функций ОС (которые называют ядром). Код в пользовательском пространстве не имеет непосредственного доступа к аппаратному обеспечению и вместо этого должен использовать API, предоставляемые ядром ОС. Эти интерфейсы могут накладывать ограничения безопасности (скажем, права доступа) и локализовать сбои в пользовательских приложениях, поэтому весь прикладной код работает в пользовательском пространстве.
6 Той изоляции, которую предоставляют контейнеры, как правило, достаточно для выполнения собственного кода. Но если нужно выполнять сторонний код (например, если вы хотите создать свое публичное облако), который может намеренно предпринять вредоносные действия, вам пригодятся повышенные гарантии изоляции ВМ.
7 В качестве альтернативы bash для настройки образов в Packer можно использовать средства управления конфигурацией, такие как Ansible и Chef.
8 В качестве примера можно взять библиотеку IaC от компании Gruntwork по адресу bit.ly/2H3Y7yT.
9 Docker, Packer и Kubernetes не участвуют в сравнении, так как их можно использовать в сочетании с любыми средствами управления конфигурацией или инициализации ресурсов.
10 На сегодня различие между управлением конфигурацией и инициализацией ресурсов еще менее очевидно, поскольку ряд популярных средств, входящих в первую категорию, таких как Chef Provisioning (https://github.com/chef-boneyard/chef-provisioning) и Puppet AWS Module (bit.ly/2YIQIuN), постепенно улучшил поддержку инициализации ресурсов.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии