Что такое Фаргейт? Что такое контейнеры? Как развернуть автомасштабируемые веб-серверы в контейнерах Docker.

Что такое Фаргейт?

AWS Fargate - это технология, которую можно использовать с Amazon ECS для запуска контейнеров без необходимости управлять серверами или кластерами инстансов Amazon EC2. С Fargate вам больше не нужно выделять, настраивать или масштабировать кластеры виртуальных машин для запуска контейнеров. Это избавляет от необходимости выбирать типы серверов, решать, когда масштабировать кластеры или оптимизировать упаковку кластеров.

Когда вы запускаете свои задачи и службы Amazon ECS с типом запуска Fargate или поставщиком емкости Fargate, вы упаковываете свое приложение в контейнеры, указываете требования к ЦП и памяти, определяете политики сети и IAM и запускаете приложение. Каждая задача Fargate имеет свою собственную границу изоляции и не разделяет базовое ядро, ресурсы ЦП, ресурсы памяти или эластичный сетевой интерфейс с другой задачей. Часто задаваемые вопросы!

Что такое контейнеры?

Контейнер - это стандартная единица программного обеспечения, которая упаковывает код и все его зависимости, поэтому приложение быстро и надежно перемещается из одной вычислительной среды в другую. Образ контейнера Docker - это легкий автономный исполняемый пакет программного обеспечения, который включает в себя все необходимое для запуска приложения: код, среду выполнения, системные инструменты, системные библиотеки и настройки.

Образы контейнера становятся контейнерами во время выполнения, а в случае контейнеров Docker - образы становятся контейнерами, когда они запускаются на Docker Engine. Контейнерное программное обеспечение, доступное как для приложений Linux, так и для Windows, всегда будет работать одинаково, независимо от инфраструктуры. Контейнеры изолируют программное обеспечение от его среды и гарантируют, что оно работает единообразно, несмотря на различия, например, между разработкой и стадией.

Самым известным инструментом оркестрации контейнеров, который, вероятно, используется ежедневно в отрасли, является Kubernetes (созданный Google, но позже переданный сообществу с открытым исходным кодом). Существует множество разновидностей инструментов оркестрации контейнеров, таких как Docker Swarm, Google Kubernetes Engine. AWS также имеет свой управляемый оркестратор контейнеров под названием Amazon ECS (Elastic Container Service) и Amazon EKS (Elastic Kubernetes Service).

Что мы собираемся использовать

Amazon ECS - это один из сервисов управляемых контейнеров, предоставляемых AWS. ECS - это проприетарный сервис AWS. Компоненты, на которых работает ECS, в том числе:

  • Кластер: логический кластер ресурса ECS.
  • Определения задач: набор или набор задач, которые будут использоваться для запуска приложения. Он также содержит определение контейнера, которое будет использоваться для определения того, какой контейнер будет запускаться. Определение задачи похоже на Развертывание, если мы сравним его с терминологией Kubernetes.
  • Задачи: чтобы подготовить ваше приложение к запуску в Amazon ECS, выберите набор или сбор для контейнера или более того, который был определен в определении задачи. Задача описывается аналогично Pod, если обращаться к терминологии Kubernetes.
  • Службы: служба, которая будет использоваться для предоставления определения задачи.
  • Amazon ECR: это реестр AWS, в котором хранятся контейнеры.

В терминологии ECS есть различные типы, называемые типом запуска, которые будут использоваться в качестве справочных сведений о том, какой тип задачи следует запускать. Некоторые из типов запуска:

  • Fargate: задачи будут выполняться без сервера.
  • Экземпляр ECS. Задача будет запускаться в инстансе Amazon ECS: это либо внешний инстанс, зарегистрированный с помощью ECS Anywhere, либо инстанс Amazon EC2.
  • Внешний: задача будет выполняться локально на виртуальном экземпляре, зарегистрированном в кластере ECS.

В этом сценарии я создам кластер ECS, который будет использовать Fargate в качестве типа запуска. Образ контейнера будет извлечен или загружен из Docker Hub.

Примечание. AWS может повлечь за собой дополнительные расходы.

Задача 1

Откройте веб-консоль AWS. Перейдите на страницу ECS и создайте новый кластер из меню Кластер.

Выберите шаблон кластера. Я собираюсь использовать Только сеть, потому что я хочу использовать Fargate в качестве Типа запуска.

Настройте кластер: с именем кластера как FG-StagingDemo. Создайте новый VPC с CIDR, а также с новыми подсетями (выберите свой собственный диапазон CIDR, в зависимости от ваших требований). И пометьте его ключевым именем для справки.

Нажмите Create и дождитесь завершения статуса Launch, как показано ниже.

Теперь убедитесь, что кластер создан здесь.

Задача 2

Создайте новую задачу для определений задач и выполните новое определение задачи.

Выберите совместимость типа запуска (в нашем случае выбираем FARGATE).

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

Теперь прикрепите политики разрешений ›в задаче типа поиска› выберите AmazonECSTaskExecutionRolePolicy ›перейдите к просмотру› Дать имя роли и создать роль.

Теперь вернитесь к Задаче 2 ›Создайте новое определение задачи› Назовите ее ›Выберите роль задачи, которую мы создали ранее› перейдите к роли выполнения задачи ›и выберите ту же› затем Размер задачи ›Память задач / CPU (вы можете установить аналогичный моему ниже).

Теперь пришло время нажать и создать Добавить контейнер ›

Пришло время дать контейнеру имя и выбрать изображение как nginx: latest и нажать «Добавить».

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

После создания будет показано 2 из 2 завершено.

Задача 3

Затем вернитесь на страницу Clusters. В созданном кластере FG-StagingDemo позволяет настроить Service для запуска Task Definition. На вкладке «Сервис» нажмите кнопку «Создать».

В службе настройки выберите тип запуска FARGATE, и мы будем ссылаться на определение задачи, которое было создано ранее, то есть FG-StagingDemo с номером версии 1. Выберите кластер, задайте имя и количество задач, которые будут выполняться. . В этой ранней конфигурации я установлю количество задач как 1 задачу.

Выберите тип развертывания. Мы выберем Rolling update и создадим новый тег с ключевым именем. После этого нажмите Далее.

Пришло время настроить сетевые группы VPC и безопасности. Вы можете выбрать VPC, который мы создали ранее в Задаче 1, а затем выбрать обе подсети, чтобы добавить его, затем нажмите Группы безопасности ›Изменить›

В разделе «Назначенные группы безопасности» ›выберите создать новую группу безопасности› и назовите ее ›добавить правила для входящих подключений› HTTP и HTTPS ›Источник как где угодно.

Затем нажмите следующий шаг и пропустите настройку автоматического масштабирования ›на« Просмотр и создание ».

Убедитесь, что созданная Служба, FG-StagingDemo была успешно создана. Подождите несколько секунд, пока в счетчике запущенных задач не отобразится 1 Fargate (поскольку мы определили 1 номер задачи в предыдущей конфигурации службы).

Пора перейти к сведениям о задаче и найти общедоступный IP-адрес, чтобы проверить, доступен ли веб-сервер Nginx извне.

Как вы можете видеть на скриншоте ниже, мы успешно развернули контейнер веб-сервера nginx.

Можно сделать вывод, что кластер ECS настроен правильно. Потому что контейнер, который мы определили, запущен и доступен. Посмотрим, что произойдет, если масштаб задачи увеличится. Потому что в некоторых обстоятельствах задача может быть увеличена или уменьшена в зависимости от потребностей.

Вернитесь в сервисное меню. Нажмите кнопку «Обновить» на странице сервиса.

Измените количество задач на 2 ›Пропустить, чтобы просмотреть› и обновить службу.

Затем вернитесь в сервисное меню. Затем ›вкладка Задачи. Убедитесь, что запущенная задача была увеличена до двух.

В разделе «Задачи» нажмите вновь созданную Задачу, скопируйте общедоступный IP-адрес в браузер и сравните обе ссылки, работающие нормально.

Когда вы закончите с этим проектом, обязательно удалите кластер и ресурсы (если он застрял, убедитесь, что вы вручную удалили VPC, который мы создали ранее).

Заключение

Мы успешно разобрались, как настроить кластер ECS вручную с нуля из веб-консоли AWS. Включая все необходимые компоненты, необходимые для настройки кластера ECS. Мы также убедились, что кластер ECS успешно создан и контейнер работает или доступен для всех.

Спасибо, что нашли время, чтобы прочитать это, надеюсь, вы сочли это полезным. Если да, обязательно дайте мне знать в комментариях.

Больше контента на plainenglish.io