Kubernetes и Docker под управлением ChatGPT: 15 промтов, которые спасут ваш прод

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 — это помощник, а не замена инженеру. Экспериментируйте, адаптируйте промты под свои задачи, и деплой станет предсказуемым.

← Все статьи

Комментарии