В первой части статьи мы рассмотрели различные варианты запуска контейнеров в облаке на примере Amazon Web Services. В этом материале мы на практике разберем, как выглядит создание и запуск кластера Elastic Kubernetes Service. ------------------- Итак, прежде чем начать работу EKS, нам потребуется несколько инструментов: Awscli – консольная утилита для работы с облаком AWS (нужен  ключ для доступа в аккаунт, потому что лёгкого способа зайти через логин/пароль не существует, но вы и так это знаете); Ekscli – консольная утилита для работы с EKS; Kubectl – консольная утилита для работы с кластерами Kubernetes; Terraform – решение Infrastructure as Code от компании HashiСorp, помогающее декларативно управлять инфраструктурой. Существует несколько способов развернуть кластер, мы рассмотрим два из них и намеренно проигнорируем вариант настройки через графический интерфейс. Я уже вижу поднятую руку и возмущенный вопрос: «Мы заплатим столько денег, чтобы вводить команды в консольных утилитах AWS?». На этот раз – да. На самом деле, вы, конечно, можете покликать мышкой в веб-консоли и настроить всё необходимое, но, если вы занимаетесь развертыванием EKS впервые, я бы рекомендовал воспользоваться консольными утилитами. Да и я буду показывать именно команды и конфиги, чтобы было понятно, что происходит на каждом этапе, а вы сможете это потом воспроизвести. Самый простой прием — это воспользоваться утилитой Eksctl. Она бесплатно доступна на сайте Weaveworks. Сама команда будет выглядеть примерно так: Для ее создания мы использовали следующие ключи:  create – создаёт кластер; version – указывает, какую версию Kubernetes мы разворачиваем. (Обычно доступна свежая версия плюс несколько предыдущих, если вам требуется совместимость, то лучше свериться с актуальной документацией); region – указывает на то, в каком регионе мы создаём кластер; nodegroup-name – задает имя NodeGroup, внутри которой будут создаваться рабочие ноды; node-type – указывает тип нод. В AWS, как и в других подобных провайдерах, можно выбирать ноды в зависимости от технических характеристик. Выбирать можно любую, но нужно помнить, что Kubernetes – сервис требовательный, и предполагаемую нагрузку лучше рассчитать заранее; nodes – указывает на количество нод, которые предстоит создать. То же самое можно воспроизвести, подготовив конфигурационный файл, где будут описаны все желаемые параметры нашего будущего кластера: Этот способ можно считать и более предпочтительным, особенно если вы сохраните конфигурационный файл для будущего использования. После выполнения команды, которая обычно занимает достаточно продолжительное время, конфиг для подключения к кластеру окажется в папке, а kube в домашней директории пользователя. Всё как обычно. Соответственно, теперь через kubectl можно применять yaml-файлы, которые у вас конечно же уже готовы. Второй вариант — это работа с Terraform. Если вы будете использовать этот способ, то он может сработать за пределами AWS с минимальными правками. Плюс, если всё остальное в AWS вы делаете с помощью Terraform, то можно и в данном случае  воспользоваться этим инструментом. Если потребуется изменить или удалить какой-нибудь ресурс, то делать это через Terraform куда проще, чем руками. Если вы скачали Terraform, остаётся подготовить конфигурационные файлы и запустить необходимые команды. У HashiCorp есть отличный пример в их репозитории, на основе которого мы и выполним нашу задачу. Клонируем себе этот репозиторий и получаем небольшой набор файлов:  При использовании Terraform наша задача сводится к созданию объектов облака AWS, из которых будет состоять будущий кластер. В репозитории под все необходимые объекты есть готовые tf-файлы: vpc.tf – создает VPC (Virtual private cloud), зоны доступности и подсети, используя модуль AWS VPC;  security-groups.tf – создает группы безопасности, которые будет использовать наш кластер;  eks-cluster.tf – создаёт все ресурсы кластера с помощью модуля AWS EKS Module. Здесь будет отражено имя кластера, версия Kubernetes, группы нод и т.п.;  outputs.tf – определяет конфигурацию, которую мы получим на выходе; versions.tf – указывает версию самой Terraform и модулей, которые будут использоваться. В файле eks-cluster.tf мы внесём все параметры нашего кластера, как в предыдущих примерах: А дальше, всё как обычно в Terraform: terraform init > terraform plan > terraform apply. И получается такой же кластер, как и выше. Мы разобрали два способа создания кластера EKS, но это только самые популярные варианты. Самостоятельно можно также рассмотреть и Cloudformation – собственную систему Infrastructure as Code от AWS, или, например, посмотреть, как развёртывать кластер с помощью систем вроде Ansible или Chef.  Материал подготовил руководитель группы защиты инфраструктурных ИТ-решений компании «Газинформсервис» Сергей Полунин, блог Сергея можно почитать по ссылке.  интегратор и вендор в области ИБ