Промты для Kubernetes и Terraform: как я управляю 40 микросервисами без дежурного DevOps-инженера
В 2025 году наша команда из трёх разработчиков столкнулась с типичной проблемой: продукт рос, количество микросервисов перевалило за 40, а выделенного DevOps-инженера не было. Каждый деплой превращался в квест: вручную править YAML-манифесты, следить за состоянием кластера, разруливать конфликты Terraform. По оценкам DORA (State of DevOps Report 2024), команды без автоматизации тратят до 30% времени на рутинные операции. Мы решили изменить подход и использовать LLM (большие языковые модели) для генерации и проверки инфраструктурного кода. За две недели мы настроили Kubernetes-кластер, описали всю инфраструктуру в Terraform и автоматизировали CI/CD. В этой статье я делюсь подборкой промтов, которые сэкономили нам месяцы работы.
Почему промты, а не готовые шаблоны?
Готовые Helm-чарты и модули Terraform — это здорово, но они не учитывают специфику вашего проекта. Промты позволяют быстро получить кастомизированные решения под конкретные задачи: от генерации манифестов до отладки сетевых политик. Главное — правильно формулировать запросы. Мы использовали ChatGPT-4 и Claude 3.5, но подход универсален.
1. Генерация Deployment и Service для микросервиса
Задача: быстро создать манифесты для нового сервиса на Python с health-check и автомасштабированием.
Промт:
Ты — опытный DevOps-инженер. Сгенерируй YAML-манифесты Kubernetes для Deployment и Service для микросервиса на Python (FastAPI). Требования:
- 3 реплики
- Health-check на /health (порт 8000)
- Автомасштабирование по CPU (target 70%)
- Resource limits: 500m CPU, 512Mi памяти
- Использовать образ myregistry/fastapi-app:latest
- Namespace: production
- Добавить labels: app=fastapi-app, tier=backend
Выведи только YAML без пояснений.
Пример использования: Мы скопировали ответ в файл deployment.yaml и применили kubectl apply -f deployment.yaml. Через 30 секунд сервис был доступен внутри кластера.
2. Настройка Horizontal Pod Autoscaler (HPA)
Задача: автоматически масштабировать поды в зависимости от нагрузки.
Промт:
Создай манифест HorizontalPodAutoscaler для Deployment с именем fastapi-app в namespace production. Минимум 2 пода, максимум 10, целевая загрузка CPU 60%. Используй autoscaling/v2 API.
Результат: HPA начал работать сразу, и мы забыли о ручном масштабировании.
3. Генерация Terraform для AWS EKS
Задача: развернуть управляемый Kubernetes-кластер в AWS с минимальными затратами.
Промт:
Напиши Terraform-код для создания EKS-кластера в регионе eu-central-1. Требования:
- Версия Kubernetes 1.28
- Две ноды типа t3.medium
- Включить логирование control plane
- Использовать модуль terraform-aws-modules/eks/aws версии 19.0
- Создать VPC с двумя публичными и двумя приватными подсетями
Выведи полный код с переменными.
Пример: Мы развернули кластер за 15 минут, тогда как вручную это заняло бы часы. Стоимость — около $0.20 в час.
4. Настройка Ingress с TLS
Задача: обеспечить доступ к сервисам по HTTPS с автоматическим сертификатом Let's Encrypt.
Промт:
Создай манифест Ingress для сервиса fastapi-app на порту 8000. Домен: api.example.com. Использовать cert-manager с ClusterIssuer letsencrypt-prod. Путь: /api. Включить аннотации для nginx-ingress.
Результат: cert-manager автоматически выпустил сертификат, и мы получили защищённое соединение без ручных действий.
5. Генерация CI/CD пайплайна в GitHub Actions
Задача: автоматизировать сборку, тестирование и деплой при пуше в main.
Промт:
Напиши GitHub Actions workflow для деплоя в Kubernetes. Шаги:
- Checkout кода
- Сборка Docker-образа и пуш в GitHub Container Registry
- Обновление образа в Deployment через kubectl set image
- Использовать секреты KUBE_CONFIG
Триггер: push в main. ОС: ubuntu-latest.
Пример: После добавления workflow каждый коммит автоматически деплоился в кластер. Время от пуша до продакшена сократилось с 30 минут до 5.
6. Отладка ошибок в Terraform
Задача: быстро находить и исправлять ошибки в Terraform-конфигурации.
Промт:
Я получил ошибку Terraform: "Error: Error creating EKS Node Group: InvalidParameterException: The subnet ID 'subnet-123' does not exist". Объясни причину и предложи исправление. Вот фрагмент кода: [вставить код].
Результат: LLM указала, что подсеть была создана в другом регионе, и предложила изменить переменную region.
7. Генерация NetworkPolicy для ограничения трафика
Задача: запретить все входящие соединения к подам, кроме определённых сервисов.
Промт:
Создай NetworkPolicy для namespace production, которая разрешает входящий трафик только от подов с label app=frontend на порт 8000. Все остальные соединения запрещены.
Пример: Мы применили политику и убедились, что безопасность соответствует принципу наименьших привилегий.
8. Настройка мониторинга с Prometheus и Grafana
Задача: быстро развернуть стек мониторинга для кластера.
Промт:
Напиши Helm values для установки kube-prometheus-stack. Требования:
- Включить Grafana с паролем admin
- Настроить retention 15 дней
- Включить alertmanager
- Использовать storageClass gp2
Результат: Мы установили стек одной командой helm install monitoring prometheus-community/kube-prometheus-stack -f values.yaml и получили дашборды из коробки.
9. Автоматическое создание Secret для Docker Registry
Задача: настроить доступ к приватному реестру.
Промт:
Создай Kubernetes Secret типа docker-registry для доступа к registry.example.com с логином user и паролем pass. Namespace: production. Имя секрета: regcred.
Пример: Мы добавили секрет и указали его в манифестах через imagePullSecrets.
10. Генерация Ansible плейбука для подготовки нод
Задача: автоматизировать установку Docker и kubelet на новые ноды.
Промт:
Напиши Ansible плейбук для установки Docker и kubeadm на Ubuntu 22.04. Включи шаги: обновление apt, установка containerd, настройка cgroup driver systemd, добавление репозитория Kubernetes, установка kubelet kubeadm kubectl.
Результат: Плейбук позволил быстро добавлять ноды в кластер.
11. Оптимизация затрат на AWS с помощью Terraform
Задача: снизить расходы на инфраструктуру.
Промт:
Предложи изменения в Terraform-конфигурации для снижения затрат на EKS. Текущая конфигурация: две ноды t3.medium, on-demand. Можно ли использовать spot-инстансы? Как настроить автомасштабирование? Выведи обновлённый код.
Пример: Мы перешли на spot-инстансы и сэкономили около 60% на вычислениях.
12. Генерация документации по инфраструктуре
Задача: автоматически создавать README с описанием всех ресурсов.
Промт:
На основе следующих Terraform файлов сгенерируй Markdown-документацию с описанием всех ресурсов, переменных и выходных значений. [вставить код]
Результат: Документация всегда актуальна и понятна новым членам команды.
Выводы
Использование промтов для генерации инфраструктурного кода позволило нам сократить время настройки с трёх месяцев до двух недель. Мы не только сэкономили время, но и повысили качество: LLM помогает избегать типичных ошибок и следовать лучшим практикам. Если вы хотите освоить этот подход, рекомендую начать с малого — например, с генерации манифестов для одного сервиса. Постепенно вы сможете автоматизировать всё больше задач. Помните, что LLM — это инструмент, а не замена инженеру: всегда проверяйте сгенерированный код и тестируйте его в безопасной среде.
Попробуйте эти промты в своём проекте — и вы удивитесь, насколько проще станет управлять инфраструктурой.
Комментарии