# Как развернуть микросервисы в AWS EKS с помощью Pulumi и ИИ-ассистентов

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

---

Это подробное руководство по развертыванию контейнеризированных приложений в облаке AWS с использованием Kubernetes (EKS) и инструмента инфраструктуры как кода (IaC) — Pulumi. Тьюториал ведет Бо Карнс (Bo Carnes), который на примере реального интернет-магазина «Zephyr Artifact Emporium» и простого Hello World приложения разбирает путь от Docker-файла до управления ресурсами через ИИ-ассистентов.

## 📦 Контейнеризация и основы Kubernetes
[[JUMP:01:06]]

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

Для понимания концепции ведущий использует «ресторанную аналогию»:

*   **Без Kubernetes**: владелец ресторана лично рассаживает гостей, принимает заказы и координирует поваров. Это работает в малом масштабе, но становится невозможным при росте [02:14].
*   **С Kubernetes**: процессы автоматизированы. Система сама добавляет «столики» (масштабирование), заменяет «заболевших поваров» (самовосстановление) и распределяет заказы (балансировка нагрузки) [02:41].

### Основные компоненты системы:

*   **Pod (Под)**: наименьшая единица развертывания, оболочка над одним или несколькими контейнерами [08:17].
*   **Deployment**: управляет репликами подов, обеспечивая их постоянную работу и автоматический перезапуск при сбоях [11:43].
*   **Service**: стабильный сетевой адрес для доступа к подам, так как сами поды эфемерны и меняют IP-адреса при перезапуске [13:03].
*   **ConfigMaps и Secrets**: инструменты для отделения конфигураций и конфиденциальных данных (пароли, API-ключи) от кода приложения [15:05].

## 🏗️ Инфраструктура как код (IaC) с Pulumi
[[JUMP:27:37]]

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

Преимущества подхода Pulumi по мнению Бо Карнса:

1.  **Типизация и IDE**: поддержка автодополнения кода и проверки типов исключает ошибки до начала деплоя [29:00].
2.  **Версионность**: изменения в инфраструктуре отслеживаются через Git так же, как и обычный код [28:19].
3.  **Единый стек**: возможность управлять ресурсами разных провайдеров (AWS, Azure, GCP) в рамках одной программы [29:37].

В практической части ведущий демонстрирует создание S3-корзины для статического сайта всего несколькими строками на JavaScript [32:44]. При этом команда `pulumi up` сначала показывает превью изменений (diff), и только после подтверждения пользователя вносит их в облако [33:22].

## 🚀 Развертывание в Amazon EKS
[[JUMP:26:07]]

Amazon Elastic Kubernetes Service (EKS) — это управляемый сервис, который берет на себя администрирование Control Plane (API-серверов и планировщиков). Ведущий отмечает, что это позволяет разработчикам не тратить время на патчи безопасности и обновления самой системы Kubernetes, доверяя это экспертам AWS [26:32].

### Архитектура промышленного приложения (на примере Zephyr):

*   **Microservices**: приложение разбито на независимые сервисы (UI, Catalog, Cart, Order), написанные на разных языках (Java, Go, TypeScript) [18:23].
*   **Namespaces**: использование пространств имен для изоляции ресурсов и разграничения прав доступа [19:32].
*   **Load Balancers**: автоматическое создание внешних IP-адресов в AWS для доступа пользователей к фронтенду [21:37].

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

Современный DevOps-процесс упрощается за счет интеграции нейросетей. Бо Карнс демонстрирует возможности **Pulumi Co-pilot** — чат-интерфейса, который может с нуля сгенерировать код инфраструктуры на основе Docker-файла [48:23].

Примеры взаимодействия с ИИ в ходе курса:

*   **Исправление ошибок**: когда деплой упал из-за отсутствия VPC (виртуальной сети), Co-pilot проанализировал логи и выдал готовый фрагмент кода для создания сети [55:43].
*   **Natural Language Search**: в модуле **Pulumi Insights** можно искать ресурсы в облаке, используя обычный человеческий язык (например, «покажи мне мои VPC»), который ИИ преобразует в сложные SQL-подобные запросы [1:05:02].

## 🛠️ Практические команды и инструменты
[[JUMP:09:12]]

### Основной инструментарий:

*   `kubectl` (cube controller): основной CLI-инструмент для управления кластером.
*   `pulumi up`: запуск процесса развертывания или обновления.
*   `pulumi destroy`: полное удаление всех созданных облачных ресурсов для экономии средств [39:43].
*   `docker push`: загрузка локальных образов в реестр (Docker Hub), чтобы EKS мог их скачать [54:34].

### Полезные команды отладки:

*   `kubectl get pods`: проверка статуса запущенных контейнеров [10:05].
*   `kubectl logs [name]`: просмотр логов приложения внутри пода [17:27].
*   `pulumi refresh`: синхронизация состояния Pulumi с реальным состоянием ресурсов в облаке (обнаружение дрейфа/drift) [57:36].