Kubernetes и Amazon EKS для начинающих: руководство по деплою через Pulumi

freeCodeCamp.org 56,8 тыс. 1 ч 5 мин 4 мин 20.02.2025
Главное

Это руководство по Kubernetes и Amazon EKS подготовлено Бо Карнсом (Bo Carnes) для платформы freeCodeCamp.org при поддержке компании Pulumi. В материале на практических примерах — от простого Hello World до сложного микросервисного приложения Zephyr — разбираются основы контейнеризации, управление кластерами через инфраструктуру как код (IaC) и использование ИИ-ассистентов для деплоя в облако.

📦 Основы Kubernetes: от контейнеров к оркестрации 1:06

Kubernetes (K8s) — это платформа для оркестрации контейнеров, которую Бо Карнс сравнивает с «операционной системой для облачной инфраструктуры» . Если Docker отвечает за упаковку приложения и всех его зависимостей в переносимый контейнер, то Kubernetes берет на себя управление множеством таких контейнеров в масштабах дата-центра.

Для понимания сути оркестрации Карнс приводит аналогию с рестораном :

Ключевые возможности платформы:

🛠️ Практический старт: Pods, Deployments и Services 3:51

В качестве первого шага автор демонстрирует создание простейшего приложения на Node.js . Для его работы в Kubernetes необходимо пройти путь от исходного кода до манифеста.

1. Контейнеризация (Docker)

Создается Dockerfile, который описывает базовый образ, рабочую директорию, установку зависимостей (Express) и команду запуска . С помощью команды docker build -t hello-k:v1 . создается шаблон (образ) приложения .

2. Pod — единица развертывания

Pod (под) — это минимальный объект в K8s, «обертка» над одним или несколькими контейнерами . Однако, по словам Карнса, поды имеют ограничение: если под упадет, он не перезапустится сам.

3. Deployment — управление копиями

Для надежности используются Deployments . В манифесте указывается количество реплик (копий пода). Если одна копия выходит из строя, Kubernetes автоматически заменяет её новой .

4. Service — точка доступа

Так как поды эфемерны и их IP-адреса постоянно меняются, для доступа к ним создается Service . Сервис работает как «ресепшен в отеле»: пользователю не важно, в какой именно номер (под) его отправят, он обращается к единой стойке регистрации .

🚀 Переход в облако: Amazon EKS и идеология IaC 26:07

Amazon EKS (Elastic Kubernetes Service) — это управляемый сервис, который снимает с разработчика задачу настройки и обслуживания «панели управления» (Control Plane) Kubernetes .

Система EKS состоит из трех компонентов :

  1. Control Plane: управляется AWS (сервер API, планировщики).
  2. Node Groups: узлы (серверы), на которых реально работают приложения (EC2 или fargate).
  3. Networking: сетевой уровень (VPC, Security Groups, Load Balancers).

Бо Карнс настаивает на использовании подхода Infrastructure as Code (IaC) . Вместо ручного кликанья в консоли AWS, инфраструктура описывается программным кодом. Это обеспечивает воспроизводимость сред, контроль версий и исключает человеческие ошибки .

🏗️ Развертывание через Pulumi 28:33

Главное преимущество Pulumi, по мнению автора, заключается в возможности писать код инфраструктуры на знакомых языках (TypeScript, Python, Go) вместо работы с громоздкими YAML-файлами .

Преимущества использования Pulumi в IDE :

Для деплоя реального микросервисного приложения Zephyr Emporium (написанного на Java, Go и TypeScript) Карнс использует стек Pulumi . Процесс включает:

🤖 Использование ИИ: Pulumi Co-pilot 48:09

Современный подход к DevOps включает использование ИИ-ассистентов. Бо продемонстрировал работу Pulumi Co-pilot — чат-интерфейса, который помогает генерировать код инфраструктуры на основе текстовых запросов или существующих Dockerfile .

Интересный нюанс: когда стандартная команда pulumi new грозила перезаписать файл package.json, Карнс попросил Co-pilot найти решение, и ИИ предложил использовать флаг --force с генерацией только файлов инфраструктуры . Также Co-pilot помог исправить ошибки отсутствия VPC в аккаунте AWS, мгновенно сгенерировав код для создания сетевой инфраструктуры .

🔍 Мониторинг и аудит: Pulumi Insights 58:31

Для управления сложной инфраструктурой используется функция Insights. Она позволяет проводить «Account Discovery» — сканирование облачных аккаунтов (AWS, Azure) для обнаружения всех имеющихся ресурсов, даже тех, что не создавались через Pulumi .

Возможности поиска ресурсов через AI:

Важным инструментом поддержания порядка является Drift Detection (обнаружение дрейфа) . С помощью команды pulumi refresh система сравнивает реальное состояние ресурсов в облаке с описанным в коде и синхронизирует их, выявляя несанкционированные изменения.

💬 Цитаты

«Думайте о Kubernetes как об операционной системе для вашей облачной инфраструктуры.»

Бо Карнс 1:46

«Pulumi модернизирует развертывание, заменяя сложные манифесты YAML знакомыми языками программирования.»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Pod (Под)
Наименьшая единица развертывания в Kubernetes, содержащая один или несколько контейнеров.
Infrastructure as Code (IaC)
Подход к управлению ИТ-инфраструктурой, при котором конфигурация описывается в виде программного кода.
Control Plane
Центральная часть Kubernetes, которая принимает решения о распределении задач в кластере.
📊 Цифры
🗓 Хронология
  1. Начало курса Разбор основ контейнеризации и Docker.
  2. Середина курса Обзор архитектуры Amazon EKS и инструментов IaC.
  3. Финал курса Демонстрация Pulumi Insights и AI-возможностей для аудита ресурсов.
⚖️ Другая сторона
Технологии и IT Kubernetes Amazon EKS Pulumi Docker IaC