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

Источник: https://www.youtube.com/watch?v=hK8wf18SasY
Канал: freeCodeCamp.org
Опубликовано: 20.02.2025

---

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

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

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

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

*   **Без Kubernetes:** Владелец ресторана сам рассаживает гостей, принимает заказы, координирует поваров и моет полы. При росте бизнеса это ведет к хаосу.
*   **С Kubernetes:** Процессы автоматизированы. Система сама решает, куда «усадить» приложение, как его масштабировать и что делать, если «повар» (контейнер) внезапно перестал работать.

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

*   **Автоматическое масштабирование:** добавление мощностей при росте нагрузки [2:41].
*   **Самовосстановление (Self-healing):** автоматический перезапуск упавших компонентов [3:09].
*   **Бесшовные обновления:** деплой новых версий без простоя приложения [3:25].

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

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

### 1. Контейнеризация (Docker)
Создается `Dockerfile`, который описывает базовый образ, рабочую директорию, установку зависимостей (Express) и команду запуска [6:30]. С помощью команды `docker build -t hello-k:v1 .` создается шаблон (образ) приложения [8:02].

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

### 3. Deployment — управление копиями
Для надежности используются **Deployments** [11:43]. В манифесте указывается количество реплик (копий пода). Если одна копия выходит из строя, Kubernetes автоматически заменяет её новой [12:11].

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

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

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

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

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

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

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

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

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

*   **IntelliSense:** подсказки параметров ресурсов прямо при наборе текста.
*   **Type checking:** проверка типов позволяет ловить ошибки до деплоя.
*   **State Management:** автоматическое отслеживание зависимостей между ресурсами.

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

*   Создание виртуального облака (VPC) [42:05].
*   Настройку кластера EKS.
*   Создание пространств имен (Namespaces) для изоляции сервисов (Cart, Catalog, UI) [42:42].
*   Управление секретами (credentials баз данных) и ConfigMaps [43:37].

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

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

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

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

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

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

*   Поиск на естественном языке: «Show me my vpcs» [1:05:28].
*   Фильтрация по окружениям (Dev/Prod) [1:05:02].
*   Аналитика использования облака и затрат.

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