Если вам нужно настроить кластер AWS Elastic Kubernetes Service (Amazon EKS) с использованием Terraform, то у вас повезло. Используя модуль Terraform EKS и все необходимые ресурсы, вы можете создать одну конфигурацию Terraform и создать кластер AKS с помощью кода.
Amazon EKS – это управляемая служба для запуска Kubernetes на AWS без установки, управления и поддержки собственного кластера Kubernetes. Создание кластера EKS с помощью Terraform позволяет создавать ресурсы быстро, эффективно и с автоматизированным подходом.
В этом руководстве вы узнаете, как создать и запустить конфигурацию Terraform для создания кластера EKS с помощью Terraform пошагово. Давайте начнем!
Предварительные требования
Эта публикация будет пошаговым руководством. Если вы хотите следовать за нами, убедитесь, что у вас есть следующее:
- Учетная запись Amazon Web Service (AWS).
- A code editor – Even though you can use any text editor to work with Terraform configuration files, you should consider Visual Studio (VS) Code as it understands the HCL Terraform language well.
- Terraform – В этом руководстве будет использоваться Terraform v0.14.9, работающий на Ubuntu 18.04.5 LTS, но любая операционная система с Terraform должна подойти.
Создание конфигурации Terraform для кластера AWS EKS
Terraform – это инструмент инфраструктуры в виде кода, который позволяет создавать, изменять и версионировать инфраструктуру безопасно и эффективно. Terraform использует различные типы файлов конфигурации. Каждый файл написан либо в обычном текстовом формате (.tf), либо в формате JSON (.tfjson).
Давайте сначала создадим конфигурацию Terraform, которая создаст кластер AKS с нуля при применении.
1. Откройте терминал.
2. Создайте папку с именем ~/terraform-eks-cluster-demo, затем измените (cd
) рабочий каталог на эту папку. В этой папке будут содержаться все файлы конфигурации, с которыми вы будете работать.
3. Затем откройте ваш любимый редактор кода, скопируйте/вставьте следующую конфигурацию и сохраните ее в файле main.tf в ~/terraform-eks-cluster-demo. Этот файл main.tf – это конфигурация Terraform для кластера AKS.
Файл main.tf содержит все ресурсы, необходимые для развертывания кластера EKS:
- Роль управления идентификацией и доступом AWS (IAM) (
terraformekscluster
) – Этот ресурс будет управляться Amazon EKS и вызывать другие службы AWS, такие как AWS S3, CloudWatch и т. д., от вашего имени для управления ресурсами, которые вы используете с этой службой. - Группа безопасности AWS EC2 (
resource "aws_security_group" "eks-cluster"
) – Позволяет входящему и исходящему сетевому трафику от кластера AWS EKS. Вы будете запускать группу безопасности с именемSG-eks-cluster
, привязанную к VPC ID, разрешая весь трафик в/из кластера.0.0.0.0/0
– это IP-адрес Интернета. - Кластер EKS (
terraformEKScluster
) – Этот кластер EKS будет иметьверсию 1.19
. - Роль IAM для узлов EKS для вызова других служб AWS (
eks-node-group
). Эта роль привязана к политике, которая позволяет предполагать временные учетные данные безопасности на экземпляре для доступа к другим ресурсам AWS. - Группа узлов кластера EKS (
node_group1
) – Этот ресурс определяет количество узлов в кластере через атрибутscaling_config
.
4. Создайте еще один файл в ~/terraform-eks-cluster-demo, назовите его provider.tf и вставьте содержимое ниже. Файл поставщика определяет поставщиков, таких как AWS, Oracle или Azure и т. д., чтобы Terraform мог подключаться к правильным облачным службам.
Руководство будет создавать ресурсы в регионе us-east-2.
5. Убедитесь, что все необходимые файлы ниже присутствуют в папке, запустив команду tree
.

Создание кластера AWS EKS с помощью модуля Terraform EKS
Теперь, когда у вас есть файл конфигурации Terraform и файлы переменных готовы к использованию, пришло время инициировать Terraform и создать кластер. Для создания кластера AKS, как и для всех других конфигураций Terraform, Terraform использует три команды (terraform init → terraform plan → terraform apply).
Давайте пройдемся по каждому этапу сейчас.
1. Откройте терминал и перейдите в каталог ~/terraform-eks-cluster-demo
. cd ~/terraform-eks-cluster-demo
2. Запустите команду terraform init
в том же каталоге. Команда terraform init
инициализирует плагины и провайдеры, которые необходимы для работы с ресурсами.
Если все пойдет хорошо, вы увидите сообщение Terraform был успешно инициализирован в выводе, как показано ниже.

3. Теперь выполните команду terraform plan
. Запуск terraform plan
необязателен, но рекомендуется для проверки синтаксиса файлов конфигурации и получения чертежа ресурсов, которые будут развернуты в вашей инфраструктуре.
При успешном выполнении вы увидите сообщение вроде План: “X” для добавления, “Y” для изменения или “Z” для уничтожения в выводе.

4. Затем выполните terraform apply
, чтобы удалить обучающие колесики и вызвать Terraform для создания кластера AKS. Вызов terraform apply
считывает каждую конфигурацию (*.tf) в текущем каталоге для компиляции файла состояния, отправляемого в AWS для создания кластера EKS и других компонентов.
AWS взимает плату в размере $0,10 за каждый час использования кластера EKS. Обязательно уничтожьте любые тестовые кластеры, которые вы создали!

Проверка кластера AWS EKS
На этом этапе у вас должен быть работающий кластер AKS, но давайте проверим, чтобы убедиться в этом в AWS Management Console.
1. Откройте свой любимый веб-браузер, перейдите в Консоль управления AWS и войдите в систему.
2. Нажмите на строку поиска в верхней части, найдите EKS и выберите пункт меню Упругий сервис Kubernetes. Вы должны увидеть кластер EKS с названием terraformEKScluster.


3. Нажмите на Настройка, и вы должны увидеть, что каждый компонент успешно создан, как вы определили в конфигурации Terraform, как показано ниже.



Вывод
В этом учебнике вы узнали, как использовать Terraform для развертывания кластера AWS EKS и его компонентов. Теперь вы готовы использовать этот кластер EKS и разворачивать приложения!
Какие приложения вы планируете развернуть на вашем вновь созданном кластере?