Docker, K8s, CI/CD: 12 промтов, которые заменят половину рутины DevOps-инженера

Если вы DevOps-инженер, то знаете: половина рабочего дня уходит не на творчество, а на рутину — разбор логов, подбор параметров для Dockerfile, поиск причины падения пода в Kubernetes. Хорошая новость: современные LLM (вроде GPT-4o, Claude 3.5 Sonnet или YandexGPT) умеют делать это за вас. Но чтобы получить реально полезный ответ, нужно правильно составить промт. Я собрал 12 проверенных промтов, которые закрывают 90% типовых задач: от оптимизации Dockerfile до отладки CI/CD. Каждый промт можно скопировать и использовать прямо сейчас — просто подставьте свои данные.

Как устроена подборка

Каждый промт — это готовая конструкция, которую вы вставляете в чат с LLM. Я добавил пример использования, чтобы было понятно, как адаптировать промт под свою задачу. Все промты написаны на русском, но вы можете перевести их на английский — LLM одинаково хорошо понимают оба языка.

Важно: не ждите, что нейросеть сделает всё за вас. Промт — это инструмент, который ускоряет работу, но не заменяет вашу экспертизу. Всегда проверяйте предложенное решение в тестовой среде, прежде чем применять в проде.

1. Оптимизация Dockerfile

Когда использовать: когда нужно уменьшить размер образа, ускорить сборку или улучшить кэширование. Промт анализирует ваш Dockerfile и предлагает конкретные улучшения.

Промт:

Ты — эксперт по Docker. Проанализируй следующий Dockerfile и предложи оптимизации для уменьшения размера образа, ускорения сборки и улучшения кэширования. Укажи конкретные изменения с объяснением, почему они работают. Также проверь, соблюдены ли best practices (минимальный базовый образ, multi-stage сборка, .dockerignore, порядок слоёв).

Dockerfile:
[вставьте ваш Dockerfile]

Пример использования:
Допустим, у вас есть Dockerfile для Python-приложения:

FROM python:3.11
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

Промт предложит использовать python:3.11-slim (меньше размер), объединить RUN команды, добавить .dockerignore, а также, если нужно, multi-stage сборку для зависимостей. Например, для Node.js приложения промт может предложить использовать node:20-alpine и multi-stage с npm ci --only=production.

2. Разбор ошибок в логах Kubernetes

Когда использовать: когда под падает, но вы не понимаете почему. Промт помогает проанализировать логи пода и найти первопричину.

Промт:

Ты — эксперт по Kubernetes. Проанализируй следующие логи пода и определи возможную причину ошибки. Обрати внимание на ошибки, предупреждения, стектрейсы. Предложи шаги для диагностики и решения проблемы. Если нужно, укажи команды kubectl для проверки состояния пода, событий и ресурсов.

Логи:
[вставьте логи]

Пример использования:
В логах вы видите CrashLoopBackOff и стектрейс с KeyError: 'DATABASE_URL'. Промт определит, что приложению не хватает переменной окружения, и предложит добавить её в секрет или конфигмапу, а также проверить, как под описан в деплойменте. Пример команды: kubectl get pod <pod-name> -o yaml для проверки env.

3. Генерация манифестов Kubernetes

Когда использовать: когда нужно быстро создать Deployment, Service, Ingress или другие ресурсы для типового приложения.

Промт:

Ты — эксперт по Kubernetes. Сгенерируй манифесты Kubernetes для [описание приложения: например, Node.js веб-сервис с базой данных PostgreSQL]. Включи Deployment, Service, Ingress (если нужен), ConfigMap для переменных окружения и PersistentVolumeClaim для БД. Укажи разумные ресурсы (requests/limits), liveness и readiness пробы. Используй актуальные API-версии (apps/v1, networking.k8s.io/v1).

Пример использования:
Вы хотите развернуть приложение с 3 репликами, портом 8080, и базой данных PostgreSQL. Промт сгенерирует YAML-манифесты, которые можно сразу сохранить в файлы и применить через kubectl apply -f. Он также добавит комментарии, объясняющие каждый блок.

4. Диагностика проблем с сетью в Kubernetes

Когда использовать: когда сервис недоступен, но поды работают. Промт помогает разобраться с NetworkPolicy, Service, DNS.

Промт:

Ты — эксперт по сетям в Kubernetes. Опиши пошаговый план диагностики проблемы, когда сервис недоступен из другого пода, но поды работают. Включи проверку Service (kubectl get svc, endpoints), DNS (nslookup), NetworkPolicy, kube-proxy. Для каждого шага укажи команду и ожидаемый результат.

Дополнительная информация: [опишите вашу ситуацию]

Пример использования:
Вы не можете достучаться до сервиса my-service из другого пода. Промт предложит выполнить kubectl get endpoints my-service, kubectl describe svc my-service, kubectl exec -it <pod> -- nslookup my-service, а также проверить NetworkPolicy с помощью kubectl get netpol. Это поможет локализовать проблему.

5. Оптимизация CI/CD пайплайна (GitLab CI)

Когда использовать: когда пайплайн работает слишком долго или часто падает. Промт анализирует ваш .gitlab-ci.yml и предлагает улучшения.

Промт:

Ты — эксперт по CI/CD. Проанализируй следующий GitLab CI конфиг. Предложи оптимизации: параллелизм, кэширование, использование artifacts, разбиение на стадии. Укажи, как ускорить пайплайн и уменьшить потребление ресурсов. Также проверь, нет ли проблем с безопасностью (например, секреты в логах).

.gitlab-ci.yml:
[вставьте ваш конфиг]

Пример использования:
В вашем пайплайне последовательно выполняются сборка, тесты и деплой. Промт предложит запускать тесты параллельно для разных версий Node.js, добавить кэш для node_modules, использовать artifacts для передачи собранного артефакта между стадиями. Это сократит время пайплайна с 15 минут до 5.

6. Написание GitHub Actions workflow

Когда использовать: когда нужно создать workflow для сборки, тестирования или деплоя, но вы не помните синтаксис.

Промт:

Ты — эксперт по GitHub Actions. Напиши workflow для [задача: например, сборка Docker-образа и публикация в GitHub Container Registry при пуше в main]. Используй официальные actions (actions/checkout@v4, docker/login-action@v3, docker/build-push-action@v5). Укажи триггеры, jobs, steps. Добавьте комментарии.

Пример использования:
Вы хотите автоматически собирать и публиковать Docker-образ при пуше в main. Промт сгенерирует YAML файл, который можно положить в .github/workflows/. Он будет использовать docker/build-push-action с тегом latest и хэшем коммита.

7. Скрипт для очистки старых Docker-образов

Когда использовать: когда на диске заканчивается место из-за множества dangling-образов. Промт генерирует безопасный скрипт очистки.

Промт:

Ты — эксперт по Docker. Напиши bash-скрипт для удаления старых Docker-образов, которые не использовались более 30 дней, с сохранением образов, используемых контейнерами. Скрипт должен быть безопасным и не удалять образы, которые нужны. Добавь логирование и защиту от случайного удаления (dry-run режим).

Пример использования:
Промт выдаст скрипт с функцией dry_run, которая выводит список образов без удаления, и параметром --force для реального удаления. В скрипте используется docker image ls -q и фильтрация по дате создания.

8. Анализ утечек памяти в приложении внутри контейнера

Когда использовать: когда контейнер с приложением нестабилен и потребляет всё больше памяти. Промт помогает диагностировать утечку.

Промт:

Ты — эксперт по контейнеризации. У меня есть контейнер, который постепенно потребляет всё больше памяти и в итоге убивается OOM-killer'ом. Опиши шаги диагностики: как проверить потребление памяти контейнером (docker stats), как проанализировать логи, как использовать профилировщики (например, py-spy для Python). Предложи возможные причины утечки и как их устранить.

Пример использования:
Вы запускаете Python-приложение, и через несколько часов работы контейнер убивается. Промт посоветует использовать docker stats для мониторинга, py-spy dump для получения стека вызовов, и предложит проверить глобальные переменные, которые накапливают данные.

9. Безопасность: сканирование Docker-образа на уязвимости

Когда использовать: когда нужно проверить образ на известные уязвимости перед деплоем. Промт объяснит, как использовать Trivy или Grype.

Промт:

Ты — эксперт по безопасности контейнеров. Опиши, как сканировать Docker-образ на уязвимости с помощью Trivy (aquasecurity/trivy). Приведи команды для установки и запуска сканирования, объясни, как интерпретировать результаты, и что делать с критическими уязвимостями. Дополнительно укажи, как интегрировать сканирование в CI/CD (например, в GitLab CI).

Пример использования:
Вы хотите добавить сканирование в пайплайн. Промт даст команду trivy image --severity HIGH,CRITICAL my-app:latest и пример job в GitLab CI, который будет фейлить пайплайн при наличии критических уязвимостей.

10. Написание Terraform-конфигурации для инфраструктуры

Когда использовать: когда нужно описать инфраструктуру как код, но вы не уверены в синтаксисе провайдера.

Промт:

Ты — эксперт по Terraform. Напиши Terraform-конфигурацию для [описание инфраструктуры: например, создание VPC, двух подсетей, EC2-инстанса с NGINX в AWS]. Используй актуальные версии провайдеров (hashicorp/aws, ~> 5.0). Укажи переменные, output, и комментарии. Убедись, что конфигурация следует best practices.

Пример использования:
Вы хотите развернуть базовую инфраструктуру в AWS. Промт сгенерирует main.tf, variables.tf, outputs.tf. Вы сможете выполнить terraform init и terraform apply после добавления ключей доступа.

11. Разбор ошибок в Terraform apply

Когда использовать: когда terraform apply падает с непонятной ошибкой, и вы не можете понять, что не так.

Промт:

Ты — эксперт по Terraform. Проанализируй следующую ошибку и предложи решение. Объясни, что означает ошибка, какие могут быть причины, и как исправить. Если нужно, предложи команды для диагностики (terraform validate, terraform plan).

Ошибка:
[вставьте текст ошибки]
Конфигурация (если есть):
[вставьте фрагмент конфигурации]

Пример использования:
Вы получаете ошибку "Error: creating EC2 Instance: InvalidParameterValue: Invalid value for groupId". Промт объяснит, что скорее всего неверно указан ID security group, и предложит проверить, что группа существует и находится в том же VPC.

12. Генерация документации для инфраструктуры

Когда использовать: когда нужно быстро создать README или описание для репозитория с инфраструктурой.

Промт:

Ты — технический писатель. Создай документацию для репозитория, который содержит [описание: Dockerfile, docker-compose.yml, Kubernetes манифесты, CI/CD конфиги]. Включи описание структуры, как запустить проект локально, как развернуть в кластер, и как работает CI/CD. Используй markdown, добавь бейджи (если уместно).

Пример использования:
У вас есть репозиторий с микросервисом. Промт сгенерирует README.md с разделами: Описание, Требования, Быстрый старт (docker-compose up), Развертывание в K8s (kubectl apply -f k8s/), CI/CD (описание пайплайна). Это сэкономит час-два работы.

Как адаптировать промты под свою задачу

Эти промты — база. Не бойтесь их модифицировать: добавляйте контекст, уточняйте версии инструментов, указывайте желаемый формат ответа. Например, если вы хотите получить ответ в виде таблицы, добавьте "Представь ответ в виде таблицы". Если нужен конкретный язык программирования — укажите его.

Также помните: LLM могут ошибаться. Всегда проверяйте сгенерированный код в тестовой среде. Используйте terraform plan, kubectl apply --dry-run=client, docker build с флагом --no-cache для теста.

Итоги

Эти 12 промтов покрывают основные сценарии DevOps: работа с Docker, Kubernetes, CI/CD, инфраструктурой как кодом. Они помогут вам быстрее находить решения, писать конфигурации и документацию. Но главное — они освобождают время для действительно сложных задач, которые требуют вашей экспертизы.

Скопируйте промты в свой заметочник, адаптируйте под свои проекты и экспериментируйте. Чем больше контекста вы дадите нейросети, тем точнее будет ответ. Удачной автоматизации!

← Все статьи

Комментарии

Читайте также