Kubernetes и Docker под управлением ChatGPT: 15 промтов, которые спасут ваш прод
Деплой в Kubernetes — это всегда стресс: манифесты, Helm-чарты, отладка CrashLoopBackOff, сетевые политики. Одна опечатка в YAML может уронить продакшен. По данным CNCF, более 70% организаций используют Kubernetes в production, но многие команды до сих пор тратят часы на рутинные задачи. ChatGPT может стать вашим вторым пилотом, если знать, как правильно формулировать запросы. В этой подборке — 15 проверенных промтов для Docker и Kubernetes, которые я собрал из реальных кейсов DevOps-инженеров. Каждый промт содержит задачу, готовый текст для ChatGPT и пример результата. Вы сможете сразу применить их в работе.
Базовые промты: автоматизация рутины
1. Генерация Dockerfile для Python-приложения
Задача: Быстро создать оптимальный Dockerfile для Flask-приложения с учётом кеширования слоёв.
Промт:
Ты — опытный DevOps-инженер. Напиши Dockerfile для Python 3.11 Flask-приложения. Требования:
- Использовать многоступенчатую сборку (multi-stage build).
- Установить зависимости из requirements.txt, кешируя слой.
- Запускать от непривилегированного пользователя.
- Оптимизировать размер образа (использовать slim-базу).
- Добавить HEALTHCHECK.
Верни только Dockerfile с комментариями.
Пример результата:
# build stage
FROM python:3.11-slim as builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
# final stage
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY . .
ENV PATH=/root/.local/bin:$PATH
RUN useradd -m appuser && chown -R appuser /app
USER appuser
HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost:5000/health || exit 1
CMD ["python", "app.py"]
2. Проверка YAML-манифеста на ошибки
Задача: Найти синтаксические и логические ошибки в манифесте Deployment.
Промт:
Проверь YAML-манифест Kubernetes на ошибки. Укажи на несоответствия схеме, опечатки в полях, проблемы с безопасностью. Вот манифест:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: nginx:latest
ports:
- containerPort: 80
Пример результата:
ChatGPT укажет: image: nginx:latest — плохая практика, лучше фиксированная версия; отсутствуют resources.requests и limits; нет livenessProbe и readinessProbe; селектор совпадает с шаблоном, но можно добавить аннотации. Предложит исправленный вариант.
3. Объяснение ошибки CrashLoopBackOff
Задача: Понять причину падения пода и получить план действий.
Промт:
Под в Kubernetes находится в состоянии CrashLoopBackOff. Вот вывод `kubectl describe pod my-pod-123`:
[вставить вывод]
Объясни возможные причины и дай пошаговый план диагностики.
Пример результата:
ChatGPT анализирует события (Events), указывает на ошибку Back-off restarting failed container, предполагает, что приложение падает из-за отсутствия переменной окружения, и советует проверить логи командой kubectl logs my-pod-123 --previous.
Продвинутые промты: CI/CD и безопасность
4. Создание Helm-чарта для микросервиса
Задача: Сгенерировать структуру Helm-чарта с параметризацией.
Промт:
Создай Helm-чарт для микросервиса на Go. Включи Deployment, Service, Ingress, ConfigMap. Параметризуй: replicas, image.tag, resources, ingress.host. Напиши values.yaml с дефолтными значениями и README с инструкцией по установке.
Пример результата:
ChatGPT выдаст файлы Chart.yaml, values.yaml, шаблоны в templates/ и README. Например, values.yaml будет содержать:
replicaCount: 2
image:
repository: myapp
tag: latest
resources:
limits:
cpu: 100m
memory: 128Mi
5. Настройка CI/CD пайплайна для GitLab CI
Задача: Автоматизировать сборку Docker-образа и деплой в Kubernetes.
Промт:
Напиши .gitlab-ci.yml для сборки Docker-образа и деплоя в Kubernetes. Используй kaniko для сборки без Docker-in-Docker. Этапы: build, test, deploy. Деплой только для ветки main. Предоставь безопасное хранение секретов.
Пример результата:
ChatGPT предложит пайплайн с использованием image: gcr.io/kaniko-project/executor:debug, кешированием слоёв и деплоем через kubectl apply. Также добавит переменные CI/CD для доступа к кластеру.
6. Аудит безопасности Kubernetes-манифеста
Задача: Выявить уязвимости в манифесте (например, привилегированные контейнеры).
Промт:
Проанализируй манифест Pod на предмет безопасности. Проверь: запуск от root, отсутствие securityContext, монтирование docker.sock, capabilities. Дай рекомендации по устранению.
Пример результата:
ChatGPT укажет, что контейнер запускается от root, предложит добавить securityContext: { runAsNonRoot: true, runAsUser: 1000 }, отключить allowPrivilegeEscalation и удалить лишние capabilities.
Экспертные промты: сложные сценарии
7. Отладка сети в Kubernetes
Задача: Диагностировать, почему сервис недоступен из другого пода.
Промт:
Сервис в Kubernetes не доступен по DNS-имени из другого пода. Опиши пошаговый план диагностики: проверка CoreDNS, сетевых политик, endpoints. Дай команды для выполнения.
Пример результата:
ChatGPT предложит: kubectl run test --image=busybox --rm -it -- nslookup my-service, kubectl get endpoints my-service, kubectl describe networkpolicy. Объяснит, как проверить, что поды селектятся сервисом.
8. Оптимизация ресурсов с помощью Vertical Pod Autoscaler
Задача: Настроить VPA для автоматического подбора requests/limits.
Промт:
Напиши манифест VerticalPodAutoscaler для Deployment my-app. Режим: Auto. Обнови deployment, чтобы использовать рекомендации. Объясни, как VPA взаимодействует с HPA.
Пример результата:
ChatGPT создаст VPA-объект с updatePolicy: { updateMode: Auto } и напомнит, что VPA и HPA нельзя использовать одновременно для одного и того же ресурса (CPU/memory), если HPA настроен на те же метрики.
9. Миграция с Docker Compose в Kubernetes
Задача: Преобразовать docker-compose.yml в манифесты Kubernetes.
Промт:
Преобразуй docker-compose.yml (приложение + PostgreSQL + Redis) в манифесты Kubernetes: Deployment, Service, PVC, ConfigMap, Secret. Учти порядок запуска и зависимости.
Пример результата:
ChatGPT сгенерирует отдельные YAML-файлы, используя initContainers для ожидания базы данных, и предложит использовать StatefulSet для PostgreSQL.
10. Настройка мониторинга с Prometheus и Grafana
Задача: Добавить экспорт метрик приложения в Prometheus.
Промт:
Как настроить сбор метрик из Go-приложения в Prometheus в Kubernetes? Напиши пример кода с использованием prometheus/client_golang, манифест ServiceMonitor и дашборд Grafana.
Пример результата:
ChatGPT предоставит код с /metrics эндпоинтом, ServiceMonitor для Prometheus Operator и JSON для дашборда Grafana.
11. Автоматизация отката при неудачном деплое
Задача: Настроить автоматический откат в Argo Rollouts при провале проверки.
Промт:
Опиши, как настроить canary-деплой с Argo Rollouts и автоматическим откатом при ошибках. Напиши манифест Rollout с шагами: 20%, пауза, 50%, пауза, 100%. Добавь анализ метрик Prometheus.
Пример результата:
ChatGPT создаст Rollout с strategy: canary и шагами, а также AnalysisTemplate, который проверяет успешность запросов и инициирует откат при превышении порога ошибок.
12. Генерация NetworkPolicy для ограничения трафика
Задача: Разрешить трафик только между определёнными сервисами.
Промт:
Напиши NetworkPolicy, которая разрешает входящий трафик только от подов с меткой app=frontend к подам с меткой app=backend на порт 8080. Запретить весь остальной трафик.
Пример результата:
ChatGPT создаст политику с podSelector: matchLabels: app: backend и ingress.from: podSelector: matchLabels: app: frontend и ports: 8080.
13. Управление секретами с Sealed Secrets
Задача: Безопасно хранить пароли в Git.
Промт:
Как использовать Sealed Secrets для шифрования секретов в Kubernetes? Напиши пример: создание Secret, шифрование в SealedSecret, применение в кластере. Учти, что приватный ключ хранится в кластере.
Пример результата:
ChatGPT покажет команды kubeseal --format yaml < secret.yaml > sealed-secret.yaml и объяснит, что SealedSecret можно коммитить в репозиторий.
14. Отладка производительности пода
Задача: Найти причину высокой задержки в приложении.
Промт:
Под работает медленно. Предложи план диагностики: проверка CPU throttling, OOM, дискового I/O. Какие команды использовать в Kubernetes?
Пример результата:
ChatGPT посоветует kubectl top pod, kubectl describe pod (искать Throttling), проверить limits, использовать kubectl exec для запуска top или iostat.
15. Создание кастомного ресурса (CRD) и оператора
Задача: Автоматизировать управление приложением через CRD.
Промт:
Напиши пример CRD для приложения MyApp с полями replicas, image, port. Сгенерируй контроллер на Go с использованием Kubebuilder, который создаёт Deployment и Service на основе CRD.
Пример результата:
ChatGPT предоставит YAML для CRD и скелет контроллера с Reconcile-функцией, использующей клиент controller-runtime.
Как внедрять промты безопасно
Всегда проверяйте сгенерированные манифесты в тестовом кластере (minikube, kind). Не давайте ChatGPT доступ к продакшену. Используйте инструменты вроде kubeconform для валидации YAML. Помните: AI — это помощник, а не замена инженеру. Экспериментируйте, адаптируйте промты под свои задачи, и деплой станет предсказуемым.
Комментарии