DevOps-конвейер в одном чате: 12 промтов для Docker, Kubernetes, Terraform и CI/CD
Представьте: вы описываете задачу на естественном языке, а AI-агент генерирует готовый Dockerfile, манифест Kubernetes, конфигурацию Terraform или YAML для CI/CD. Звучит как магия? На самом деле это уже реальность в 2026 году. AI-ассистенты стали незаменимыми помощниками DevOps-инженеров, позволяя автоматизировать рутинные задачи и сосредоточиться на архитектуре.
В этой подборке я собрал 12 проверенных промтов, которые покрывают ключевые области: контейнеризацию, оркестрацию, инфраструктуру как код и пайплайны. Каждый промт сопровождается примером использования и пояснениями. Все примеры реальны и протестированы в боевых условиях.
Docker: контейнеризация без головной боли
1. Генерация оптимального Dockerfile для Python-приложения
Задача: Создать многоэтапный Dockerfile для FastAPI-приложения с минимальным размером образа.
Промт:
Ты — эксперт по Docker. Сгенерируй многоэтапный Dockerfile для Python 3.11 приложения на FastAPI. Требования:
- Использовать poetry для управления зависимостями.
- Итоговый образ на базе python:3.11-slim.
- Скопировать только необходимые файлы.
- Запускать приложение через uvicorn с 4 воркерами.
- Добавить healthcheck.
- Указать non-root пользователя.
Пример результата:
# Этап сборки
FROM python:3.11-slim as builder
WORKDIR /app
RUN pip install poetry
COPY pyproject.toml poetry.lock ./
RUN poetry export --without-hashes --format=requirements.txt > requirements.txt
# Финальный этап
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /app/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN useradd -m appuser && chown -R appuser:appuser /app
USER appuser
EXPOSE 8000
HEALTHCHECK --interval=30s --timeout=5s --retries=3 CMD curl -f http://localhost:8000/health || exit 1
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "4"]
Пояснение: Многоэтапная сборка уменьшает размер образа, а non-root пользователь повышает безопасность. Healthcheck позволяет Kubernetes отслеживать состояние пода.
2. Оптимизация существующего Dockerfile
Задача: Уменьшить размер образа и ускорить сборку.
Промт:
Проанализируй этот Dockerfile и предложи оптимизации:
[вставьте ваш Dockerfile]
Укажи, какие слои можно объединить, какие инструкции кэшируются неэффективно, и как уменьшить итоговый размер. Предложи исправленный вариант.
Пример результата: AI может указать на необходимость объединения RUN-команд, использования .dockerignore, перехода на alpine-образы и т.д. Например, замена apt-get update && apt-get install на одну команду с очисткой кэша.
Kubernetes: манифесты и отладка
3. Генерация манифеста Deployment и Service
Задача: Развернуть приложение в Kubernetes с автомасштабированием.
Промт:
Создай YAML-манифесты для Kubernetes (Deployment и Service) для приложения из Docker-образа myapp:latest. Требования:
- 3 реплики.
- Ресурсы: запросы CPU 100m, память 128Mi; лимиты CPU 500m, память 256Mi.
- Liveness и readiness пробу на порту 8000 путь /health.
- Service типа ClusterIP.
- HorizontalPodAutoscaler с целевой загрузкой CPU 70%.
Пример результата:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp:latest
ports:
- containerPort: 8000
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 10
periodSeconds: 5
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 8000
type: ClusterIP
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 3
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
Пояснение: Манифесты включают все необходимые компоненты для отказоустойчивого развёртывания. AI автоматически добавил HPA для автомасштабирования.
4. Диагностика проблемы с подом
Задача: Понять, почему под не запускается.
Промт:
Мой под в Kubernetes находится в статусе CrashLoopBackOff. Вот вывод `kubectl describe pod <pod-name>` и `kubectl logs <pod-name>`:
[вставьте вывод]
Проанализируй и предложи шаги для устранения проблемы.
Пример результата: AI может определить, что проблема в неправильном healthcheck, отсутствии секретов или ошибке в команде запуска. Например, если в логах видно connection refused, AI предложит проверить доступность базы данных и настройки сети.
Terraform: инфраструктура как код
5. Создание модуля Terraform для AWS VPC
Задача: Развернуть VPC с публичными и приватными подсетями.
Промт:
Напиши модуль Terraform для создания VPC в AWS со следующими требованиями:
- 2 публичные подсети в разных AZ.
- 2 приватные подсети в разных AZ.
- Internet Gateway и NAT Gateway.
- Таблицы маршрутизации для публичных и приватных подсетей.
- Теги для всех ресурсов.
Пример результата: AI сгенерирует main.tf, variables.tf, outputs.tf с корректными ресурсами. Например:
resource "aws_vpc" "main" {
cidr_block = var.vpc_cidr
tags = {
Name = "main-vpc"
}
}
resource "aws_subnet" "public" {
count = 2
vpc_id = aws_vpc.main.id
cidr_block = cidrsubnet(var.vpc_cidr, 8, count.index)
availability_zone = data.aws_availability_zones.available.names[count.index]
map_public_ip_on_launch = true
tags = {
Name = "public-subnet-${count.index}"
}
}
Пояснение: Модуль можно переиспользовать в разных проектах, меняя только переменные.
6. Импорт существующих ресурсов в Terraform
Задача: Перенести существующую инфраструктуру под управление Terraform.
Промт:
У меня есть существующий EC2 инстанс с ID i-1234567890abcdef0. Напиши команду для импорта его в Terraform и соответствующий блок resource.
Пример результата: AI предложит:
terraform import aws_instance.example i-1234567890abcdef0
И блок:
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
# остальные параметры будут заполнены после импорта
}
Пояснение: После импорта нужно запустить terraform plan и скорректировать конфигурацию, чтобы она соответствовала реальному состоянию.
CI/CD: пайплайны под ключ
7. Генерация GitHub Actions для тестирования и деплоя
Задача: Настроить CI/CD для Python-приложения с тестами и деплоем в Kubernetes.
Промт:
Создай workflow GitHub Actions для Python-приложения. Требования:
- Запуск при пуше в main и при пулл-реквестах.
- Шаги: установка зависимостей, запуск тестов (pytest), сборка Docker-образа, пуш в GitHub Container Registry, деплой в Kubernetes (kubectl apply).
- Использовать секреты для доступа к registry и kubeconfig.
Пример результата:
name: CI/CD
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytest
build-and-deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- 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: |
echo "${{ secrets.KUBECONFIG }}" > kubeconfig
export KUBECONFIG=kubeconfig
kubectl apply -f k8s/
Пояснение: Workflow разделён на два джоба: тестирование и деплой. Деплой только для main ветки.
8. Оптимизация времени сборки в CI
Задача: Ускорить пайплайн за счёт кэширования.
Промт:
Проанализируй мой GitHub Actions workflow и предложи способы кэширования зависимостей и Docker-слоёв. Вот текущий файл:
[вставьте workflow]
Пример результата: AI предложит использовать actions/cache для pip, кэширование Docker-слоёв через buildx, параллельное выполнение шагов. Например, добавление:
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
Продвинутые сценарии
9. Генерация Helm-чарта
Задача: Упаковать приложение в Helm-чарт.
Промт:
Создай Helm-чарт для приложения с параметризованными values.yaml. Включи Deployment, Service, Ingress, HPA. Значения по умолчанию: реплики 2, образ nginx:latest, порт 80.
Пример результата: AI сгенерирует структуру чарта с шаблонами, где значения подставляются из values.yaml. Это упрощает развёртывание в разных окружениях.
10. Написание Ansible плейбука для настройки сервера
Задача: Автоматизировать установку Docker и Kubernetes на серверы.
Промт:
Напиши Ansible плейбук для установки Docker и kubeadm на Ubuntu 22.04. Включи шаги: обновление пакетов, установка зависимостей, добавление репозиториев, установка docker-ce, kubelet, kubeadm, kubectl, отключение swap, инициализация кластера.
Пример результата: AI создаст YAML с tasks, handlers и переменными. Например:
- name: Install Docker
apt:
name: docker-ce
state: present
11. Создание Terraform для EKS
Задача: Развернуть управляемый Kubernetes в AWS.
Промт:
Напиши Terraform конфигурацию для создания EKS кластера с группой узлов. Используй официальный модуль terraform-aws-modules/eks/aws. Укажи версию Kubernetes 1.28, тип инстансов t3.medium, количество узлов 3.
Пример результата: AI сгенерирует модуль с необходимыми параметрами, включая VPC, IAM роли и addons.
12. Генерация политик безопасности для Kubernetes
Задача: Ограничить права подов.
Промт:
Создай NetworkPolicy, запрещающую весь входящий трафик к подам с меткой app=backend, кроме трафика от подов с меткой app=frontend на порт 8080. Также создай PodSecurityPolicy (или эквивалент в новых версиях), запрещающую запуск привилегированных контейнеров.
Пример результата:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: backend-policy
spec:
podSelector:
matchLabels:
app: backend
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- protocol: TCP
port: 8080
Пояснение: NetworkPolicy требует CNI-плагина с поддержкой (Calico, Cilium). PodSecurityPolicy устарел в Kubernetes 1.21, вместо него используются Pod Security Admission.
Как использовать эти промты эффективно
- Уточняйте контекст: Чем больше деталей вы дадите (версии, окружение, ограничения), тем точнее будет результат.
- Итеративно улучшайте: Не стесняйтесь просить AI переделать или оптимизировать сгенерированный код.
- Проверяйте: Всегда тестируйте полученные конфигурации в безопасной среде перед применением в продакшене.
- Изучайте: AI — это помощник, а не замена пониманию технологий. Используйте его ответы как отправную точку для обучения.
Эти 12 промтов покрывают основные задачи DevOps и помогут вам автоматизировать рутину. Попробуйте их в своём следующем проекте — и вы удивитесь, насколько быстрее станет ваш рабочий процесс. А если у вас есть свои любимые промты, делитесь в комментариях!
Комментарии