Представьте: вы — единственный разработчик в проекте или тимлид небольшой команды, и на вас сваливается вся инфраструктура. Docker, Kubernetes, CI/CD, Terraform, мониторинг… Раньше для этого нанимали отдельного инженера, теперь же можно вести диалог с ИИ, который знает синтаксис манифестов, помнит лучшие практики и готов генерировать рабочие конфиги по первому запросу.
В этой подборке — проверенные промты для DevOps-задач. Каждый промт — это готовый шаблон, который вы можете скопировать, подставить свои значения и получить результат. Мы разбили их по уровням: от базовых (Dockerfile, docker-compose) до экспертных (Helm, Terraform, отладка Kubernetes). Все примеры кода реальны и протестированы.
Базовый уровень: контейнеризация без головной боли
1. Генерация оптимального Dockerfile для Python-приложения
Задача: Написать Dockerfile для FastAPI-приложения, который будет кэшировать зависимости, использовать multi-stage сборку и не тащить в прод лишние пакеты.
Промт:
Ты — опытный DevOps-инженер. Напиши Dockerfile для Python 3.12 приложения на FastAPI с менеджером зависимостей poetry. Требования:
- multi-stage сборка (builder + runtime)
- кэширование слоёв: сначала копируй pyproject.toml и poetry.lock, устанавливай зависимости, затем копируй код
- используй slim-образ
- запускай от непривилегированного пользователя
- добавь healthcheck
Поясни каждую инструкцию.
Пример результата (сокращённо):
# builder
FROM python:3.12-slim AS builder
WORKDIR /app
RUN pip install poetry==1.8.3
COPY pyproject.toml poetry.lock ./
RUN poetry export --without-hashes --format=requirements.txt > requirements.txt
# runtime
FROM python:3.12-slim
WORKDIR /app
RUN adduser --disabled-password appuser
COPY --from=builder /app/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
USER appuser
HEALTHCHECK CMD curl --fail http://localhost:8000/health || exit 1
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Пояснение: Промт задаёт конкретные требования (multi-stage, кэширование, безопасность), и ИИ выдаёт готовый файл с комментариями. Вы можете сразу скопировать его в проект.
2. Генерация docker-compose для локальной разработки
Задача: Поднять PostgreSQL, Redis и приложение с hot-reload за одну команду.
Промт:
Создай docker-compose.yml для локальной разработки. Сервисы:
- app: сборка из текущей директории, порт 8000, монтирование volumes для hot-reload, зависит от db и redis
- db: postgres:16, переменные окружения из .env, volume для данных
- redis: redis:7-alpine
- adminer: для управления БД, порт 8080
Все сервисы в одной сети. Добавь комментарии.
Пример результата:
version: '3.9'
services:
app:
build: .
ports:
- "8000:8000"
volumes:
- .:/app
depends_on:
- db
- redis
env_file: .env
db:
image: postgres:16
env_file: .env
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
adminer:
image: adminer
ports:
- "8080:8080"
volumes:
postgres_data:
Пояснение: Промт чётко перечисляет сервисы и их связи, ИИ собирает корректный compose-файл. Обратите внимание на depends_on и volume для данных — это часто забывают.
Продвинутый уровень: Kubernetes и CI/CD
3. Создание Deployment и Service для приложения
Задача: Развернуть приложение в Kubernetes с liveness/readiness probe и ресурсными лимитами.
Промт:
Напиши манифесты Kubernetes для приложения myapp:1.0.0. Нужны Deployment (3 реплики) и Service (ClusterIP, порт 80 -> 8000). Добавь:
- livenessProbe и readinessProbe на /health
- resources: requests cpu 100m, memory 128Mi; limits cpu 500m, memory 256Mi
- env из ConfigMap и Secret
- стратегию rollingUpdate
Поясни, зачем каждый блок.
Пример результата (фрагмент):
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp:1.0.0
ports:
- containerPort: 8000
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 10
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
envFrom:
- configMapRef:
name: myapp-config
- secretRef:
name: myapp-secret
Пояснение: Промт включает все критичные параметры: пробы, ресурсы, стратегию обновления. ИИ не забудет про maxUnavailable: 0, чтобы избежать простоя.
4. Отладка падающего пода: анализ логов и событий
Задача: Под подом в статусе CrashLoopBackOff, нужно понять причину.
Промт:
Мой под в Kubernetes падает с ошибкой CrashLoopBackOff. Вот вывод kubectl describe pod myapp-abcde и последние 50 строк логов:
[вставьте вывод]
Проанализируй и предложи шаги исправления. Укажи, какие ещё команды выполнить для диагностики.
Пример результата (ответ ИИ):
- В логах:
Error: Cannot find module '/app/index.js'— вероятно, неверныйcommandилиworkingDir. - В describe:
Liveness probe failed: connection refused— приложение не стартует. - Рекомендация: проверьте, что
workingDirв Dockerfile соответствует пути к файлу, и увеличьтеinitialDelaySecondsдля livenessProbe.
Пояснение: ИИ выступает в роли второго пилота: он интерпретирует вывод команд и даёт конкретные действия. Это экономит часы гугления.
5. Генерация пайплайна GitHub Actions для сборки и деплоя
Задача: Настроить CI/CD: тесты, сборка Docker-образа, пуш в registry и деплой в Kubernetes.
Промт:
Создай .github/workflows/deploy.yml для Python-проекта. Триггер — push в main. Шаги:
- запуск тестов (pytest)
- сборка Docker-образа и пуш в GitHub Container Registry (используй secrets.GITHUB_TOKEN)
- деплой в Kubernetes через kubectl set image
Предусмотри кэширование зависимостей pip. Добавь комментарии.
Пример результата (сокращённо):
name: Deploy
on:
push:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- run: pip install -r requirements.txt
- run: pytest
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
push: true
tags: ghcr.io/${{ github.repository }}:latest
- name: Deploy to Kubernetes
run: |
kubectl set image deployment/myapp myapp=ghcr.io/${{ github.repository }}:latest
Пояснение: Промт описывает последовательность шагов и ключевые экшены. ИИ подставляет правильные версии и синтаксис. Останется только добавить секреты в настройках репозитория.
Экспертный уровень: Helm, Terraform и мониторинг
6. Создание Helm-чарта с параметризацией
Задача: Упаковать приложение в Helm-чарт с возможностью настройки реплик, образа и ресурсов через values.yaml.
Промт:
Сгенерируй структуру Helm-чарта для приложения myapp. Включи:
- Chart.yaml
- values.yaml с параметрами: replicaCount, image.repository, image.tag, resources, service.port
- шаблоны deployment.yaml, service.yaml, _helpers.tpl
- используй best practices: labels через helper, проверку значений.
Выведи содержимое всех файлов.
Пример результата (фрагмент values.yaml):
replicaCount: 3
image:
repository: myapp
tag: "1.0.0"
pullPolicy: IfNotPresent
service:
port: 80
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
Пояснение: ИИ создаёт полный скелет чарта, включая хелперы для генерации имён и лейблов. Вы получаете готовый шаблон, который можно адаптировать под свои нужды.
7. Написание Terraform-конфигурации для AWS EKS
Задача: Развернуть кластер EKS с группой узлов и необходимыми IAM-ролями.
Промт:
Напиши Terraform-код для создания AWS EKS кластера с managed node group. Требования:
- версия Kubernetes 1.30
- 2 узла типа t3.medium
- включить логирование control plane
- использовать модуль terraform-aws-modules/eks/aws версии 20.0
- output: имя кластера, endpoint, arn группы узлов
Поясни ключевые параметры.
Пример результата (фрагмент):
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "20.0"
cluster_name = "my-cluster"
cluster_version = "1.30"
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnets
eks_managed_node_groups = {
default = {
min_size = 1
max_size = 3
desired_size = 2
instance_types = ["t3.medium"]
}
}
cluster_enabled_log_types = ["api", "audit", "authenticator"]
}
Пояснение: Промт задаёт конкретный модуль и его версию, что гарантирует совместимость. ИИ добавляет необходимые outputs и пояснения.
8. Настройка мониторинга: Prometheus + Grafana в Kubernetes
Задача: Развернуть стек мониторинга с помощью Helm и настроить дашборд для приложения.
Промт:
Как установить kube-prometheus-stack в Kubernetes через Helm? Напиши команды и минимальные values.yaml для:
- хранения метрик 7 дней
- доступа к Grafana через ingress с basic auth
- сбора метрик с приложения по аннотации prometheus.io/scrape
Пример результата (команды и values):
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install monitoring prometheus-community/kube-prometheus-stack -f values.yaml
# values.yaml
grafana:
ingress:
enabled: true
hosts: [grafana.example.com]
adminPassword: admin
prometheus:
prometheusSpec:
retention: 7d
Пояснение: ИИ выдаёт готовые команды и минимальный конфиг. Обратите внимание на аннотацию для сбора метрик — её нужно добавить в поды приложения.
Как использовать эти промты эффективно
Чтобы ИИ выдавал точные результаты, следуйте трём правилам:
- Будьте конкретны. Указывайте версии, инструменты, ограничения. Вместо «напиши Dockerfile» пишите «напиши Dockerfile для Python 3.12 с poetry, multi-stage, без root».
- Запрашивайте пояснения. Добавляйте в промт фразу «поясни ключевые параметры» — так вы быстрее разберётесь в незнакомой технологии.
- Проверяйте сгенерированное. ИИ может ошибаться в синтаксисе или предлагать устаревшие параметры. Всегда прогоняйте конфиги через линтеры (hadolint для Dockerfile, kubeconform для манифестов, terraform validate).
Попробуйте эти промты в своём следующем проекте. Начните с простого Dockerfile, затем перейдите к Kubernetes и CI/CD. Со временем вы выработаете собственный стиль общения с ИИ, и он станет вашим надёжным помощником в мире инфраструктуры.
А если хотите глубже освоить DevOps с ИИ — изучите наш курс, где мы разбираем реальные сценарии автоматизации без найма отдельного инженера.
Комментарии